山东大学项目实训(一)DebateLab—多智能体辩论与复盘平台

张开发
2026/4/21 6:38:10 15 分钟阅读

分享文章

山东大学项目实训(一)DebateLab—多智能体辩论与复盘平台
实训第一周 | DebateLab多智能体辩论平台——LangGraph状态机与智能体调度框架搭建项目DebateLab——多智能体辩论与复盘平台个人职责LangGraph状态机设计、多辩位智能体调度、Prompt模板编写、争议点跟踪逻辑实现日期2026年第一周一、本周工作总览作为团队中负责AI智能体调度与流程控制的核心成员本周我的核心目标是搭建项目AI层的技术底座完成从环境搭建→工具封装→智能体编排→LangGraph状态机原型→基础联调的全流程闭环让后续八辩位发言、攻防推演、争议点跟踪有稳定可扩展的底层支撑。本周不追求完整业务功能而是把**“流程可控、状态可追踪、多智能体可调度”**的骨架跑通所有开发均围绕辩论场景定制而非通用Demo。二、开发环境与工程结构规范化1. 环境配置与密钥管理完成.env环境变量统一配置管理OPENROUTER_API_KEY、TAVILY_API_KEY等密钥实现代码与配置分离避免硬编码提升项目安全性与协作便利性2. 项目目录结构设计按照工程化标准搭建AI模块目录便于后续多人维护与扩展agent/ ├── core/ # 状态机、调度核心逻辑 ├── tools/ # 联网搜索、工具封装 ├── prompt/ # 辩位Prompt、阶段Prompt └── myAgent.py # 智能体入口与LangGraph编排3. 核心依赖集成LangChain、LangGraph状态机核心ChatOpenAI对接大模型TavilySearch辩论论据检索三、联网搜索工具封装辩论AI论据支撑辩论智能体必须具备事实检索、论据查找能力我基于Tavily实现了可直接嵌入智能体的搜索工具并提供4种工程化封装方式适配不同复杂度场景代码片段1辩论场景联网搜索工具工程化封装# tools/search.py 核心精简代码高亮展示fromlangchain_community.toolsimportTavilySearchResultsfromlangchain_core.toolsimporttooldefget_debate_search_tool(): 辩论专用联网搜索工具 提供事实论据、政策数据、案例检索支持智能体自动调用 returnTavilySearchResults(max_results3,search_depthbasic,include_answerTrue,include_raw_contentFalse,description用于辩论论据检索、事实查询、案例查找)# 快速封装版工具tooldefdebate_search(query:str)-str:辩论专用搜索输入论点关键词返回权威论据与事实toolget_debate_search_tool()returntool.invoke({query:query})同时增加异常处理API缺失、搜索无结果、请求异常等情况均返回友好提示保证智能体运行稳定。该工具将用于攻辩、自由辩阶段让AI辩手能够基于事实发言而不是纯逻辑空谈。四、LangGraph状态机设计辩论流程总控大脑这是本周最核心、最具技术价值的工作。辩论是多阶段、强顺序、强上下文、多角色协作的任务普通函数调用无法满足流程严格可控立论→攻辩→驳论→总结状态持久化多智能体轮流发言争议点动态更新因此我选择LangGraph作为整个AI层的调度核心。代码片段2LangGraph 辩论状态机核心定义# myAgent.py 精简核心代码高亮展示fromlanggraph.graphimportStateGraph,MessagesState,START,ENDfromlangchain_openaiimportChatOpenAI# 1. 定义辩论全局状态所有智能体共享上下文classDebateState(MessagesState):stage:str# 辩论阶段立论/攻辩/驳论/总结debater_role:str# 当前辩位controversy_points:list# 争议点列表team_state:dict# 队伍共享状态# 2. 初始化LLMllmChatOpenAI(modelqwen,temperature0.7)# 3. 核心调度节点智能体调用函数defcall_debater_agent(state:DebateState):messagesstate[messages]responsellm.invoke(messages)# 返回结果自动写入状态机return{messages:[response],controversy_points:state[controversy_points]}# 4. 构建状态机工作流workflowStateGraph(DebateState)workflow.add_node(debate_agent,call_debater_agent)workflow.add_edge(START,debate_agent)workflow.add_edge(debate_agent,END)# 编译并生成可执行图appworkflow.compile()本周已实现基于 MessagesState 统一状态管理存储辩论全程对话历史、阶段状态、争议点记录确保每一轮发言都可追溯、可恢复。完成基础状态机链路START → agent节点 → END实现“用户输入→LLM处理→结果返回→状态更新”闭环。封装 call_llm 统一调度函数从状态中读取历史消息调用大模型并将结果写回状态为后续接入论点抽取、争议点更新、评分节点预留扩展口。支持 langgraph dev 可视化调试可实时查看状态流转、节点执行情况大幅降低多辩位协同调试难度。技术理解LangGraph不是“简单调用LLM”而是带状态的工作流引擎。DebateLab必须靠它实现固定赛制流程强约束队伍状态共享多智能体轮流发言争议点实时跟踪这是项目能实现可评分、可复盘、可训练的关键基础。五、多辩位智能体调度框架设计本周已完成八辩位正/反一、二、三、四辩调度架构设计整体调度思路统一调度器 角色职责模板 队伍共享状态调度接口设计入参辩位、当前阶段、本方状态、对方摘要、争议点出参结构化发言 论点标签 攻防意图确保同一方辩手立场统一、逻辑连贯、前后呼应不会出现自相矛盾。为下周正一立论、反一立论智能体开发做好完全准备。六、Prompt模板体系规划辩论质量核心为让AI辩手符合真实辩论规则我规划了五层Prompt结构系统角色Prompt辩位职责阶段Prompt立论/质询/驳论/自由辩/总结队伍状态Prompt统一立场争议点约束Prompt防止跑题输出格式Prompt强制结构化代码片段3一辩立论 Prompt 模板结构化输出# prompt/opening_prompt.py 精简模板高亮展示DEBATER_OPENING_PROMPT 你是辩论赛【正方一辩】负责开篇立论要求逻辑清晰、结构完整。 你的发言必须包含以下结构 1. 定义核心概念 2. 给出判断标准 3. 提出2-3个核心论点 4. 每个论点附带简要论据 5. 总结立场 当前辩论议题{topic} 队伍立场{position} 争议点{controversy} 请严格按照立论结构输出不要跑题。 本周已完成一辩立论Prompt初稿可输出定义→标准→论点→论据→结论的完整立论结构七、争议点跟踪逻辑设计项目核心技术点本周完成争议点跟踪机制方案设计每轮发言结构化解析论点、所属争议点、功能类型立论/攻击/回应状态机维护争议点状态表争议点ID当前占优方未回应攻击点关键回合后续将作为独立节点接入LangGraph实现攻防态势实时更新。代码片段4争议点跟踪数据结构已设计# core/controversy.py 争议点结构高亮展示frompydanticimportBaseModelfromtypingimportList,OptionalclassControversyPoint(BaseModel):point_id:str# 争议点唯一IDcontent:str# 争议内容dominant_side:str# 当前占优方正方/反方/中立unresponded_attacks:List[str]# 未被回应的攻击点source_debater:str# 提出该争议点的辩位stage:str# 提出阶段# 状态机中统一管理controversy_list:List[ControversyPoint][]八、本周可量化成果✅ 完成AI模块工程化结构搭建✅ 实现联网搜索工具4种工程化封装✅ 完成LangGraph状态机基础架构支持状态流转与可视化✅ 完成大模型统一调用封装✅ 完成八辩位智能体调度框架设计✅ 完成辩论Prompt体系规划 立论Prompt初稿✅ 完成争议点跟踪逻辑方案设计九、遇到的问题与解决问题LangGraph状态与辩论流程结合不直观解决先画状态流转图再编码使用langgraph dev实时调试。问题工具封装方式太多不知如何选型解决简单工具用tool复杂工具用BaseTool保证项目统一规范。问题Prompt容易让AI偏离辩位职责解决强化职责约束结构化输出强制AI按角色发言。十、下周工作计划实现正一、反一立论智能体接入状态机扩展LangGraph为多阶段流程PREPARE→OPENING→CROSS→REBUTTAL完成争议点跟踪节点接入状态机编写攻辩、质询阶段Prompt模板实现同一队伍共享状态同步十一、本周技术收获与思考本周最大收获是深刻理解辩论AI ≠ 聊天机器人它是一个带强约束、强流程、强状态控制的结构化生成系统。必须用状态机控制流程必须用结构化输出保证可分析必须用共享状态保证队伍协同必须用争议点跟踪保证辩论不发散这些设计将直接决定DebateLab能否实现可训练、可评分、可复盘的核心目标。

更多文章