AutoGen完整教程和加载本地LLM示例

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Autogen是一个卓越的人工智能系统,它可以创建多个人工智能代理,这些代理能够协作完成任务,包括自动生成代码,并有效地执行任务。

Autogen是一个卓越的人工智能系统,它可以创建多个人工智能代理,这些代理能够协作完成任务,包括自动生成代码,并有效地执行任务。

在本文中,我们将深入探讨Autogen,并介绍如何让AutoGen使用本地的LLM

AutoGen

Autogen能够设置多个人工智能代理,它们协同工作以实现特定目标。以下截图来自微软官方博客

使用conda创建环境:

 conda create -n pyautogen python=3.10  
 conda activate pyautogen

AutoGen需要Python版本>= 3.8。它可以从pip安装:

 pip install pyautogen

编辑Python脚本(app.py),导入Autogen并设置配置。此配置包括定义想要使用的模型(例如,GPT 3.5 turbo)并提供API密钥。

目前AutoGen只能使用OpenAI的API,所以我们在后面介绍如何使用本地的LLM。

可以定义多个代理来处理不同的角色或任务,比如下面就创建了2个角色

 autogen.AssistantAgent(assistantname="CTO",Illm_config=llm_config)
 autogen.AssistantAgent(assistantname="CEO", Illm_config=llm_config)

定义任务和说明:希望代理执行的特定任务。这可以是任何指令,从编码到数据分析。

这样代理将根据指示开始执行任务。Assistant代理使用结果或代码片段进行响应。

使用本地的LLM

下面我们将演示如何让autogen使用本地的LLM。这里将使用FastChat作为LLM的本地媒介。

FastChat为其支持的模型提供了与OpenAI兼容的api,所以可以使用FastChat作为OpenAI api的本地替代。但是它的代码需要稍加修改才能正常工作。

 git clone https://github.com/lm-sys/FastChat.git
 cd FastChat

ChatGLM-6B是基于通用语言模型(General language model, GLM)框架的开放式双语语言模型,具有62亿个参数。ChatGLM2-6B是其第二代产品。

 git clone https://huggingface.co/THUDM/chatglm2-6b

都下载完成后就可以使用了,先启动控制器:

 python -m fastchat.serve.controller

然后就是启动模型工作线程。

 python -m fastchat.serve.model_worker --model-path chatglm2-6b

最后是API:

 python -m fastchat.serve.openai_api_server --host localhost --port8000

注意:如果遇到这样的错误

 /root/anaconda3/envs/fastchat/lib/python3.9/runpy.py:197in_run_module_as_main│
 ││
 │194│main_globals=sys.modules["main"].dict│
 │195│ifalter_argv: │
 │196││sys.argv[0] =mod_spec.origin│
 │❱197│return_run_code(code, main_globals, None, │
 │198│││││"main", mod_spec) │
 │199│
 │200defrun_module(mod_name, init_globals=None, │

注释掉fastchat/protocol/ api_protocol.py和fastchat/protocol/openai_api_protocol.py中包含finish_reason的所有行将解决问题。修改后的代码如下:

 classCompletionResponseChoice(BaseModel):
     index: int
     text: str
     logprobs: Optional[int] =None
     # finish_reason: Optional[Literal["stop", "length"]]

 classCompletionResponseStreamChoice(BaseModel):
     index: int
     text: str
     logprobs: Optional[float] =None
     # finish_reason: Optional[Literal["stop", "length"]] = None

使用下面的配置,autogen.oai.Completion和autogen.oai.ChatCompletion可以直接访问模型。

 fromautogenimportoai

 # create a text completion request
 response=oai.Completion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL", # just a placeholder
         }
     ],
     prompt="Hi",
 )
 print(response)

 # create a chat completion request
 response=oai.ChatCompletion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         }
     ],
     messages=[{"role": "user", "content": "Hi"}]
 )
 print(response)

在本地也可以使用多个模型:

 python -m fastchat.serve.multi_model_worker \
     --model-path lmsys/vicuna-7b-v1.3 \
     --model-names vicuna-7b-v1.3 \
     --model-path chatglm2-6b \
     --model-names chatglm2-6b

那么推理的代码如下(注意,你要有多卡或者显存足够):

 fromautogenimportoai

 # create a chat completion request
 response=oai.ChatCompletion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         },
         {
             "model": "vicuna-7b-v1.3",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         }
     ],
     messages=[{"role": "user", "content": "Hi"}]
 )
 print(response)

总结

Autogen代理可以根据需要执行代码、生成报告和自动执行任务。他们可以协同高效地工作,节省时间和精力,我们还介绍了如何在本地使用,这样可以在本地进行测试,而不需要OpenAI的API。

微软的Autogen官网

https://avoid.overfit.cn/post/1e0f8d1ba2724b378d83cb4db3c4f9d3

目录
相关文章
|
6月前
|
数据可视化 物联网 Swift
谷歌发布开源LLM Gemma,魔搭社区评测+最佳实践教程来啦!
Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。
|
6月前
|
人工智能 机器人 测试技术
使用LM Studio在本地运行LLM完整教程
GPT-4被普遍认为是最好的生成式AI聊天机器人,但开源模型一直在变得越来越好,并且通过微调在某些特定领域是可以超过GPT4的。
2650 1
|
13天前
|
网络安全 开发工具 数据安全/隐私保护
|
4月前
|
人工智能 JSON 自然语言处理
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
【7月更文挑战第7天】国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
211 10
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(一)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
395 0
|
6月前
|
机器学习/深度学习 JSON 自然语言处理
LLM2Vec介绍和将Llama 3转换为嵌入模型代码示例
通过LLM2Vec,我们可以使用LLM作为文本嵌入模型。但是简单地从llm中提取的嵌入模型往往表现不如常规嵌入模型。
203 5
|
6月前
开箱黑盒LLM!谷歌大一统框架Patchscopes实战教程来了
【5月更文挑战第7天】谷歌推出Patchscopes框架,提升大型语言模型(LLM)的可解释性,通过分解LLM为可解释的Patch模型进行调试。本文提供实战教程,介绍如何安装Patchscopes库、加载预训练模型并查看模型解释性报告。虽然优势在于增强理解与问题定位,但Patchscopes适用模型有限,报告理解需专业知识,且计算成本高。[论文链接](https://arxiv.org/pdf/2401.06102.pdf)
63 1
|
6月前
|
API 异构计算 Docker
5种搭建LLM服务的方法和代码示例
本文介绍了5种搭建开源大型语言模型服务的方法,包括使用Anaconda+CPU、Anaconda+GPU、Docker+GPU、Modal和AnyScale。CPU方法适合本地低门槛测试,但速度较慢;GPU方法显著提升速度,Docker简化环境配置,适合大规模部署;Modal提供按需付费的GPU服务,适合试验和部署;而AnyScale则以低门槛和低成本访问开源模型。每种方法都有其优缺点,选择取决于具体需求和资源。
259 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(二)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
296 0
|
14天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
111 2