Langgraph构建产品推荐工具节点时遭遇ValueError编译报错求助
Langgraph构建产品推荐工具节点时遭遇ValueError编译报错求助
我最近在折腾LangGraph,想搞一个能当工具节点的提示逻辑——核心需求就是根据用户的查询推荐合适的产品,还得能参考chat_history来做更贴合的推荐。我先搭了个基础的流程框架,结果刚写了几行代码,跑起来直接报ValueError,卡得死死的,有没有大佬能帮我看看问题出在哪?
我写的代码大概是这样的:
llm = ChatOpenAI(temperature=1.0) class State(TypedDict): messages : Annotated[list, add_messages] graph_builder = StateGraph(State) print(graph_builder) chat_history = [] def chatbot(state:State): return {"messages":llm.invoke(这里我本来想写处理逻辑,但好像哪里写错了)}
我本来是想把这个chatbot函数作为工具节点,让它结合对话历史处理用户的产品查询请求,结果现在连编译这关都没过...
首先给你排查几个最容易踩的坑:
- 你代码里
llm.invoke()的参数明显没写完啊兄弟!invoke()要求传符合格式的消息参数,比如得结合state["messages"]来构造包含对话历史的prompt,直接空着或者参数格式不对肯定会触发ValueError。 - 另外,你定义
State时用了Annotated[list, add_messages],但有没有从langgraph.graphs里导入add_messages这个函数?要是没导入,类型注解直接就失效了,这也会导致报错。 - 还有,你创建了
graph_builder但完全没把chatbot节点注册到图里啊!至少得用graph_builder.add_node("chatbot", chatbot)把节点加进去,不然编译的时候LangGraph根本不知道要处理什么节点,不报错才怪。
给你补一个修正后的基础版本,你可以对照着改:
from langchain_openai import ChatOpenAI from langgraph.graphs import StateGraph, add_messages from typing import TypedDict, Annotated llm = ChatOpenAI(temperature=1.0) class State(TypedDict): messages: Annotated[list, add_messages] graph_builder = StateGraph(State) def chatbot(state: State): # 结合对话历史构造推荐提示 combined_prompt = [ {"role": "system", "content": "你是专业的产品推荐助手,需要结合用户的对话历史来给出精准推荐"}, *state["messages"] ] response = llm.invoke(combined_prompt) return {"messages": [response]} # 注册工具节点到图中 graph_builder.add_node("product_recommender", chatbot) # 设置图的入口节点 graph_builder.set_entry_point("product_recommender") # 编译生成可执行的图 graph = graph_builder.compile() # 测试调用示例 test_result = graph.invoke({"messages": [{"role": "user", "content": "我需要一款适合长时间徒步的登山鞋"}]}) print(test_result["messages"][0].content)
你先检查下自己的代码里有没有这些遗漏的环节,ValueError大多都是这种基础细节没做好导致的,先把这些点补上应该就能解决大部分问题了。
备注:内容来源于stack exchange,提问作者Tech_fusion




