You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangGraph多节点教学聊天机器人节点切换无响应问题排查

问题排查与解决方案

一、teach_ai节点无响应的核心排查点

  • 节点无返回值:检查teach_ai节点函数是否有明确返回值,LangGraph节点必须返回可序列化对象(字典、字符串等),仅执行逻辑不return会导致无输出。
  • 状态未正确更新:确认teach_ai是否将教学内容写入状态的messages或指定键中,LangGraph依赖状态流转传递输出。
  • 路由条件不匹配:检查chathandler收集信息后是否正确设置状态标记(如state["stage"] = "teach_ai"),且路由逻辑准确读取该标记。
  • LLM调用异常:若teach_ai内部调用大模型,需添加异常捕获并打印日志,排查API密钥、参数或网络问题。

二、核心代码修正示例

修复teach_ai节点返回问题

def teach_ai_node(state):
    # 生成AI主题课程内容
    course_content = f"你好{state['user_name']},现在开始AI基础课程:AI是人工智能的简称,核心包含机器学习、深度学习等分支..."
    # 必须返回更新后的状态,确保内容传递到输出
    return {"messages": [{"role": "assistant", "content": course_content}]}

确认路由绑定逻辑

def route_after_chathandler(state):
    # 校验姓名和年龄是否已收集
    if state.get("user_name") and state.get("user_age"):
        return "teach_ai"
    else:
        return "chathandler"

# 图构建时绑定路由
graph.add_conditional_edges(
    "chathandler",
    route_after_chathandler,
    {"teach_ai": "teach_ai", "chathandler": "chathandler"}
)

三、多节点课程流转逻辑实现

1. 课程完成标记与路由

为每个教学节点添加完成状态,通过路由判断后续流转:

def teach_ai_node(state):
    course_content = f"你好{state['user_name']},现在开始AI基础课程:AI是人工智能的简称..."
    # 标记AI课程已完成
    completed_courses = state.get("completed_courses", []) + ["ai"]
    return {
        "messages": [{"role": "assistant", "content": course_content}],
        "completed_courses": completed_courses
    }

def route_after_teach(state):
    # 未完成提示词课程则跳转至对应节点
    if "prompt" not in state.get("completed_courses", []):
        return "teach_prompt"
    # 所有课程完成进入总结节点
    else:
        return "course_summary"

2. 工具触发流转(transfer_to_teach_prompt)

扩展工具实现节点跳转:

from langchain.tools import tool

@tool
def transfer_to_teach_prompt(state):
    """切换到提示词课程节点"""
    return {"stage": "teach_prompt"}

# 工具调用后的路由逻辑
def route_after_tool(state):
    if state.get("stage") == "teach_prompt":
        return "teach_prompt"
    return "default"

3. 课程总结节点

所有课程完成后生成学习总结:

def course_summary_node(state):
    completed_courses = state.get("completed_courses", [])
    summary = f"{state['user_name']}你已完成以下课程:{','.join(completed_courses)},恭喜你完成全部教学内容!"
    return {"messages": [{"role": "assistant", "content": summary}]}

四、调试技巧

  • 在每个节点函数中添加print语句,输出当前状态和执行情况,快速定位无响应节点。
  • 使用LangGraph的print_graph()方法可视化图结构,检查节点连接是否正确。
  • 开启调试日志排查细节:
import logging
logging.basicConfig(level=logging.DEBUG)

内容的提问来源于stack exchange,提问作者Raheem Tariq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:12:40