多智能体
约 901 个字 预计阅读时间 3 分钟
core
多智能体协同的底层事实,就是文本和结构化数据在不同程序间的相互传递。
多智能体框架¶
1. HelloAgents¶
- 怎么使用: 直接调用大语言模型 API。开发者需要手动编写基础的数据结构(例如定义
Message类来记录对话上下文),并手动定义Agent类。在实现多智能体交互时,你需要直接使用 Python 的基础控制流(如while循环、if-else条件判断),手动将一个智能体的输出文本,提取出来作为下一个智能体的输入。 - 为什么这样使用(原理): 去封装化的直接数据传递。HelloAgents 去除了高级框架中常见的封装层,让开发者直接处理大语言模型的输入和输出。
2. OpenAI SDK¶
- 怎么使用: 通过定义多个独立的 Agent 对象,为每个对象配置专属的系统提示词(Instructions)和可执行的工具函数(Functions)。实现多智能体协作的核心操作是:将切换智能体的动作,本身定义为一个工具函数。例如,你提供一个名为
transfer_to_agent_b的工具函数,当 Agent A 遇到无法处理的问题并调用该函数时,代码会将其返回值设为 Agent B,系统随之将后续的对话处理权转移给 Agent B。 - 为什么这样使用(原理): 基于原生函数调用(Function Calling)的动态路由。不预先写死各个智能体之间的执行顺序,而是完全依靠语言模型自身的推理能力。模型根据当前的用户对话,自主决定是调用普通数据计算工具,还是调用“转移”工具交给其他智能体。这种设计是无状态的(Stateless),框架不维护复杂的全局变量,一切走向都由大模型在当前步骤的判断触发。
3. LangGraph¶
-
怎么使用: 在编写代码时,你必须明确构建三个核心要素: 1.
State(状态):定义一个全局的数据对象(通常是字典或 Pydantic 模型),用于集中保存整个系统的对话记录、中间结果和参数。 2.Node(节点):定义具体的执行操作,通常是一个调用大语言模型的函数,或者一个普通的 Python 数据处理函数。每个节点在执行完后,都会去更新State里的数据。 3.Edge(边):编写连接节点的逻辑判断代码,用于决定在当前节点执行完毕后,系统接下来该去执行哪一个节点。 最终,将这些要素组合编译成一个图(Graph)数据结构,然后输入初始参数启动运行。 -
为什么这样使用(原理): 基于有限状态机(FSM)与图计算的强控制流。在复杂的生产环境中,如果完全依靠语言模型自主决定下一步,程序容易出现逻辑偏差或死循环。LangGraph 的原理是通过计算机科学中的图数据结构,强制规范了程序的执行路径。所有的节点必须在规则内共享并修改同一个
State,每执行完一步,系统严格根据你代码中设定的条件(Edge)来决定后续走向。这种设计天然支持执行步骤的回溯、循环重试,以及在特定节点暂停以等待人工指令确认,适合对稳定性、容错率有极高要求的复杂工业级任务。