参考资源:
AI Agent:有能力主动思考和行动的智能体;智能,决策能力,Agent是使用智能的一种方式。
LLM可以分成训练时和运行时两个时态,运行LLM的时候是无状态的,它不会记录之前对话的内容,所有的状态都包含在内次请求的context里面,本质上来说agent就是给这个运行时无状态的大模型,增加一个有状态的壳,来利用大模型实现更多的功能。只要我们还需要一个状态机来给运行时的大模型赋能,agent就必不可少。
开发Agent的关键环节:信息源的选择、状态机的设计、prompt模板的优化、大模型的推理质量与成本控制、最终的执行层实现(api接口)。
1、Agent:智能体,靠大型语言模型LLM执行;感知:记忆、提示;思考:感知到认知;动作:调用API,问别的智能体。
通过框架利用GPT4的基础能力:key(角色、交互、API调用)。适用场景:
- 有标准化流程的业务;
- 固定的思维逻辑
2、GPTs作为AI Agents(基于GPT4,交互有费用)。GPTs是OpenAI推出的自定义GPT。GPTs是Generative Pre-trained Transformers的缩写,于2023年11月发布。 在首届OpenAI开发者大会上,OpenAI宣布允许用户构建自定义ChatGPT完成特定的个人和专业任务。用户能快速创建自己专用版本的ChatGPT。ChatGPT插件使 AI 能够访问和利用外部数据、连接各种服务并提供智能响应。GPTs扩展了插件的基本概念,以提供显著增强的定制功能。自定义操作(Actions)是GPTs超越其前辈的地方。它们提供更精细的控制以及与第三方服务更丰富的交互。可以用具有高度专业化技能的插件,来满足用户的独特偏好。
- MetaGPT采用了多智能体框架,通过角色专业化、工作流管理和灵活的消息机制,增强了大规模语言模型在多智能体协作上的能力;MetaGPT名字来源于“GPT-based Meta-Programming framework”,也就是说,MetaGPT是一种元编程框架。它利用标准化操作程序(SOP)来增强基于大型语言模型(LLM)的多智能体系统的问题解决能力。
- AutoGen(基于本地大模型,交互免费)应该说是2023年最成功的Multi-Agent的Framework之一,为了减少开发人员跨各个域创建复杂LLM应用程序所需的工作量,AutoGen的一个核心设计原则是精简和使用多智能体对话来整合多智能体工作流。
3、所谓多模态:只能感知文本。图像、音频和视频都需要转换成文本。
Agent(memory/tools/planning):描述的流程越详细,结果越好
4、LM Studio enables you develop and experiment with Large Language Models (LLMs) in your local computer environment, fully offline.
- LLaMA 8B是目前同等尺寸性能最强的,性能接近GPT3.5和Qwen72b Chat
5、LLM有4种常见的使用方法:
- Prompt Engineering
- Retrieval Augmented Generation (RAG 检索增强生成)
- 微调
- 从头开始训练基础模型(FM)
RAG 的成本要比Prompt Engineering略高。这取决于所使用的嵌入模型、向量存储和模型。因为在这里需要为3个不同的组件付费。当希望在更改模型和提示模板方面具有更高的灵活性,并且用例不包含大量域上下文时,可以使用Prompt Engineering。当想要在更改不同组件(数据源,嵌入,FM,矢量引擎)方面具有最高程度的灵活性时,使用RAG,这样简单并且可以保持输出的高质量(前提是你要有数据)。
6、绝大部分大模型都是通用型大模型,中小型企业一般都有自己的知识库,而这些知识库的数据没有在通用型的大模型中被用到或者说训练到。如果中小型企业要适合自己本身业务需要的大模型,当然理想的方法是重新训练数据,而这些数据有其自身业务场景的数据。 现实是自身训练无论是人力成本,数据成本,计算成本都是不可行的。那么一种基于通用大模型,并外挂本地知识库的人工智能方法RAG(Retrieval Augmented Generation)就运用而生。通过这种方法,中小型企业可以用很少的人力,物力,在不改动通用大模型的情况下,就能结合自身需要,为自己的业务场景服务。RAG流程或框架图
- 第一步入库,就是把原始分本分割(Token),然后每个分割后的短文本,进行分词(chunk),然后向量映射(embedding),最后入库,一般是向量数据库。
- 入库成功以后,就是查询,然后就是augmented,augmented在这里是指将查询和向量数据库查出的结果合成作为一个新的提示,然后查询LLM(大语言模型)——用户先从向量数据库,就是本地知识库查询,然后将查询的结果作为大模型的输入,进行查询。
7、MMLU(Massive Multitask Language Understanding,大规模多任务语言理解)是一个由Hendrycks等人在《Measuring Massive Multitask Language Understanding》中提出的新基准,旨在通过仅在零样本和少样本设置下评估模型来衡量预训练期间获得的知识。
- “MMLU-ZS"代表"Massive Multitask Language Understanding - Zero-Shot”(零样本)
- “MMLU-FS"代表"Massive Multitask Language Understanding - Few-Shot”(少样本)
8、各种模型背景知识:
- 微软发布phi-3:可手机运行、性能媲美ChatGPT,它是微软前两个小型语言模型 2023 年 6 月发布的 Phi-1和 12 月发布的 Phi-2 的后续产品。Phi-3-mini 是一个 3.8B 参数的大语言模型,训练数据量为 3.3T Tokens,Phi-3-mini有两种上下文长度变体——4K和128K tokens。默认上下文长度为 4K,不过微软团队通过 LongRope 将其上下文长度扩展到128K,称为 phi-3-mini-128K。
- 在 GPT-4 Turbo 推出之前,GPT-4版本只能使用文本输入。GPT-4 Turbo可以将图像输入 GPT-4 Turbo,并配合文字提示进行处理。
9、结合大模型基于RAG检索增强来实现知识库的检索和生存:链 Chains 将语言模型和提示模板结合到一个接口中,该接口接受用户的输入并从语言模型中输出答案,类似于一个复合函数,其中内部函数是提示模板,外部函数是语言模型。可以构建顺序链,其中一个链返回一个输出,然后第二个链将第一个链的输出作为输入。
过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k
个 -> 匹配出的文本作为上下文和问题一起添加到 prompt
中 -> 提交给 LLM
生成回答。
10、Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。Ollama提供了一个简单的API,还提供了类似ChatGPT的聊天界面,用户无需开发即可直接与模型进行聊天交互。支持 Windows (preview): OllamaSetup.exe
Welcome to Ollama!
Run your first model:
ollama run llama2 // ollama run gemma:7b(by Google DeepMind) llama3(by Meta)
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
>>> /show info
Model details:
Family llama
Parameter Size 7B
Quantization Level Q4_0
- 配置模型保存位置,根据自己的需要配置一下环境变量:OLLAMA_HOST : ollama的监听端口,监听在本机所有地址;OLLAMA_MODELS : 指定ollama模型的存放路径。
- 打开浏览器测试输入:ip地址:11434,出现ollama is running,表示配置成功。
11、AnythingLLM( AnythingLLMDesktop.exe)使用本地Ollama作为LLM Provider: LLM Provider--->Ollama Base URL:http://127.0.0.1:11434
- Ollama在这里选择所需的Models:https://www.ollama.com/library
- AnythingLLM如果使用AnythingLLM作为LLM Provider,chat时,CPU/内存资源占用率很高,反应很慢。
Local Embedding Model Providers:内置的嵌入程序 built-in embedder不会阻止你尝试嵌入5000pg的PDF,但它会使你的实例崩溃。(502错误)。您向实例上传了过大的文档(字数,而不是文件大小),并且在您的层上可能会使CPU不堪重负,导致进程被终止以防止实例冻结。。基于层的最大文件大小建议:
- 入门级:每文件10k字
- 专业级:每个文件50k字