🐝 GPTSwarm 是一个基于图的 LLM 代理框架,提供两个高级功能:
- 它允许你从图中构建基于 LLM 的代理。
- 它能够自定义和自动组织具有自我改进能力的代理群。
关于 GPTSwarm
在粒度级别,GPTSwarm 是一个包含以下组件的库:
模块 | 描述 |
---|---|
swarm.environment | 特定领域的操作、代理、工具和任务 |
swarm.graph | 创建和执行代理图和群复合图的图相关函数 |
swarm.llm | 用于选择 LLM 后端和计算其操作成本的接口 |
swarm.memory | 基于索引的记忆 |
swarm.optimizer | 旨在提高代理性能和整体群效率的优化算法 |
图的可视化
新闻
- 🔥 [08/07] 明晨参加了上海人工智能实验室的邀请研讨会。
- 🔥 [07/25] 路易斯和弗朗西斯科在 ICML 2024 做了口头报告。
- 🔥 [07/05] 明晨在 WAIC 做了邀请演讲。
- 🔥 [06/21] 明晨在 IA-CAS 做了邀请演讲。
- 🔥 [06/20] 德米特里在 Sberbank 做了邀请演讲。
- 🔥 [06/03] SDAIA 邀请 GPTSwarm 团队(文艺、弗朗西斯科、德米特里)进行为期 5 小时的研讨会。
- 🔥 [06/02] GPTSwarm 被选为 ICML2024 的 口头报告(前 1.5%,94473 中的 144)!祝贺!
- 🔥 [05/01] GPTSwarm 被 ICML2024 接受。
- 🔥 [04/18] 明晨在字节跳动进行了邀请演讲。
- 🔥 [03/20] 明晨在华为进行了邀请演讲。
- 🔥 [03/13] MITTR China 专访 明晨。
- 🔥 [03/01] GPTSwarm 现在可以通过 pip 安装:
pip install gptswarm
- 🔥 [02/27] 我们的学术论文:语言代理作为可优化的图 已发布。
边优化示例
这是更新边概率以提高基准分数的边优化过程。注意代理内部的边是固定的,而代理之间的连接正在优化,结果可能是边剪枝(值为 0,蓝色)或创建(值为 1,红色)。
快速入门
克隆仓库
git clone https://github.com/metauto-ai/GPTSwarm.git
cd GPTSwarm/
安装包
conda create -n swarm python=3.10
conda activate swarm
pip install poetry
poetry install
你需要在 .env.template
添加 API 密钥并更改其名称为 .env
OPENAI_API_KEY="" # 对于 OpenAI LLM 后端
SEARCHAPI_API_KEY="" # 对于 Web 搜索
开始使用 GPTSwarm 很简单。快速运行一个预定义的群
from swarm.graph.swarm import Swarm
swarm = Swarm(["IO", "IO", "IO"], "gaia")
task = "约旦的首都是什么?"
inputs = {"task": task}
answer = await swarm.arun(inputs)
或者使用工具,如文件分析器
from swarm.graph.swarm import Swarm
swarm = Swarm(["IO", "TOT"], "gaia")
task = "告诉我更多关于这张图片的信息,并用三句话总结。"
files = ["./datasets/demos/js.png"]
inputs = {"task": task, "files": files}
danswer = swarm.run(inputs)
这是一个关于如何运行演示笔记本的 Youtube 视频:
🔥🔥🔥 查看我们的实验 以更高级地使用我们的框架。
类图
群的示例
运行本地 LLM
我们通过 LM Studio 支持本地 LM 推理。下载他们的 Mac 或 Windows 桌面应用程序,从 Huggingface 仓库中选择一个模型并启动服务器。在 GPTSwarm 代码中使用 model_name='lmstudio'
来运行本地 LLM。
贡献者
- 朱格明晨(KAUST 博士生;项目发起人)
- 王文艺(KAUST 博士生;初始参与者)
- 德米特里·奇兹布林(KAUST 研究工程师主管;项目工程师主管)
- 路易斯·克尔希(IDSIA 博士生)
- 弗朗切斯科·法乔(IDSIA 博士后;KAUST 访问研究员)
- 尤尔根·施米德胡伯(KAUST AI 计划主任;IDSIA 科学主任)
- 威廉·FH(LangChain 工程师)
- 卢卡斯·维尔林(RWTH & HKUST 本科生)
如果你有兴趣贡献,请阅读我们的开发文档。
引用
如果你觉得这个库有用或有趣,请引用我们的论文。
@article{zhuge2024language,
title={Language Agents as Optimizable Graphs},
author={Zhuge, Mingchen and Wang, Wenyi and Kirsch, Louis and Faccio, Francesco and Khizbullin, Dmitrii and Schmidhuber, Jurgen},
journal={arXiv preprint arXiv:2402.16823},
year={2024}
}