趋近智
为了让LLM智能体有效使用其可用的工具,它首先需要一种机制来判断哪个工具适合当前任务或源自用户查询或更大目标的子任务。这个选择过程并非简单查找,它涉及LLM的推理能力,并由提供的每个工具的信息引导。使LLM智能体做出这些重要决定的常见机制有所呈现。
工具选择的核心是LLM理解用户输入意图并将其与可用工具的功能描述进行匹配的能力。正如第一章(“LLM智能体工具的根本”)中所述,您的工具描述的清晰度和准确性在此非常关键。LLM分析查询,并将其理解与工具描述进行比较,以找到最匹配的。
一种直接的工具选择方法是,在提示词中,将可用工具的信息直接提供给LLM,作为其上下文窗口的一部分。提示词通常包含用户查询以及工具列表,每个工具都包含名称、功能描述和接受的参数。
考虑一个可使用天气工具和计算器的智能体。提示词的结构可能如下:
You are a helpful assistant. You have access to the following tools:
[
{
"name": "get_current_weather",
"description": "获取给定城市的当前天气。",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string", "description": "城市名称,例如:伦敦" }
},
"required": ["location"]
}
},
{
"name": "evaluate_expression",
"description": "计算数学表达式的结果。",
"parameters": {
"type": "object",
"properties": {
"expression": { "type": "string", "description": "数学表达式,例如:“10 * 4 / 2”" }
},
"required": ["expression"]
}
}
]
User query: What is 5 plus 12?
Assistant's tool choice:
LLM需要分析“User query”并填写“Assistant's tool choice”部分,理想情况下,输出应是结构化的,明确指定所选工具及其参数:
{
"tool_name": "evaluate_expression",
"arguments": { "expression": "5 + 12" }
}
为了提高LLM在此选择过程中的准确性,特别是在工具集或查询更复杂的情况下,可以采用少量示例提示。这需要将一些查询及其正确工具选择的示例直接添加到当前查询之前的提示词中。这些示例作为示范,指导LLM的推理。
许多现代LLM提供专门模式,通常称为“函数调用”或“工具调用”。这些模式旨在使工具集成更可靠、更明确。LLM不再生成需要您的应用代码解析的文本来识别工具调用,而是直接输出一个结构化对象(通常是JSON),明确表明其使用特定工具的意图,并提供所需参数。
使用此功能时,您的应用通常会:
这种方法减少了模糊性,并降低了从自然语言响应中解析工具调用的脆弱性。
ReAct(推理与行动)模式为智能体迭代地选择和使用工具来完成目标提供了一个强大的框架。与其说是一种单一的选择机制,不如说是一个操作循环,指导智能体的行为,包括工具选择。该循环通常包括:
use_tool(search_web, query="法国首都")。下图说明了此迭代循环。
ReAct循环:LLM迭代地思考、行动(通常通过选择和使用工具)、观察结果,然后再次思考,直至达成目标。
在ReAct框架中,工具选择是一个动态过程。LLM不断评估哪个工具(如果有的话)最适合推进其当前子目标,基于其不断演进的推理状态和先前行动的观察结果。
当智能体可用工具数量众多,或者某些“工具”本身就是复杂的子智能体或链时,路由器架构会很有用。在这种设置中,最初的LLM调用充当“路由器”。其主要职责并非直接执行任务,而是确定哪个专业工具、子智能体或处理链最适合处理用户查询或当前子任务。
路由器LLM通常会获得下游工具或链的高级描述。根据输入查询,它会选择最合适的路径。例如,像“巴黎天气如何?”这样的查询可能会被路由到天气工具,而“计算180的25%”则会路由到计算器工具或数学处理链。
路由器LLM分析传入查询,并将其定向到一组选项中最适合的专业工具或处理链。
这种方法通过分解决策过程来帮助管理复杂性,并且通过不要求单个LLM实例了解每个可能工具的微小细节(如果某些工具高度专业化),从而提高效率。
任何智能体驱动的工具选择机制的有效性取决于几个因素:
通过理解这些机制和考量,您可以为您的LLM智能体设计更有效的策略来选择正确的工具,这是协调它们完成复杂任务的第一步。接下来的章节将在此根本上继续讨论如何管理工具调用序列。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造