You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动