1. LangChain提示模板中的关键变量解析
在LangChain框架中构建智能体(Agent)时,提示模板(Prompt Template)的设计直接影响着智能体的交互质量。其中{tool_names}和{agent_scratchpad}是两个具有特殊功能的占位符变量,它们在动态生成提示词和维持对话上下文方面起着关键作用。
我最初使用这两个变量时,曾因为理解不透彻导致智能体频繁出现"工具选择混乱"和"上下文丢失"的问题。经过多次调试后才发现,正确使用这些变量需要掌握三个要点:
- 变量注入时机
- 内容格式化规则
- 与思考链(Chain of Thought)的配合方式
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. {tool_names}的运作机制与应用场景
2.1 核心功能解析
{tool_names}是一个自动枚举变量,在执行时会被替换为当前智能体可用工具的名称列表。不同于普通字符串替换,它的特殊之处在于:
- 动态生成特性:自动获取
agent.tools属性中的所有工具名称 - 标准化格式:默认使用逗号分隔的英文列举格式(如"search, calculator, database")
- 多语言适配:可通过
output_parser调整输出语言风格
在实际项目中,我推荐这样声明工具名称:
python复制tools = [
Tool(
name="网络搜索",
func=search.run,
description="当需要查询实时信息时使用"
),
# 其他工具...
]
2.2 高级使用技巧
通过修改output_parser可以实现更符合中文习惯的枚举方式:
python复制from langchain.agents import AgentOutputParser
class ChineseOutputParser(AgentOutputParser):
def parse(self, text):
# 将默认的英文逗号分隔改为中文顿号
tool_list = text.split(', ')
return '、'.join(too
