跳转至

参考 · 内置节点速查

本页汇总所有内置节点:角色、构造参数、输入输出字段、最小用法。字段名/类型与源码 NodeDeclaration 一致,是最权威的速查。

所有节点统一 Node(name=..., **params)name 是工作流内唯一实例名;**params 里的键会与「输入 schema」对齐解析(常量 / wf.ref 引用 / 注入对象)。

速查表

节点 角色 输出节点 一句话
ChatLLM 对话生成 默认是(output 可关) 组装消息调模型,流式生成 reply
Answer 指定回复 输出固定文本 / 引用 / {{key}} 变量,收口最终回答
IfElse 条件判断 conditionbranch 做条件路由,可当纯计算节点
QuestionClassify 模型分类 把问题归到预定义类别,产稳定 branch
HttpRequest HTTP 调用 GET/POST 等,输出 status_code/text/json
KnowledgeBaseSearch 知识库检索 检索当前问题,输出 results/text/has_results
UserSelect 交互选择 暂停让用户选一项(需 checkpointer)
UserInput 交互输入 暂停让用户输入一段(需 checkpointer)
VariableUpdate 写内部变量 ctx.variables,不回传
VariableOutput 回传变量 显式声明回传前端的变量键

1. ChatLLM

组装 system + history + context + 当前问题 调模型,流式输出。

构造参数 说明
chat_model LLM 客户端(LLMClient 或任意可调用对象,测试注入 mock;必填)
system 系统提示(可选)
output 是否输出节点,默认 True;设 FalseAnswer 收口
输入 类型 必填
user_input str 否(缺省取历史最后一条 user 消息)
history chatHistory
context str 否(参考上下文,注入 user 前,如知识库文本)
输出 类型
reply str
wf.add_node(
    ChatLLM(
        name="llm",
        chat_model=model,
        system="你是客服",
        user_input=wf.ref("input"),
        context=wf.ref("kb.text"),
        output=False,
    )
)

2. Answer

输出最终回复(统一转 str,支持 {{key}} 变量渲染)。is_output=True

输入 类型 必填
text any
输出 类型
result str
wf.add_node(Answer(name="ans", text="正在为您转接…"))  # 固定文本
wf.add_node(Answer(name="ans", text=wf.ref("llm.reply")))  # 引用节点输出
wf.add_node(Answer(name="ans", text="你好{{user_name}}"))  # 变量占位符

3. IfElse

condition 产出路由键 branch,配合条件边路由;也常当纯计算节点branch 被下游当数据引用)。

输入 类型 必填
condition any(常量或 (inputs,ctx)->分支值
left any 否(待判断值,供 condition 读取)
输出 类型
branch any(bool 二分支或任意可哈希值多分支)
wf.add_node(
    IfElse(
        name="judge", left=wf.ref("llm.reply"), condition=lambda i, ctx: "转人工" in str(i["left"])
    )
)
wf.add_conditional_edge("judge", {True: "handoff", False: "auto"})

condition 三种形态:可调用 (inputs,ctx)(可读 ctx.variables)/ 常量 / 缺失(抛 ValueError)。

4. QuestionClassify

让模型把问题归到预定义类别;未命中归 "其他"。确定性匹配保证 branch 稳定对应条件边。

构造参数 说明
chat_model LLM 客户端(必填)
categories 类别 [{name, description?}, ...](必填)
description 分类提示说明,默认「判断用户的意图」
query 待分类问题(一般 wf.ref
输入 类型 必填
query str
history chatHistory
输出 类型
branch / category str(命中类别名)
confidence float(占位 1.0
wf.add_node(
    QuestionClassify(
        name="cls",
        chat_model=model,
        categories=[{"name": "退款"}, {"name": "物流"}],
        query=wf.ref("input"),
    )
)
wf.add_conditional_edge("cls", {"退款": "refund", "物流": "logistics", "其他": "default"})

5. HttpRequest

调第三方接口。headers/body 支持输入与参数互备;body dict/list 自动 JSON,str 原样。可注入 client=httpx.Client

输入 类型 必填
url str
method str 否(默认 GET)
headers dict
body any
输出 类型
status_code int
text str
json dict(解析失败 None
wf.add_node(HttpRequest(name="api", url="https://httpbin.org/get", method="GET"))
wf.add_node(Answer(name="ans", text=wf.ref("api.text")))

6. KnowledgeBaseSearch

检索当前问题(query 缺省取最近 user 消息),输出拼接检索文本供 LLM 上下文。

构造参数 说明
retriever 检索器(见专题 RAG,必填)
输入 类型 必填
query str 否(缺省取最近 user 消息)
输出 类型
results list[{source, chunk_index, text, score}]
text str[来源-块#n] 内容,块间空行)
has_results bool
wf.add_node(KnowledgeBaseSearch(name="kb", retriever=retriever))
wf.add_node(ChatLLM(name="llm", chat_model=model, context=wf.ref("kb.text"), output=False))

7. UserSelect / UserInput(交互,需 checkpointer)

暂停发 interactive 载荷,用户答复后恢复。必须 wf.compile(store=...) 才能跨请求恢复(见指南 04)。

UserSelect

输入 类型 必填
description str 是(给用户的问题)
options list[{key, value}, ...]
输出 类型
selected any(用户选中的 value)
wf.add_node(
    UserSelect(
        name="choose",
        description="请选择业务类型",
        options=[{"key": "a", "value": "贷款"}, {"key": "b", "value": "还款"}],
    )
)

UserInput

输入 类型 必填
description str
输出 类型
input str
wf.add_node(UserInput(name="ask", description="请输入您的手机号"))

8. VariableUpdate(写内部变量)

ctx.variables[key]=value不回传前端

输入 类型 必填
key str
value any 是(支持 wf.ref
wf.add_node(VariableUpdate(name="set_name", key="user_name", value=wf.ref("llm.reply")))

9. VariableOutput(显式回传变量)

variables 的 value:显式值 / None(从内部变量取)/ wf.ref。回传的键才进 updateVariables

输入 类型 必填
variables dict{key: value}
wf.add_node(VariableOutput(name="out", variables={"session_id": "s-123"}))  # 显式
wf.add_node(VariableOutput(name="out", variables={"currentStage": None}))  # 取内部
wf.add_node(VariableOutput(name="out", variables={"name": wf.ref("llm.reply")}))  # 引用

附:工作流构建 API 速查

方法 作用
Workflow(name) 建图
add_node(node) 加节点(实例名唯一)
add_edge(src, dst) 普通边(dst 可用 "__end__"
add_conditional_edge(src, mapping) 条件边(mapping = {分支值: 目标}
wf.ref(expr) 引用 "input""节点.输出键"
wf.compile(store=None) 编译为原生 LangGraph 图

下一步

  • 每个节点的详细用法与完整配图 → 见各指南
  • 想加自己的节点 → 指南 07