Qwen-Agent源码解析(四):大模型调用工具的流程
1.工具地注册与学习
在使用大模型调用工具前,需要将工具的元信息(包括工具名、描述及参数等)注册到大模型中,这些元信息帮助大模型理解每个工具的功能和使用场景。例如,查询天气的工具:
@register_tool('amap_weather')
class AmapWeather(BaseTool):
description = '获取对应城市的天气数据'
parameters = [{
'name': 'location',
'type': 'string',
'description': '城市/区具体名称,如`北京市海淀区`请描述为`海淀区`',
'required': True
}]
这里 description
帮助大模型理解当前工具的功能,进而帮助大模型判断是否应该调用当前工具。parameters
则是对调用当前工具需要的传参描述,它会帮助大模型理解调用当前工具时,需要生成什么样的参数。
2.工具调用流程
2.1 解析用户请求
用户向大模型发送请求后,大模型会对接收到地请求内容进行解析,并根据其对已注册工具的了解,推测需要调用哪个工具。例如,用户问“今天北京的天气怎么样?”大模型会根据其对工具的注册信息,识别出需要调用 amap_weather
工具,并提取出参数“北京”。
2.2 推理与决策
大模型通过内部推理机制,判断是否要调工具或哪个工具最适合处理当前用户请求,这通常涉及对用户输入的理解和对工具功能的匹配。
2.3 生成调用指令
大模型一旦确定要调用的工具,就会根据解析出的参数及工具调用参数描述来生成调用指令,包括工具名称和参数,这些指令会被发送给工具执行环境,由 Agent 负责具体执行工具。
2.4 工具执行与结果返回
Agent 根据大模型生成的调用指令执行工具,并将结果返回给大模型,大模型进一步处理这些结果,并将其以合适的方式返回给用户。
3.参考资料
- [1] Qwen-Agent