目录
1 背景
1.1 AutoGen介绍
1.2 Ollama介绍
1.3 Litellm介绍
2 部署搭建
2.1 AutoGen + Ollama + Litellm环境搭建
2.2 基于AutoGen构建多智能体对话
2.3 基于AutoGen构建知识库问答系统
1 背景
之前已经基于Llama+LangChain构建了知识库问答系统。但是随着智能体的发展,基于智能体构建知识库问答系统逐渐成为主流。下面就以多智能体框架AutoGen、托管大型语言模型的平台Ollama、模型选择和切换工具Litellm为基础构建一个多智能体的知识库问答系统。同时搭建一个多智能体对话系统。
1.1 AutoGen介绍
Autogen是Microsoft开发的一个用于简化LLM工作流的编排、优化和自动化的框架。它提供了可定制和可交谈的代理,充分利用了大模型(比如GPT-4)的能力,并且可以集成人类智慧和工具,在多个代理之间可以实现自动化聊天。
如上图所示:AutoGen使用多智能体对话实现了复杂的基于LLM的工作流。(左)AutoGen代理可以定制,可以基于LLM、工具、人员,甚至是它们的组合。(右上角)代理可以通过对话解决任务。(右下角)该框架支持许多其他复杂的对话模式。
1.2 Ollama介绍
Ollama是一个开源的大型语言模型服务,提供了类似OpenAI的API接口和聊天界面,可以非常方便地部署最新版本的GPT模型并通过接口使用。支持热加载模型文件,无需重新启动即可切换不同的模型。
Ollama的优势:
- 提供类似OpenAI的简单内容生成接口,极易上手使用
- 类似ChatGPT的的聊天界面,无需开发直接与模型聊天
- 支持热切换模型,灵活多变
1.3 Litellm介绍
LiteLLM是一个管理不同大型语言模型(LLM)API的工具。它可以将输入转化为各个提供商的完成、嵌入和图像生成终端,并提供一致的输出。LiteLLM还支持在多个部署之间进行重试和回退逻辑,例如Azure和OpenAI。它还可以支持流式传输模型响应,并提供日志观测功能。该库提供了一种统一的方式来调用所有 LLM APIs,使用 chatGPT 格式:completion(model, messages)。无论是哪家公司的 API,输出和异常都得到了一致的处理。
2 部署搭建
2.1 AutoGen + Ollama + Litellm环境搭建
- 1. 安装AutoGen
(1)创建一个autogen的虚拟环境
conda create -n pyautogen python=3.10
(2)激活虚拟环境
conda activate pyautogen
(3)安装autogen
pip install pyautogen
(4)安装litellm
pip install litellm
2. 安装ollama
curl -fsSL https://ollama.com/install.sh | sh
3. 使用ollama下载模型(ollama支持的模型查看https://ollama.com/library/)
(1)下载基础模型
如千问模型Qwen1.5 - 4b
ollama run qwen
(2)下载代码垂直类模型
如编码大模型codellama - 7b
ollama run codellama
安装后会自动运行模型,然后按ctrl+d退出。
4. 使用litellm运行模型
(1)运行基础模型qwen
conda activate pyautogen
litellm --model ollama/qwen
litellm --model ollama/mistral
启动后,其url为:http://0.0.0.0:8000,端口可能不同。
(2)运行编码大模型codellama
conda activate pyautogen
litellm --model ollama/codellama
启动后,其url为:http://0.0.0.0:17068,端口可能不同。
2.2 基于AutoGen构建多智能体对话
- 1. 安装autogen stiduo 2
conda activate pyautogen
pip install autogenstudio
2. 启动auto studio
autogenstudio ui --host 0.0.0.0 --port 9081
3. 使用AutoGen Studio创建Agent工作流
(1)在浏览器中打开192.168.1.10:9081
(2)打开Build页面,在左侧点击Models,创新的模型。
<1> 点击右上角的New Model按钮,输入信息创建新的模型:
Model Name:Qwen-4b
API-Key: NULL
Base URL: http://0.0.0.0:8000
<2> 点击Test Model按钮,如果没有问题,会出现Moel tested successfully的信息。
<3> 点击Save按钮。
(3)同理创建Codellama-7b的新模型:
<1> 点击右上角的New Model按钮,输入信息创建新的模型:
Model Name:Codellama-7b
API-Key: NULL
Base URL: http://0.0.0.0:17068
<2> 点击Test Model按钮,如果没有问题,会出现Moel tested successfully的信息。
<3> 点击Save按钮。
4. 创建Agents
(1)在浏览器中打开192.168.1.10:9081
(2)打开Build页面,在左侧点击Agents,创新的用户代理Agent。
<1> 点击右上角的New Agent按钮,输入信息创建新的Agent:
Agent Name: user_proxy
Agent Description: user_proxy
Max Consecutive Auto Reply: 10
Agent Default Auto Reply:
Human Input Mode: NEVER
Model: Qwen-4b
(3)打开Build页面,在左侧点击Agents,创新的代码助理Agent。
<1> 点击右上角的New Agent按钮,输入信息创建新的Agent:
Agent Name: code_assistant
Agent Description: code_assistant
Max Consecutive Auto Reply: 10
Agent Default Auto Reply:
Human Input Mode: NEVER
Model: Codellama-7b
5. 创建工作流
(1)在浏览器中打开192.168.1.10:9081
(2)打开Build页面,在左侧点击Workflows,创新的工作流。
<1> 点击右上角的New Workflow按钮,输入信息创建新的Workflow:
Workflow Name: Weather Agent Workflow
Workflow Description: Weather Agent Workflow
<2> 设置Sender
在最下面的Or replace with an existing agent中选择user_proxy这个Agent。
<3> 设置Receiver
在最下面的Or replace with an existing agent中选择code_assistant这个Agent。
(3)点击OK确认。
6. 启动一个agent任务
在Playground界面中,新建一个session,输入要agent执行的任务。
2.3 基于AutoGen构建知识库问答系统
1. 下载autogen-demos/AutoGen_RAG_Gradio3 at main · thinkall/autogen-demos · GitHub。
2. 安装依赖库
conda activate pyautogen
pip uninstall autogenstudio
pip3 install --no-cache-dir -r requirements.txt
主要autogenstudio用到的pyautogen的版本和此依赖库中的版本有冲突,需要先卸载autogenstudio,再安装依赖库。
2. 修改模型服务端口:
将"api_base" 改为ollama启动的端口,即http://0.0.0.0:8000
3. 修改模型名称:
"model"字段必须存在,这里可以写ollama启动的模型,如"qwen"。如果为空,则出错,默认是gpt-4。
4. 执行下面代码启动知识库系统
python app.py
5. 在浏览器中输入http://192.168.1.10:7860/即可开始上传文件,并进行知识问答。
6. 上传文件到知识库
点击“Click to upload a context file or enter url in the right textbox”上传文件或在右侧框中输入网址。目前支持的上传文件格式有:[txt, json, csv, tsv, md, html, htm, rtf, rst, jsonl, log, xml, yaml, yml, pdf]。
7. 开始对话检索知识库信息
对于qwen模型,其prompt可以设置为:
qwen prompt:
"""请基于```内的内容回答问题。"```{context}```我的问题是:{question}。
"""