缘起

去年7月,ChatDev公布后,我发现通过将大模型(比如ChatGPT)封装成不同的角色,并将他们拉在一起进行协作,完成一个复杂任务,给大模型的应用带来了一个全新的视角。

ChatDev是一家虚拟软件公司,通过各种不同角色的智能体运营,包括执行官、产品官、技术官、程序员、审查员、测试员、设计师等。这些智能体形成了一个多智能体组织结构,其使命是“通过编程改变数字世界”。ChatDev内的智能体通过参加专业的功能研讨会来协作,包括设计、编码、测试和文档编写等任务。
ChatDev的主要目标是提供一个基于大型语言模型(LLM)的易于使用高度可定制并且可扩展的框架,它是研究群体智能的理想场景。

后来,我了解到,还有很多不同的开源项目,都在专注于通过构建多个智能体(Agent)工作流来完成复杂任务,大幅提升大语言模型完成任务的能力。比较知名的项目有AutoGPT、AutoGen、CrewAI等等。我也开始了AutoGen的尝试和研究。

AutoGen 是一个框架,它允许使用多个可以相互交谈以解决任务的代理来开发LLM应用程序。AutoGen代理是可定制的、可对话的,并且无缝允许人类参与。它们可以在各种模式下运行,这些模式使用LLM、人类输入和工具的组合。
1、AutoGen 使得基于多代理对话的下一代LLM应用程序的构建变得轻而易举。它简化了复杂LLM工作流的编排、自动化和优化。它最大化了LLM模型的性能并克服了它们的弱点。
2、它支持复杂工作流的多样化对话模式。通过可定制和可对话的代理,开发者可以使用AutoGen构建涵盖对话自主性、代理数量和代理对话拓扑的广泛对话模式。
3、它提供了具有不同复杂度的工作系统集合。这些系统涵盖了来自各个领域和复杂度的广泛应用。这展示了AutoGen如何轻松支持多样化的对话模式。
4、AutoGen提供了增强的LLM推理。它提供了API统一和缓存等实用工具,以及错误处理、多配置推理、上下文编程等高级使用模式。
AutoGen得力于微软、宾夕法尼亚州立大学和华盛顿大学的协作研究。

第一版V0.1

尝试了AutoGen之后发现,GPT-4确实是最好的大模型,但缺点就是太贵了。尤其是在AutoGen中多轮对话下来,token数量蹭蹭的涨。AutoGen不仅仅限于使用OpenAI的大模型,实际上,所有的大模型都可以被封装为智能体。唯一麻烦一点的是,各个大模型都有自己的接入点、API key等等,注册和管理各个大模型的账号相当繁琐,并且要给不同的智能体测试和指定大模型也是个容易出错的工作。

有没有更好一点的方法呢?其实可以把各个大模型的API都封装到一个地方进行访问嘛,采用不同模型的时候只需要指定模型名称即可。这事很简单,可以立刻开干。

通过几轮与ChatGPT的交流,它建议我采用FastAPI来进行快速开发。然后打开VS Code,Copilot很快就给了我代码。测试,通过。

好东西不能我一个人独享吧。一不做二不休,干脆挂个域名上线吧,分享给大家使用。

1、配置OAI_CONFIG_LIST

[{"model": "mistralai/mistral-7b-instruct:free", "api_key": "123456","base_url": "https://api.mrtoyy.com/v1/"}]

目前先薅了几个免费的模型,用量有限制。支持的模型如下:

"01-ai/yi34b:free" # 零一万物34B"mistralai/mistral-7b-instruct:free" # Mistral 7B Instruct"undi95/toppy-m-7b:free" # Toppy M 7B"openchat/openchat-7b:free": call_openchat7b, # OpenChat 3.5 7B

model那里填入对应的模型即可。
API_key目前可以随便填。
base-url照抄即可。

2、接下来在AutoGen中导入配置即可

import autogenconfig_list = autogen.config_list_from_json("OAI_CONFIG_LIST",filter_dict={"model": ["XXX:XXX"],},)......

可以在filter_dict里面定义筛选不同的模型,这样就可以快速给各个Agent指定大模型了。

好了,以上欢迎大家拍砖。同时也欢迎大家试用。欢迎大家提意见。

更新0311

今天更新支持了SSL。前面代码已经调整为https访问了。欢迎大家多提建议。

另:发现访问记录有很多看不明白的流量,哪位大神可以告诉我是什么意思呢?

api-web-1| INFO: 64.62.197.191:54023 - "GET http%3A//api.ipify.org/?format=json HTTP/1.1" 404 Not Foundapi-web-1| INFO: 64.62.197.196:17585 - "CONNECT www.shadowserver.org%3A443 HTTP/1.1" 404 Not Foundapi-web-1| INFO: 39.103.151.239:35416 - "GET /nice%20ports%2C/Trinity.txt.bak HTTP/1.0" 404 Not Foundapi-web-1| INFO: 42.240.135.244:47528 - "GET /.vscode/sftp.json HTTP/1.1" 404 Not Foundapi-web-1| INFO: 141.98.11.96:37662 - "GET /../../mnt/mtd/Config/Account1 HTTP/1.1" 404 Not Foundapi-web-1| INFO: 141.98.11.96:39022 - "GET /../../mnt/mtd/Config/Account2 HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /explicit_not_exist_path HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /admin/ HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /robots.txt HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /favicon.ico HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /images/ofbiz.ico HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /phpMyAdmin/ HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /phpmyadmin/ HTTP/1.1" 404 Not Foundapi-web-1| INFO: 139.196.35.138:53510 - "GET /wcm/ HTTP/1.1" 404 Not Found