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

LangChain Agent工具能否用硬编码消息?自定义问候工具结果适配问题

LangChain问候工具返回硬编码结果的解决方案

核心方案:启用Tool的直接返回参数

给问候工具添加return_direct=True,让Agent调用该工具后直接返回硬编码响应,跳过大模型的二次生成逻辑。修改后的Tool定义如下:

tools = [
    Tool(
        name="Greetings",
        func=lambda string: Greetings(string),
        description="use for general greetings",
        return_direct=True
    )
]

添加该参数后,只要Agent触发Greetings工具,就会直接返回你预设的硬编码内容,不会让大模型重新生成回复。

辅助优化:修复函数变量名冲突

原Greetings函数存在循环变量与结果变量重名的问题,可能引发逻辑混淆,建议调整变量名并补充未匹配场景的处理:

import re

def Greetings(user_question):
    Generic_statements = ["hello", "hi", "good morning"]  # 替换为你的实际问候词列表
    Farewell = ["bye", "goodbye", "see you"]  # 替换为你的实际告别词列表
    
    if any(re.search(fr'\b{greeting}\b', user_question, re.IGNORECASE) for greeting in Generic_statements):
        return "We are here to help! Let me know if I can help you with anything else."
    elif any(re.search(fr'\b{farewell}\b', user_question, re.IGNORECASE) for farewell in Farewell):
        return "I'm here whenever you need anything. I'll be looking forward to our next conversation. Take care. Goodbye!"
    return ""  # 处理未匹配到问候/告别的情况,避免返回None

进阶方案:自定义输出解析器

如果需要更精细的控制(比如结合其他工具逻辑),可以自定义Agent输出解析器,当检测到调用Greetings工具时直接返回预设结果:

from langchain.agents import AgentOutputParser
from langchain.schema import AgentAction, AgentFinish

class GreetingDirectParser(AgentOutputParser):
    def parse(self, llm_output: str) -> AgentAction | AgentFinish:
        # 先按默认ReAct逻辑解析(此处简化,实际需参考默认解析器实现)
        if "Action: Greetings" in llm_output:
            # 提取用户问题并匹配响应,或直接返回预设内容
            return AgentFinish(
                return_values={"output": Greetings(llm_output.split("Action Input:")[-1].strip())},
                log="Direct return from Greetings tool"
            )
        # 其他工具按原逻辑处理
        from langchain.agents.react.base import ReActSingleInputOutputParser
        return ReActSingleInputOutputParser().parse(llm_output)

# 创建Agent时指定自定义解析器
agent = create_react_agent(
    llm=your_llm_instance,
    tools=tools,
    prompt=your_agent_prompt,
    output_parser=GreetingDirectParser()
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:26