我用多智能体架构做了一个智能写作系统

我用多智能体架构做了一个智能写作系统

最近项目比较忙,没太多时间发文章。不过也没闲着,一直也在研究和思考多智能体架构的事,因为我觉得这是后面智能体发展的一条大主线。所以还是想发这篇文章,看是否会有感兴趣的朋友可以一起交流。

其实单智能体的能力总归是有上限的,而多智能体的协同则会产生巨大的乘数效应,每个智能体之间都可以互相交流,就像人类的合作生产一样,这种方式最终能达到的高度不可想象。

但是当前的各个主流智能体平台的工作流模式只能实现信息的单向流动(输入->输出),无法做到真正的多智能体协同,也就是双向,甚至多向交流。这也是为什么我觉得现在的工作流不是未来的大方向,智能体平台也需要进化了。

那怎么才能实现多智能体协同呢?

其实现在已经有不少多智能体框架可以选择,研究过的朋友一定知道,比如:LangGraph,AutoGen,CrewAI,AgentFlow,Automic Agents,等等。我在调研了一圈后发现这些框架各有各的优势和问题,有些框架要么太过复杂,要么偏学术研究,要么工程化能力差,最后我选择LangGraph作为落地实操的框架,因为它是目前最可工程化,最可落地的框架。

最近我就用LangGraph做了一个落地实验,做了一个多智能体写作系统,我给他取名叫双星智能写作系统。

顾名思义,这个写作系统有两个智能体,一个是写作智能体(writer),一个是评审智能体(reviewer),writer负责写文章,reviewer负责对文章进行评审和打分,两个智能体经过多轮交互以后,最终文章达到设定的目标分数或者预设的对话轮次则停止。以后再加一个智能体,是不是就可以叫三体智能写作系统了?

图片

这个写作系统就是模仿我们平时自己写文章的方法。因为我们自己也很少有一次写好的,一般都是写个初稿,然后再反复的改几次,最终才定稿。因此这个系统的工作流程是这样的:

1. 写作智能体根据输入的写作需求,文案风格和参考资料写初稿

2. 评审智能体根据评审要求给出评审意见并打分

3. 系统判断文章分数是否已达标,或者对话轮次已满,如果是,则结束,如果否则继续

你看其实整个流程非常简单,只要引入多智能体的沟通方式,就可以很轻松的实现。

个人觉得这个写作系统最终还是达到了我预期的效果,确实能够通过多轮对话,把文章最终调教到预期的方向。

下面是个示例,由于篇幅有限,我这个图里只展示了最终文案和第一轮对话的过程。

图片

当然这个写作系统并不是你想象的那么容易上手,他需要你给定写作风格和评审风格,你给的写作风格和评审风格越靠谱,则系统出来的文章就越靠谱,系统帮你做的只是不断的修改的过程,但是要写成什么样,还是需要你的提示词来约束。因此,目前这个系统更多是面向专业的使用者,需要用户有一套自己的写作和评审体系。

其实这个工作流程同样可以适用其他场景,只要是遵循“输出->反馈->修订”这种流程的场景都可以应用。

这里放出相关的核心代码给大家参考

from langgraph.graph import StateGraph, END from typing import TypedDict, Annotated from langchain_community.tools import DuckDuckGoSearchRun from langchain_core.pydantic_v1 import BaseModel, Field from langchain.prompts import ChatPromptTemplate from langchain.llms import OpenAI # 定义共享状态 class WritingState(TypedDict):     topic: str  # 写作主题     draft: Annotated[str, "writer生成的文章草稿"]     review_feedback: Annotated[str, "reviewer的评审反馈"]     review_score: Annotated[int, "reviewer给出的文章分数"]     revision_count: int  # 修订次数,防止无限循环     final_report: Annotated[str, "最终文章"] # 初始化智能体节点 def writer_node(state: WritingState):     print("--- 节点: writer ---")     topic = state["topic"]     review_feedback = state["review_feedback"]     # 构建prompt     if review_feedback:         prompt = f"根据主题{topic}和反馈意见{review_feedback},修改文章内容。"     else:         prompt = f"根据主题{topic},撰写文章内容。"     llm = OpenAI(model_name="gpt-3.5-turbo")     draft = llm(prompt)     # 更新修订次数     revision_count = state["revision_count"] + 1     return {"draft": draft, "revision_count": revision_count} def reviewer_node(state: WritingState):     print("--- 节点: reviewer ---")     draft = state["draft"]     # 构建prompt     prompt = f"请对文章内容{draft}进行评审,并给出一个0到100的分数。"     llm = OpenAI(model_name="gpt-3.5-turbo")     response = llm(prompt)     # 解析评审结果     review_score = int(response.split(":")[1].strip())     review_feedback = response.split(":")[0].strip()     return {"review_feedback": review_feedback, "review_score": review_score} # 定义条件边 def should_continue(state: WritingState):     print("--- 条件判断 ---")     # 如果达到最大修订次数,或文章分数达到目标分数,则结束     if state["revision_count"] > 3 or state["review_score"] >= 80:         return END     else:         # 否则,打回给writer         return"writer" # 构建工作流图 def create_workflow_graph():     workflow = StateGraph(WritingState)     # 添加节点     workflow.add_node("writer", writer_node)     workflow.add_node("reviewer", reviewer_node)     # 设置入口点     workflow.set_entry_point("writer")     # 添加边缘     workflow.add_edge("writer", "reviewer")     # 添加条件边     workflow.add_conditional_edges(         "reviewer", should_continue, {             "writer": "writer",             END: END         }     )     # 编译图     return workflow.compile() # 运行多智能体系统 if __name__ == "__main__":     # 创建工作流     app = create_workflow_graph()     # 定义写作主题     topic = "人工智能的发展趋势"     # 初始化状态     initial_state = WritingState(         topic=topic,        ,        ,         review_score=0,         revision_count=0,             )     # 运行工作流     final_state = None     for step in app.stream(initial_state):         # 打印每个步骤的结果         for node, values in step.items():             print(f"\n--- {node} 完成 ---")             if node == "writer":                 print(f"文章草稿: {values['draft'][:200]}...")             elif node == "reviewer":                 print(f"评审反馈: {values['review_feedback']}")                 print(f"评审分数: {values['review_score']}")         final_state = values     # 输出最终文章     if final_state:         print("\n\n=== 最终文章 ===")         print(final_state["draft"]) 

以上就是我最近在多智能体方向的一些思考和实践,我对多智能体的研究也才刚刚开始,后面会继续深入实践,希望和志同道合的你多多交流,欢迎在评论区给我留言。

更多精彩内容推荐:

-> AI智能体学习&实战

-> 私域AI机器人

-> 自媒体AIP打造

-> AI应用

Read more

LLaMA Factory 从入门到精通,一篇讲完

LLaMA Factory 从入门到精通,一篇讲完

目录 一、LLaMA-Factory 简介 二、安装部署 三、数据微调 1、数据集的建立 2、数据集格式 3、模型参数 4、开始运行 5、导出模型 四、webui 评估预测与对话 导出 五、SFT 训练 命令行 六、LoRA 合并 合并 量化 七、推理 原始模型推理配置 微调模型推理配置 多模态模型 批量推理 八、评估 通用能力评估 NLG 评估 评估相关参数 一、LLaMA-Factory 简介 LLaMA Factory 是一个简单易用且高效的大型语言模型(Large

文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南

文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南

目录 * 引言:轻量化部署的时代突围 * 一.技术栈全景图:精准匹配的黄金组合 * 基础层:硬核环境支撑 * 框架层:深度优化套件 * 工具层:部署利器 * 二.详细步骤:精准匹配CUDA 12.6的黄金组合 * 准备环节 * 1.模型选择 * 2.配置实例 * 3.选择镜像 * 4.进入JupyterLab * 5.进入终端 * 6.连接到ssh * 系统基础依赖安装 * 1.更新源并安装核心依赖 * 2.安装 Python 3.12 和配套 pip * 解决 pip 报错 * 深度学习框架部署:PaddlePaddle-GPU深度调优 * FastDeploy-GPU企业级部署框架 * 1.安装FastDeploy核心组件 * 2.修复urllib3

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

目录 1.MiniMax海螺AI视频简介 2.使用教程 1.MiniMax海螺AI视频简介 海螺视频,作为 MiniMax 旗下海螺 AI 平台精心打造的 AI 视频生成工具,致力于助力用户产出高品质视频内容。该工具依托 abab-video-1 模型,具备强大的文生视频功能。用户仅需输入关键词或简短语句,海螺视频就能据此创作出情节丰富的完整视频。此外,海螺视频运用 DiT 架构,能够精准模拟现实世界的物理规律,尤其在生成复杂场景与高动作场景时,展现出卓越的性能。 2.使用教程 点击如下链接,进入蓝耘元生代智算云平台主页 https://cloud.lanyun.net/#/registerPage?promoterCode=11f606c51e 点击主页上方栏的“MaaS平台” 然后点击左侧栏的“视觉模型”  可以看到可以免费体验一次I2V-01图片生成视频  点击如下红框处将图片上传  例如输入如下的图片 例如想让小狗动起来,可以在如下红框处输入相应的指令,然后点击立即生成

强化学习与大模型融合:从理论到机器人实践全解析

强化学习与大模型融合:从理论到机器人实践全解析

强化学习与大模型融合:从理论到机器人实践全解析 导读:本文系统梳理了强化学习(RL)与大语言模型(LLM)融合的前沿技术,涵盖从理论基础、算法架构到机器人仿真实践的完整链路。基于最新学术讨论与实验案例,深入剖析如何利用大模型优化奖励设计、解决多智能体协作难题,并提供完整的开发环境搭建指南。 一、核心概念与课程概览 1.1 什么是强化学习与大模型融合? 强化学习与大模型融合(LLM-RL)是指将大语言模型的语义理解、推理能力与传统强化学习的决策优化相结合,以解决复杂环境下的智能体控制问题。 核心优势: * 🧠 智能奖励设计:利用LLM自动生成和优化奖励函数,克服人工设计奖励的局限性 * 🔄 自适应交互:通过自然语言交互实现人机协作与策略优化 * 🎯 泛化能力提升:借助大模型的先验知识提高样本效率和策略泛化性 1.2 课程知识结构 ┌─────────────────────────────────────────────────────────────┐ │ 强化学习与大模型融合 │ │ 教学讨论框架 │ ├─────────────────────────