How to Call LLM Model

如何调用一个大模型 OpenAI调用方式 调用大模型一般通过OpenAI API的协议进行调用,更多的还是直接使用SDK,可以很方便的调用。官方的SDK有JS/Python/.net/java/go等。另外,微软也提供了几种语言的SDK兼容OpenAI API和微软云自己的OpenAI服务。此外,还有很多第三方的SDK。 OpenAI API的官方SDK调用方式为: pip install openai from openai import OpenAI client = OpenAI() response = client.responses.create( model="gpt-4.1", input="Write a one-sentence bedtime story about a unicorn." ) print(response.output_text) 流式的访问: from openai import OpenAI client = OpenAI() stream = client.responses.create( model="gpt-4.1", input=[ { "role": "user", "content": "Say 'double bubble bath' ten times fast.", }, ], stream=True, ) for event in stream: print(event) 文件上传: # 1、还可以先上传一个pdf文件,然后使用该文件的引用调用下一个函数。 # 2、或者直接将pdf以base64等方式直接一次调用进行传递。 异步调用:...

June 1, 2025

How to Use Ollama

如何使用Ollama Python访问 conda activate llm_test pip install ollama ollama_test.py import ollama response = ollama.chat(model="llama3.1", messages=[ {"role": "user", "content": "什么是数据治理,和数据管理有什么区别?"}, ]) print(response) $ python ollama_test.py model='llama3.1' created_at='2025-05-21T07:43:26.260998065Z' done=True done_reason='stop' total_duration=3600133750 load_duration=1005090191 prompt_eval_count=23 prompt_eval_duration=104226959 eval_count=96 eval_duration=2489433343 message=Message(role='assistant', content='答:数据治理是一种指挥、协调及控制数据的方式,使得数据能够被有效地生产、使用。它包含了数据质量、安全性、可用性的保证,以及对数据的访问、运算和存储等方面的管理。\n\n不同于传统的数据管理,数据治理更加注重的是数据的全生命周期管理及控制,包括数据的创建、使用、更新、移除等过程。', images=None, tool_calls=None) 容器运行且能访问GPU 安装Nvidia-Container-Tookit curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit // 配置 sudo nvidia-ctk runtime configure --runtime=docker $ cat /etc/docker/daemon....

May 21, 2025

Audio Editor

音频编辑器 Audacity vs Ardour reddit上找了个评价,说ardour功能很强大,但是简单应用audacity更合适。并且ardour只在linux上免费。 于是就装了个audacity,AppImage的包。用它剪切了一段音频,导出声音文件,用起来方便。

May 18, 2025

Using HuggingFace model

使用Hugging Face的模型进行语音识别 conda create -n transformers_env conda activate transformers_env conda install transformers 查看下Pytorch的安装需求,支持Cuda版本12.2以上: nvidia-smi NVIDIA-SMI 535.216.01 Driver Version: 535.216.01 CUDA Version: 12.2 ![[Pasted_image_20250518231307.png]] 上次升级驱动版本,导致无法登陆,这次换xfce后,windows manager已经换了,下次升级下驱动和cuda tools再试试。本次就直接使用Cuda 11.8。 安装Pytorch 2.7 // conda环境下: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 准备HuggingFace的脚本: // cat run.py from transformers import pipeline transcriber = pipeline( "automatic-speech-recognition", model="BELLE-2/Belle-whisper-large-v3-zh-punct", return_timestamps=True ) transcriber.model.config.forced_decoder_ids = ( transcriber.tokenizer.get_decoder_prompt_ids( language="zh", task="transcribe" ) ) transcription = transcriber("/home/xxxxxx/workdir/git/work/whisper.cpp/models/sounds/20250513_175944.wav") print(transcription["text"]) 这个版本BELLE-2/Belle-whisper-large-v3-zh-punct大概6.17G。 python run.py // torch.OutOfMemoryError: CUDA out of memory....

May 18, 2025

Install Whisper Cpp

安装whisper.cpp去转换语音到文字 1. 条件 Debian 12 GPU 4060 2. 安装 安装编译工具build_essential sudo apt install build-essential 克隆whisper.cpp仓库,并编译 git clone https://github.com/ggerganov/whisper.cpp.git cd whisper.cpp make -j 3. 使用 下载模型 cd model ./download-ggml-model.sh large-v3-turbo ./download-ggml-model.sh large-v3 ll -rt 1624555275 May 15 01:00 ggml-large-v3-turbo.bin 3095033483 May 17 19:40 ggml-large-v3.bin 格式是m4a,发现不直接支持,安装ffmpeg进行转换: ffmpeg -i ./models/sounds/20250509_095502.m4a -acodec pcm_s16le -ac 1 -ar 16000 ./models/sounds/20250509_095502.wav ffmpeg -i ./models/sounds/20250513_175944.m4a ./models/sounds/20250513_175944.wav 直接进行转换,行是行,但是有点慢,提示CPU在工作 $ ./build/bin/whisper-cli --device cuda --language Chinese -nt -otxt -m /home/xxxxx/workdir/git/work/whisper.cpp/models/ggml-large-v3-turbo.bin -f ....

May 15, 2025

Learning LLamaIndex

学习LLamaIndex第一个程序 一、先安装 pip install llama-index pip install llama-index-llms-ollama pip install llama-index-embeddings-ollama 二、开发环境 开一个写代码的工具: jupyter notebook 也可以使用Pycharm来使用conda环境进行代码的编写: 设置/项目/python 解释器,添加解释器的时候选择conda环境,并选择一个已经存在的环境或者新建环境。 也可以使用VSCode: # https://code.visualstudio.com/Download sudo apt install ./xxxx.deb 三、基本概念 LLamaIndex核心概念: 数据加载:DataLoaders 数据分割:NodeParsers 向量索引:VectorIndex 集成引擎:QueryEngine 向量数据库: ChromaDB Mivlus 2.1 ChromaDB 使用十分简单: import chromadb client = chromadb.Client() collection = client.create_collection("docs") collection.add(ids=["id1"], documents=["This is a document"]) results = collection.query(query_texts=["Find similar docs"], n_results=1) 2.2 Embedding Ollama ollama serve // 使用Ollama原生的REST API curl http://localhost:11434/api/embed -d '{ "model": "bge-m3", "input": "Does Ollama support embedding models?...

May 7, 2025

Whats Agent

Agent Agent接收一个请求后,通过反复调用大模型以及动作接口,将输入请求的目的进行实现。调用大模型的目的是让大模型告诉我们,针对当前的背景和目标或子目标,我们应该做什么事情或者执行什么具体动作,或者什么也做不了。具体的动作驱动外部的外部的任务,并将结果反馈回来作为后继执行的背景(上下文)。 ![[whats-agent 2025-05-04 09.19.51.excalidraw]] ![[Pasted_image_20250504102833.png]] 利用模型可以给出解决问题的中间过程,逐步的达到目标。这非常类似人的思考过程。这也是Chain of Thought,思考链的名字由来。也就产生了如何优化模型的Prompt,让它的输出更适合解决问题的一门学问,这就是CoT优化。 Agent的执行过程像是一个流程,但是这个流程和AI工作流不同。首先目的不同,其次这个流程是动态的,根据要解决的问题不同,它实际执行出来的流程实例也不同。 大模型的使用本身就可以是流程化的。类似人类的审批流程,很多工作流系统能画出审批的流程,而某种常用的流程就类似现在的RAG。Agent类似灵活工作流,上个审批人可以决定下一个审批人是谁,这样整个审批流程就是一个动态的过程,具体的工作流程是无法提前画出来的。 ![[whats-agent 2025-05-04 10.09.34.excalidraw]] ![[Pasted_image_20250504103126.png]] 受限当前LLM的能力,全自动运行的Agent的体验/性能/可靠性还需要进一步发展。同环境下小范围的协作Agent/RAG反而是当下受信任和有价值的。它平衡了信任/技术成熟度/体验等方面。 Agent的进化考虑这些方面:更多的输入和输出能力,支持输入的更准确查询和解析;对输入的安全考虑;更合适的模型;减低延时和提升体验。

May 4, 2025

Introduction to RAG

Introduction to RAG RAG(Retrieval-Augmented Generation),意思是将外部的知识引入到大模型生成过程中,使得模型能生成更加准确和详实的回复。 RAG是一种大模型的应用架构模式,遵循这种模式的系统通常包含知识库,并按照如下的流程进行工作: 索引外部的知识,将知识索引后在模型生成的时候进行检索和使用。这里的知识库是个通用的概念,只有是外部的知识,存储后可以被检索和应用都算遵循这种模式。现在业界常用的是向量数据库,通过将外部知识分块并向量化存储入向量数据库。当然其他类型的知识数据库也都有合适的适用场景,例如图数据库等。 检索外部的知识,从外部的知识库中将向关联的知识检索出来,向量库可以通过语义相似度进行检索,所以比较常用。也可以结合其他类型的数据库形式进行检索。 增强上下文知识,将检索后的数据作为上下文的一部分或者提示词的一部分,结合问题,形成模板提供给大语言模型。 生产结果数据,并标注外部知识的信息来源等,以方便用户进行可信度的识别。 RAG这种将外部知识引入大模型应用的机制,类似开卷考试,大模型可以根据相关的外部知识学习,进行结果的生成,应用到了大模型本身的通识知识,推理学习能力,并查资料补齐专业知识后进行回答。 大模型容易出现幻觉、缺乏专业知识、回答缺乏可解释性问题,而RAG技术通过外挂专业的知识库、在生成答案时结合知识库回答问题、同时在最终生成结果中展示知识库信息来源,一定程度上有效的解决了这3大问题。 RAG的价值和应用场景 RAG可以减少模型在不了解的领域产生幻觉,利用通用知识胡说八道。并可以提高模型的知识边界和范围,避免每次都进行训练,增加模型的适应和泛化能力。 RAG主要可以构建: 知识问答,通过构建企业知识库,提供问答应用系统。 业务支撑,RAG作为一个组件,构建其他业务系统。 智能客服,集成到企业客服中,快速准确的回答企业业务问题,提高服务效率和客户满意度。 RAG的评估方法 评估指标: 检索质量:召回率和精确度 生成质量:答案忠诚度,答案精确度 系统性能:端到端耗时,资源消耗 RAG的优化方法 检索优化:混合检索,调整Top-K 模型优化:模型增训微调 提示词优化:提示词工程 RAG参考架构 ![[Pasted_image_20250426230922.png]] ![[building-RAG-from-scratch 2025-04-26 22.30.57.excalidraw]] ![[Pasted_image_20250501165323.png]] RAG参考架构实现 参见:《学习LLamaIndex第一个程序》帖子

April 26, 2025

Install New Debian Os System

给笔记本安装Debian系统 之前用的Fedora系统,最近老是死机,估计是和英伟达显卡驱动相关性大,最近两周基本上半小时甚至15分钟就会死机一次,所以就换回Debian系统了。 准备 先将数据备份到一个USB硬盘中。将home中的文件都备份出去。 小文件目录的进行一下压缩,避免copy太慢。 git的几个目录下应该是和docker服务相关,压缩后还删除不了,暂时没管。copy回来之前在U盘中删除了。 blog拷贝的时候有些文件和NTFS不兼容,字符写不进去,就直接压缩成一个文件了。 备份一些隐藏文件(.ssh/、.profile、.bashrc等) 备份Tab和书签(由于删除了home下的一些隐含文件,如类似.local/,导致Tab没了,书签也忘记备份了:() 备份完文件,将原来的启动项删除。 efibootmgr // 查看到Fedora的两个启动项 // 删除 sudo efibootmgr -b 0003 -B sudo efibootmgr -b 0005 -B sudo -s cd /boot/efi rm -fr EFI/fedora/ lsblk // 看出两块盘,装到第二块盘 做启动盘并安装 安装的是Debian Stable,下载安装包,做了个启动盘。然后进行安装。 一步步安装: 安装选择英文语言 磁盘需要创建swap分区,剩余空间max,选择efi分区 选择国内源(中科大) 选择root密码为空 选择KdePlasma 启动不了,而startx可以启动 sudo software-properties-qt,选上Non-Free的源 最后wayland启动不了,选择x11 安装英伟达驱动 sudo apt install nvidia-driver 刚安装发现KDEPlasma桌面版本,和Wayland兼容性不好,不知道是不是英伟达的驱动问题,已经换了英伟达的驱动也是这样。同时关机也发生了几次很慢的情况。后面如果还是这样,可以换换其他的桌面看看是不是它的问题。 init 3 tasksel //字符模式,卸载并安装类似xfce等其他桌面 ![[Pasted_image_20250413112955.png]] 临时处理下关机慢的问题,系统关机时候提示了两个错误: ... ... ACPI Error: No handler for Region [RTCM] ... ....

April 12, 2025

Cucumber Garden

Cucumber Garden 想起来多年前曾经种过一块地,面积倒是不大,大概5~6米见方的样子。春天翻地,施肥,兴致勃勃地种了很多不同的蔬菜,从左到右,从里到外有黄瓜,韭菜,空心菜,长生菜,圆生菜,甜菜,小西红柿,大西红柿,巨大西红柿等等好多种。 今天讲讲黄瓜,黄瓜也种了两种类型的吧,有一种是菜黄瓜,大概是这个样子的: 我记得实际结的果比上图这个还要短粗一些,皮也没这么绿,有一点点泛白。但是吃起来很脆的样子。 随着黄瓜苗渐渐长高,我就找来木棍搭了架子,人字形的一长条。每天看着它爬呀爬,等待挂果吃黄瓜。 夏天到了,花也开了不少,花落了后坐出一个个小黄瓜纽。这个时候特别需要水分,我就每天下午给他们浇水。很快黄瓜就长大了,有几个看起来已经大到可以吃了。第一次摘下来吃的时候特别开心。 这个时候,黄瓜的叶子上面开始有虫子了,看不到是多大的虫子,不少黄瓜叶子中心开始有洞洞,越来越多,洞洞也越来越大,后面接的黄瓜也长不好了,最后只吃了一茬。 开心的往事,黄瓜园,博客的名字由来。

February 3, 2025