智能体调度逻辑学习笔记
智能体是由调度引擎、LLM(大语言模型)和工具(function call 或 MCP)组成。智能体从接收用户输入到最终输出,是一个调度引擎、LLM、工具交互的循环过程,具体流程如下:用户输入内容给智能体,调度引擎发送内容(本轮用户输入+对话历史上下文)给LLM,LLM意图识别判断,输出回复给用户的内容(本轮任务结束)。或输出调用工具的指令,调度引擎调用工具,工具执行并返回结果,调度引擎将工具调用
智能体是由调度引擎、LLM(大语言模型)和工具(function call 或 MCP)组成。
智能体从接收用户输入到最终输出,是一个调度引擎、LLM、工具交互的循环过程,具体流程如下:
用户输入内容给智能体,调度引擎发送内容(本轮用户输入+对话历史上下文)给LLM,LLM意图识别判断,输出回复给用户的内容(本轮任务结束)。或输出调用工具的指令,调度引擎调用工具,工具执行并返回结果,调度引擎将工具调用结果+上下文发送给LLM,循环往复。
流程图如下:
假设配置一个智能体,配置了三个工具:
- 墨迹天气DayWeather:用户获取国内指定日期的天气。
- 高德地图plan_bicycle:骑行路线规划。
- 高德地图plan_driving:驾驶路线规划。
系统提示词prompt设定为:
# 角色
你是一名强子开发的智能客服。
不同的用户对话输入和不同的上下文,会触发不同次数的工具调用。
无需调用工具的智能体对话
假如输入“你是谁?”,没有任何对话上下文,智能体可能会输出”我是强子开发的智能客服,能够为您提供信息咨询、问题解答等服务。“
此时,由于用户输入的内容被LLM判断为直接可以回答问题,所以没有做工具调用,调度流程为:用户输入 -> 调度器调用LLM -> LLM输出回复内容给调度器 -> 调度器将回复内容输出给用户 -> 智能体回复。
其中,调用LLM的输入如下,由此可以了解到,LLM调用时包含以下信息:
- message:包含系统提示词、用户输入,理论上还包含上下文。由于本次对话没有对话历史,请求消息没有包括上下文。
- model:LLM大模型相关信息,包括模型名称,模型参数等。用于调用LLM API控制输出。
- tools:工具,所有可调用工具的信息,帮助LLM判断是否需要调用工具。
{
"messages":[{"content":"今天是 2026年02月28日 15时05分30秒 星期六 。# 角色\n你是一名强子开发的智能客服。\n\n","role":"system"},{"content":"你是谁?","role":"user"}],
"model":"豆包·1.6·极致速度·250828","model_meta":{"api_mode":0,"frequency_penalty":0,"max_tokens":4096,"parameters":{"max_completion_tokens":"0","thinking_type":"disabled"},"stream":true,"temperature":0.8,"top_p":1},
"tools":[{"function":{"description":"获取国内指定日期的天气,不支持获取国外天气情况。","name":"mojitianqi-DayWeather","parameters":{"description":"","properties":{"city":{"description":"市名,包括直辖市,比如:北京市、天津市、上海市、重庆市","properties":{},"type":"string"},"end_time":{"description":"待查询结束日期","properties":{},"type":"string"},"province":{"description":"省份名,不要包括直辖市(比如:北京、北京市、北京省、天津市、上海市、重庆市)","properties":{},"type":"string"},"start_time":{"description":"待查询开始日期","properties":{},"type":"string"},"towns":{"description":"区/县/镇","properties":{},"type":"string"},"villages":{"description":"乡/村","properties":{},"type":"string"}},"type":"object"}},"type":"function"},{"function":{"description":"驾驶路线规划","name":"gaodedetu-plan_driving","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止返回路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["destination","origin"],"type":"object"}},"type":"function"},{"function":{"description":"骑行路线规划","name":"gaodedetu-plan_bicycle","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止展示路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["origin","destination"],"type":"object"}},"type":"function"}]}
LLM调用输出如下,包含以下信息:
- choices:包含回复信息。注意,回复信息中stop_reason字段值为stop,用于告诉调度器任务结束,可以直接把内容回复给用户。
- model:包含LLM信息。
- usage:包含调用LLM的消费token用量信息。
{"choices":[{"index":0,"message":{"content":"我是强子开发的智能客服,能够为您提供信息咨询、问题解答等服务。","role":"assistant"},"stop_reason":"stop"}],"model":"豆包·1.6·极致速度·250828","usage":{"completion_tokens":21,"completion_tokens_details":{"reasoning_tokens":0},"prompt_tokens":868,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":889}}
调用1次工具的智能体对话
假如我再次输入“我在成都,今天天气如何”,对话上下文仅包含上次询问”你是谁“的对话。智能体会调用墨迹天气DayWeather工具,可能会输出”明天成都的天气为多云,东北风 2 级,气温 10℃到 18℃,湿度 76%。“
用户询问天气的调度流程为:用户输入 -> 调度器调用LLM -> LLM输出调用墨迹天气DayWeather工具的指令给调度器 -> 调度器调用工具墨迹天气DayWeather -> 墨迹天气DayWeather工具执行并将结果返回给调度器 -> 调度器将工具执行结果+用户输入+上下文 调用LLM -LLM输出回复内容给调度器 -> 调度器将回复内容输出给用户 -> 智能体回复。
第一次调用LLM的输入如下:由此可以了解到,LLM调用时包含以下信息:
- message:包含系统提示词、用户输入,对话历史(上下文)。
- model:LLM大模型相关信息,包括模型名称,模型参数等。
- tools:工具,所有可调用工具的信息。
{"messages":[{"content":"今天是 2026年02月28日 15时23分47秒 星期六 。# 角色\n你是一名强子开发的智能客服。\n\n","role":"system"},{"content":"你是谁?","role":"user"},{"content":"我是强子开发的智能客服,能够为您提供信息咨询、问题解答等服务。","role":"assistant"},{"content":"我在成都,明天天气如何?","role":"user"}],"model":"豆包·1.6·极致速度·250828","model_meta":{"api_mode":0,"frequency_penalty":0,"max_tokens":4096,"parameters":{"max_completion_tokens":"0","thinking_type":"disabled"},"stream":true,"temperature":0.8,"top_p":1},"tools":[{"function":{"description":"获取国内指定日期的天气,不支持获取国外天气情况。","name":"mojitianqi-DayWeather","parameters":{"description":"","properties":{"city":{"description":"市名,包括直辖市,比如:北京市、天津市、上海市、重庆市","properties":{},"type":"string"},"end_time":{"description":"待查询结束日期","properties":{},"type":"string"},"province":{"description":"省份名,不要包括直辖市(比如:北京、北京市、北京省、天津市、上海市、重庆市)","properties":{},"type":"string"},"start_time":{"description":"待查询开始日期","properties":{},"type":"string"},"towns":{"description":"区/县/镇","properties":{},"type":"string"},"villages":{"description":"乡/村","properties":{},"type":"string"}},"type":"object"}},"type":"function"},{"function":{"description":"驾驶路线规划","name":"gaodedetu-plan_driving","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止返回路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["destination","origin"],"type":"object"}},"type":"function"},{"function":{"description":"骑行路线规划","name":"gaodedetu-plan_bicycle","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止展示路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["destination","origin"],"type":"object"}},"type":"function"}]}
LLM调用输出如下,包含以下信息:
- choices:包含回复信息。注意,回复信息中stop_reason字段值为tool_calls,用于告诉调度器去调用工具。并且在function参数值内明确了要调用的工具名称和调用参数。
- model:包含LLM信息。
- usage:包含调用LLM的消费token用量信息。
{"choices":[{"index":0,"message":{"content":"","role":"assistant","tool_calls":[{"function":{"arguments":"{\"city\":\"成都市\",\"start_time\":\"2026年03月01日\",\"end_time\":\"2026年03月01日\"}","name":"mojitianqi-DayWeather"}}]},"stop_reason":"tool_calls"}],"model":"豆包·1.6·极致速度·250828","usage":{"completion_tokens":48,"completion_tokens_details":{"reasoning_tokens":0},"prompt_tokens":906,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":954}}
然后调度器调用墨迹天气DayWeather工具,返回天气的查询结果。
{"output":"{\"data\":[{\"wind_dir_day\":\"东北风\",\"wind_level_day\":\"2\",\"temp_high\":18,\"condition\":\"多云\",\"wind_dir_night\":\"东北风\",\"predict_date\":\"2026-03-01\",\"weather_day\":\"多云\",\"wind_level_night\":\"2\",\"temp_low\":10,\"humidity\":76}]}"}
第二次调用LLM的输入如下,相比于上次调用,在message里面增加了一个工具调用和工具调用结果。
{"messages":[{"content":"今天是 2026年02月28日 15时23分47秒 星期六 。# 角色\n你是一名强子开发的智能客服。\n\n","role":"system"},{"content":"你是谁?","role":"user"},{"content":"我是强子开发的智能客服,能够为您提供信息咨询、问题解答等服务。","role":"assistant"},{"content":"我在成都,明天天气如何?","role":"user"},
{"content":"","role":"assistant","tool_calls":[{"function":{"arguments":"{\"city\":\"成都市\",\"start_time\":\"2026年03月01日\",\"end_time\":\"2026年03月01日\"}","name":"mojitianqi-DayWeather"}}]},
{"content":"{\"data\":[{\"wind_dir_day\":\"东北风\",\"wind_level_day\":\"2\",\"temp_high\":18,\"condition\":\"多云\",\"wind_dir_night\":\"东北风\",\"predict_date\":\"2026-03-01\",\"weather_day\":\"多云\",\"wind_level_night\":\"2\",\"temp_low\":10,\"humidity\":76}]}","name":"mojitianqi-DayWeather","role":"tool"}],
"model":"豆包·1.6·极致速度·250828","model_meta":{"api_mode":0,"frequency_penalty":0,"max_tokens":4096,"parameters":{"max_completion_tokens":"0","thinking_type":"disabled"},"stream":true,"temperature":0.8,"top_p":1},"tools":[{"function":{"description":"获取国内指定日期的天气,不支持获取国外天气情况。","name":"mojitianqi-DayWeather","parameters":{"description":"","properties":{"city":{"description":"市名,包括直辖市,比如:北京市、天津市、上海市、重庆市","properties":{},"type":"string"},"end_time":{"description":"待查询结束日期","properties":{},"type":"string"},"province":{"description":"省份名,不要包括直辖市(比如:北京、北京市、北京省、天津市、上海市、重庆市)","properties":{},"type":"string"},"start_time":{"description":"待查询开始日期","properties":{},"type":"string"},"towns":{"description":"区/县/镇","properties":{},"type":"string"},"villages":{"description":"乡/村","properties":{},"type":"string"}},"type":"object"}},"type":"function"},{"function":{"description":"驾驶路线规划","name":"gaodedetu-plan_driving","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止返回路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["destination","origin"],"type":"object"}},"type":"function"},{"function":{"description":"骑行路线规划","name":"gaodedetu-plan_bicycle","parameters":{"description":"","properties":{"destination":{"description":"目标地点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"},"disable_paths":{"description":"是否禁止展示路径详情, default value is false","properties":{},"type":"boolean"},"origin":{"description":"起点。可以是关键词;也可以是经纬度,经纬度之间用英文逗号分隔","properties":{},"type":"string"}},"required":["destination","origin"],"type":"object"}},"type":"function"}]}
调用多次工具的智能体对话
假设我开启一个全新的对话,即清除上下文,输入”我在成都南站,明天要去成都动物园。如果明天下雨,请帮我规划一下驾驶路线。如果明天不下雨,给我规划一下骑行路线。“。智能体会依次调用墨迹天气DayWeather工具、高德地图plan_driving工具,最后可能输出:
根据明天(2026-03-01)成都的天气情况(多云,无降雨),以下是为您规划的出行方案:
### **一、天气情况**
- **日期**:2026-03-01
- **天气**:多云,气温 10℃~18℃,东北风 2 级,湿度 76%
- **结论**:无降雨,适合骑行。
### **二、骑行路线规划**
#### **起点**:成都南站(天府大道北段火车南站地铁站 L 口)
#### **终点**:成都动物园(昭觉寺南路 234 号)
#### **路线详情**:
1. **沿天仁北二街**向西骑行 105 米,**左转**进入天仁北二街。
2. **沿天仁北二街**骑行 474 米,继续**向左后方行驶**。
3. **向北骑行 381 米**,**右转**进入下一路段。
4. **向东骑行 574 米**,**向右前方行驶**至科华南路。
5. **沿科华南路**骑行 19 米 **左转**,向东北骑行 43 米后 **左转**进入科华中路辅路。
6. **沿科华中路辅路**骑行 4401 米,**左转**进入锦兴路。
7. **沿锦兴路**骑行 774 米 **右转**,向东北骑行 428 米至大业路。
8. **沿大业路**向东北骑行 302 米后 **右转**,**向北骑行 729 米**。
9. **沿三多里**向东骑行 124 米 **左转**,进入驷马桥街。
10. **沿驷马桥街**向东北骑行 5962 米 **右转**,向东骑行 158 米 **左转**,再向东北骑行 15 米 **右转**。
11. **向东骑行 72 米** **左转**,**向东骑行 177 米** **右转**,**向南骑行 135 米** **右转**,**向西骑行 64 米**到达终点。
#### **总览**:
- **距离**:约 14.9 公里
- **耗时**:约 84.6 分钟(含转弯和等待时间)
- **特点**:全程以城市主干道和辅路为主,部分路段需注意交通信号灯和行人干扰。
### **三、注意事项**
1. 建议使用共享单车或自备自行车,骑行前检查车辆刹车和轮胎。
2. 途中可搭配导航 App(如高德地图)实时调整路线,避免走错路。
3. 多云天气气温适中,建议携带防晒用品和饮用水。
如需驾驶路线(若临时遇雨或偏好驾驶),可直接告知调整为驾车方案。祝您出行顺利!
本地智能体的调度流程如下:用户输入 -> 调度器调用LLM -> LLM输出调用墨迹天气DayWeather工具的指令给调度器 -> 调度器调用工具墨迹天气DayWeather -> 墨迹天气DayWeather工具执行并将结果返回给调度器 -> 调度器将天气查询结果+用户输入+上下文 调用LLM -> LLM输出调用高德地图plan_bicycle工具的指令给调度器(因为根据天气结果判断明天下雨,所以是调用plan_bicycle,而不是plan_driving)-> 调度器调用工具高德地图plan_bicycle ->高德地图plan_bicycle工具执行并将结果返回给调度器 -> 调度器将天气查询结果 + 骑行路线查询结果 + 用户输入 + 上下文 调用LLM -> LLM输出回复内容给调度器 -> 调度器将回复内容输出给用户 -> 智能体进行最终回复。
更多推荐



所有评论(0)