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

绑定工具后Llama3.2在LangGraph中无法响应普通文本输入的解决方法

问题分析

绑定工具后Llama3.2对所有输入都触发工具调用,哪怕是无需工具的普通问候,这并非LangChain类的问题,而是模型对工具调用的触发逻辑缺少明确引导——默认绑定工具后,模型没有清晰的判断标准,导致误触发工具调用。

解决方案

1. 添加系统提示词明确工具调用边界

在调用模型前加入系统消息,明确告知模型仅在需要用工具解决问题时才调用,否则直接用自然语言回复:

from langchain_ollama import ChatOllama
from langgraph.graph import MessagesState
from langgraph.graph import StateGraph, START, END
from langchain_core.messages import HumanMessage, SystemMessage


def multiply(a: int, b: int) -> int:
    return a * b


def tool_calling_llm(state: MessagesState):
    # 加入明确的系统引导提示
    system_msg = SystemMessage(content="你是助手,仅当用户问题需要计算乘法时调用multiply工具,其他场景直接用自然语言回复。")
    messages = [system_msg] + state["messages"]
    return {"messages": [llm_with_tools.invoke(messages)]}


llm = ChatOllama(model="llama3.2")
llm_with_tools = llm.bind_tools([multiply])

builder = StateGraph(MessagesState)
builder.add_node("tool_calling_llm", tool_calling_llm)
builder.add_edge(START, "tool_calling_llm")
builder.add_edge("tool_calling_llm", END)
graph = builder.compile()

messages = graph.invoke({"messages": HumanMessage(content="hello")})
print(messages)

2. 显式配置工具调用策略(可选)

在bind_tools时显式设置tool_choice="auto",强化模型自主判断逻辑:

llm_with_tools = llm.bind_tools([multiply], tool_choice="auto")

3. 完善LangGraph工具调用流程(进阶)

如果需要处理工具返回结果,可添加工具执行节点和条件分支:

  • 新增工具执行节点,处理模型的工具调用请求
  • 添加条件判断,决定模型是继续调用工具还是直接回复用户

这一步是完整工具链的优化,解决当前误触发问题前两步已足够。

原理说明

Llama3.2这类开源模型对工具调用的prompt依赖性比闭源模型更强,默认绑定工具后没有明确的触发规则,容易出现误调用。通过系统提示词明确边界,能让模型清晰判断何时调用工具、何时直接回复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:11:18