用 100 行代码实现一个混合智能体——让多个模型协作回答问题
Hermes MoA 证明了混合智能体的效果可以超过单个顶级模型。这篇文章教你实现一个简化版的混合智能体——让 DeepSeek 做分析、豆包做编码、GPT 做总结,模型之间协作完成任务。
核心思路
用户问题 ↓ 路由器 Agent(分析问题类型) ↓ ┌────────┬────────┬────────┐ │ 分析师 │ 编码师 │ 总结师 │ ← 不同模型负责不同任务 │DeepSeek│ 豆包 │ DeepSeek│ └────────┴────────┴────────┘ ↓ 合成 Agent(整合结果) ↓ 最终回答核心代码
# moa_agent.pyfromopenaiimportOpenAIimportos,jsonfromdotenvimportload_dotenv load_dotenv()clients={"deepseek":OpenAI(api_key=os.getenv("DEEPSEEK_KEY"),base_url="https://api.deepseek.com/v1"),"doubao":OpenAI(api_key=os.getenv("DOUBAO_KEY"),base_url="https://ark.cn-beijing.volces.com/api/v3"),}MODEL_MAP={"deepseek":"deepseek-chat","doubao":"doubao-2.1-pro"}defcall_llm(provider,system_prompt,user_prompt,temperature=0.3):client=clients[provider]resp=client.chat.completions.create(model=MODEL_MAP[provider],messages=[{"role":"system","content":system_prompt},{"role":"user","content":user_prompt}],temperature=temperature,)returnresp.choices[0].message.contentclassMoAgent:"""混合智能体:分析问题 → 分派任务 → 多模型协作 → 整合结果。"""defanswer(self,question):# 1. 路由器:分析问题类型并分派plan=self._route(question)# 2. 并行调用各专家模型results={}forexpertinplan["experts"]:role=expert["role"]prompt=expert["prompt"]provider=expert.get("provider","deepseek")results[role]=call_llm(provider,prompt,question)# 3. 合成最终答案returnself._synthesize(question,results)def_route(self,question):route_prompt=f"""分析以下问题,确定需要哪些专家角色。 返回 JSON: {{"experts":[{{"role":"角色名","prompt":"系统提示","provider":"deepseek或doubao"}}]}} 分析以下问题:{question}"""result=call_llm("deepseek","",route_prompt)try:returnjson.loads(result)except:return{"experts":[{"role":"通用助手","prompt":"回答以下问题","provider":"deepseek"}]}def_synthesize(self,question,results):findings="\n\n".join(f"###{role}\n{content}"forrole,contentinresults.items())returncall_llm("deepseek","你是一个综合分析师。整合多位专家的观点,给出一个完整、准确的最终答案。",f"问题:{question}\n\n专家意见:\n{findings}")agent=MoAgent()# 使用answer=agent.answer("Python 中如何处理大文件读取而不导致内存溢出?")print(answer)运行效果
问题:Python 中如何处理大文件读取而不导致内存溢出? 🤖 路由器分析: - 分析师(DeepSeek):分析问题,提供理论方案 - 编码师(豆包):提供代码实现 📊 分析师(DeepSeek): 大文件读取的核心策略是流式处理,主要有三种方式: 1. 逐行读取(readline) 2. 分块读取(read(chunk_size)) 3. 内存映射(mmap) 💻 编码师(豆包): ```python # 首选方案:分块读取 with open("large.csv", "r") as f: while chunk := f.read(8192): process(chunk)🎯 综合答案:
对于大文件读取,推荐使用流式分块读取,每次读取 8KB…
### 总结 混合智能体不需要复杂的框架,核心就三步: 1. 分析问题,确定需要哪些专家角色 2. 并行调用不同的模型(各司其职) 3. 一个模型整合所有人的输出 100 行代码实现,效果可以超过单独使用任何一个模型。 > 本文由 Zyentor(智元界)原创发布 --- > 本文发布于 [Zyentor(智元界)](https://www.zyentor.com) —— AI 开发者社区 > 原文链接:[https://www.zyentor.com/news/4284](https://www.zyentor.com/news/4284)