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

news2025/7/18 20:00:26

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

山西电力市场日前价格预测【2023-11-02】

日前价格预测 预测说明: 如上图所示,预测明日(2023-11-02)山西电力市场全天平均日前电价为151.67元/MWh。其中,最高日前电价为280.23元/MWh,预计出现在22:15。最低日前电价为0.00元/MWh,预计出…

编程助手DevChat:让开发更轻松

#AI编程助手哪家好?DevChat“真”好用 # 目录 前言一、安装Vscode1、下载链接2、安装 二、注册DevChat1、打开注册页2、验证成功完成邮箱绑定3、绑定微信可获得8元 三、安装插件四、配置Access Key1、获取Access Key2、设置Access Key①、点击左下角管理&#xff08…

(五)库存超卖案例实战——使用zookeeper分布式锁解决“超卖”问题

前言 本节内容使用zookeeper实现分布式锁,完成并发访问“超卖”问题的解决。相对于redis分布式锁,zookeeper能够保证足够的安全性。关于zookeeper的安装内容这里不做介绍,开始本节内容之前先自行安装好zookeeper中间键服务。这里我们利用创建…

Redis与Mysql的数据一致性(双写一致性)

双写一致性:当修改了数据库的数据也要同时的更新缓存的数据,使缓存和数据库的数据要保持一致。 一般是在写数据的时候添加延迟双删的策略 先删缓存 再修改数据 延迟一段时间后再次删除缓存 这种方式其实不是很靠谱 一致性要求高 共享锁:读…

Leetcode刷题---删除有序数组中的重复项 II(双指针问题)

题目描述: 题目中已经给出该数组是一个升序的数组。要求数组中最多出现两个相同的元素,而且不能使用额外的存储空间,并且将新的数组的长度返回。 解题思想: 该题可以使用双指针来解决,我们可以定义一个快指针和一个…

安装docker报错:except yum.Errors.RepoError, e:

问题描述: 在安装docker的时候,配置阿里云地址出现以下问题 问题原因: linux 系统中存在多版本的python. yum 依赖 python 2, 而个人使用 python 3 导致. 解决办法: 修改 /usr/bin/yum-config-manager文件中第一行 #!/usr/bin/p…

项目间的”藕断丝连“——从零到一搓个组件库

文章从零到一的封装设计 Starter,并提供可插拔 Starter 以及元数据配置等说明,并在可插拔上与开源 Zuul 进行比对,希望大家看后有所收获。 SpringBoot Starter 1. Starter 定义 SpringBoot Starter 类似于一种插件机制,抛弃了之…

pycharm更改远程服务器地址

一、问题描述 在运行一些项目时,我们常需要在pycharm中连接远程服务器,但万一远程服务器的ip发生了变化,该如何修改呢?我们在file-settings-python interpreter中找到远程服务器,但是发现ip是灰色的,没有办…

kkFileview任意文件读取漏洞复现

一、kkFileview简介 kkFileView,一款成熟且开源的文件文档在线预览项目解决方案。kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,x…

你一般会什么时候使用CHATGPT?

在当今数字时代,人们对于人工智能(AI)的依赖程度日益增加,而ChatGPT作为一种强大的自然语言处理工具,吸引了人们的广泛关注和应用。那么,人一般在什么时候会想要使用ChatGPT呢?这个问题涵盖了多…

Debookee 8 for Mac网络数据分析工具

Debookee是一款用于网络数据流量分析和嗅探的软件。它为用户提供了一个直观的界面,让他们能够查看和分析来自从网络上的各种设备的数据流量。 Debookee具有以下主要功能: 实时监控:Debookee可以实时监控网络上的数据流量,并将其显…

对话InfoQ,聊聊百度开源高性能检索引擎 Puck

近日,百度宣布在 Apache 2.0 协议下开源自研检索引擎 Puck,这也是国内首个适用于超大规模数据集的开源向量检索引擎。向量检索算法在个性化推荐系统、多模态检索、自然语言处理等应用场景中都发挥着重要作用,特别是在处理大规模数据和高维特征…

MyBatis无法读取XML中的Method的乌龙事件

事件背景 同事反馈,相同的jar包,在多人本地的电脑、多台服务器中,都是可以正常启动的,只有在其中一台服务器,简称它为A,无法启动,因为启动后的初始化操作中有一个调用mybatis方法的操作&#x…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇二)

python实现MC协议(SLMP 3E帧)的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模…

聊聊无源滤波器与有源滤波器的概念、区别与应用

随着电子技术的迅速发展,电子设备得到广泛的应用,然而电磁环境污染日趋严重,已成为当今主要公害之一。在很多领域里,电磁兼容性已成为电气和电子产品必须有的技术指标或性能评价的依据,通过使用电源滤波器来过滤掉电源…

Debug技巧-不启用前端访问后端

在日常开发中,我们经常会遇到各种问题需要调试,前后端都启动需要耗费一定的时间和内存,方便起见,可以直接用抓包数据访问后端,这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求,在控制…

LiveNVR监控流媒体Onvif/RTSP功能-支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像

LiveNVR支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像 1、流媒体服务说明2、支持海康SDK接入3、查看设备录像3.1、时间轴模式3.2、列表模式 4、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、流媒体服务说明 LiveNVR可接入传统监控行业里面的高清网络摄像…

黑马 小兔鲜儿 uniapp 小程序开发- 微信登录用户模块- 06-07

黑马 小兔鲜儿 uniapp 小程序开发- 商品详情模块- day05-CSDN博客 小兔鲜儿 - 微信登录-06 涉及知识点:微信授权登录,文件上传,Store 状态管理等。 微信登录 微信小程序的开放能力,允许开发者获取微信用户的基本信息&#xff…

回馈式电子负载核心组成

回馈式电子负载是一种用于模拟负载电流和电压的测试设备。它由以下几个核心组成部分构成: 控制电路:控制电路是负载的核心部分,它负责接收输入的控制信号,并根据信号的要求来调整负载的工作状态。控制电路通常包括一个微处理器或者…

自主创建抖音商城小程序源码系统 带完整搭建教程

随着抖音平台的日益普及,越来越多的商家和用户选择在抖音上开展业务。抖音作为一款短视频社交平台,拥有庞大的用户群体和广阔的市场前景。今天罗峰就来给大家介绍一款抖音商城小程序源码系统,帮助用户快速创建自己的抖音商城,从而…