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

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 autogen config_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 Found api-web-1 | INFO: 64.62.197.196:17585 - "CONNECT www.shadowserver.org%3A443 HTTP/1.1" 404 Not Found api-web-1 | INFO: 39.103.151.239:35416 - "GET /nice%20ports%2C/Trinity.txt.bak HTTP/1.0" 404 Not Found api-web-1 | INFO: 42.240.135.244:47528 - "GET /.vscode/sftp.json HTTP/1.1" 404 Not Found api-web-1 | INFO: 141.98.11.96:37662 - "GET /../../mnt/mtd/Config/Account1 HTTP/1.1" 404 Not Found api-web-1 | INFO: 141.98.11.96:39022 - "GET /../../mnt/mtd/Config/Account2 HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /explicit_not_exist_path HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /admin/ HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /robots.txt HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /favicon.ico HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /images/ofbiz.ico HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /phpMyAdmin/ HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /phpmyadmin/ HTTP/1.1" 404 Not Found api-web-1 | INFO: 139.196.35.138:53510 - "GET /wcm/ HTTP/1.1" 404 Not Found