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

如何解决初始化ChatOpenAI时的'tuple'对象无'invoke'属性错误

问题修复方案

错误根源

你遇到的AttributeError: 'tuple' object has no attribute 'invoke'错误,是因为定义llm变量时末尾多了一个英文逗号,Python会自动将该表达式的结果包装成元组(tuple),而非预期的ChatOpenAI实例,自然无法调用.invoke()方法。

另外代码中还有一处缩进错误:workflow = StateGraph(State)被错误缩进在summarization_node函数内部,导致后续代码无法识别workflow变量。

具体修复步骤

  1. 修正llm变量定义
    找到这一行代码:
llm = ChatOpenAI(model="openai/gpt-4o-mini",openai_api_base="https://openrouter.ai/api/v1", temperature=0),

去掉末尾的逗号,修改为:

llm = ChatOpenAI(model="openai/gpt-4o-mini",openai_api_base="https://openrouter.ai/api/v1", temperature=0)
  1. 修正workflow的缩进
    将summarization_node函数内的workflow = StateGraph(State)移到函数外部,确保它和后续的workflow.add_node等代码处于同一缩进层级。修正后的代码片段如下:
def summarization_node(state: State):
    ''' Summarize the text in one short sentence '''
    prompt = PromptTemplate(
        input_variables=["text"],
        template="Summarize the following text in one short sentence.\n\nText:{text}\n\nSummary:"
    )
    message = HumanMessage(content=prompt.format(text=state["text"]))
    summary = llm.invoke([message]).content.strip()
    return {"summary": summary}

# 把这一行移出函数,放在这里
workflow = StateGraph(State)

# Add nodes to the graph
workflow.add_node("classification_node", classification_node)
workflow.add_node("entity_extraction", entity_extraction_node)
workflow.add_node("summarization", summarization_node)
...

验证修复

完成上述修改后,重新运行代码,llm会成为正确的ChatOpenAI实例,workflow也能被正常识别,即可成功调用.invoke()方法并执行整个LangGraph工作流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:04:51