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

2023-11-01 11:36

本文主要是介绍AutoGen完整教程和加载本地LLM示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.gitcd 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: inttext: strlogprobs: Optional[int] =None# finish_reason: Optional[Literal["stop", "length"]]classCompletionResponseStreamChoice(BaseModel):index: inttext: strlogprobs: Optional[float] =None# finish_reason: Optional[Literal["stop", "length"]] = None

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

 fromautogenimportoai# create a text completion requestresponse=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 requestresponse=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 requestresponse=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

这篇关于AutoGen完整教程和加载本地LLM示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322670

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试