Microsoft Agent Framework 智能体调用工具

发布时间:2026/7/2 3:21:56
Microsoft Agent Framework 智能体调用工具 篇不依赖Azure资源仍使用可以本地安装和部署的资源。直接上代码在上一篇代码的基础之上我们加入了一个普通的python方法来帮助智能体获取当前时间是的再牛的智能体也需要类似这样的一个方法来获取当前的时间。然后将其注册给智能体让智能体根据用户的问题来选择调用哪个工具来辅助回答。from agent_framework import Agent from agent_framework_foundry_local import FoundryLocalClient from datetime import datetime import asyncio # 1. 创建模型客户端 client FoundryLocalClient( modelqwen3-0.6b ) # 2. 定义工具函数 def get_current_time() - str: return datetime.now().strftime(%Y-%m-%d %H:%M:%S) # 3. 创建 Agent agent Agent( namemy-first-agent, clientclient, tools[get_current_time] ) # 4. 主函数 async def main(): response await agent.run(今天的日期。, options{max_tokens: 5000}) print(Agent 回复, response.text) # 5. 运行程序 asyncio.run(main())笔记模型客户端FoundryLocalClient本地模型客户端用于连接本地部署的大模型参数model指定使用的模型名称如 qwen3-0.6b同上一篇这里用的还是本地的Foundry模型。模型是我能找到最小版本的。需要留意如果自己下载别的模型尝试一定要看模型是否支持tool用命令看model list的话看同时支持chat和tool的模型。工具函数get_current_time()获取当前时间的工具函数返回值格式化的当前时间字符串格式为 YYYY-MM-DD HH:MM:SS跟LangChain的工具函数基本一致。所以可以把大多数的python方法直接作为智能体的工具来调用。AgentAgent同LangChain的智能体这是智能体核心类用于协调模型和工具的交互参数nameAgent 名称用于标识和管理client模型客户端用于与大模型交互tools工具列表Agent 可以使用的工具函数除了name这个属性其它部分跟LangChain的Agent基本一致。运行流程无论是MAF还是LangChaina套路都是一样的基本都遵循以下流程初始化导入必要的模块和创建模型客户端工具注册定义并注册get_current_time()工具函数Agent 创建创建 Agent 实例并配置工具执行运行主函数发送用户问题并获取响应如果用户的问题智能体判断需要调用工具则去调用工具。输出打印 Agent 的回复结果关键技术点使用async def定义异步函数配合await等待异步操作完成然后使用asyncio.run()运行异步主函数。工具函数是 Agent 可以调用的外部功能就是我们常说的让智能体把手伸出来干活。工具函数需要有明确的返回类型注解。Agent 会根据用户问题自动选择合适的工具但不同模型以及不同模型参数都会有不同的结果。通过agent.run()方法向模型发送请求Agent 的 run 方法是异步方法需要使用 await 关键字来调用。所以main函数需要定义为异步函数。可以通过options参数配置模型行为如max_tokens控制生成文本的最大长度。如果不设置使用默认值的话此篇的输出会被截断。示例代码的输出参考当运行代码时预期输出类似如下。请留意有时代码的输出可能会不一样设置失败。好的用户问的是今天的日期。首先我需要确认用户需要的是当前的日期还是某个特定日期。 接下来我需要检查可用的工具。用户提供的工具中有一个叫做get_current_time的函数。这个函数的作用就是获取当前的时间包括日期信息。 所以用户的问题“今天的日期”可以转化为调用get_current_time函数获取当前的时间包括日期信息。因此正确的做法是调用这个工具函数然后将返回的日期信息返回给用户。 tool_call {name: get_current_time, arguments: {}} /tool_call 好的用户问的是今天的日期。我需要先确认当前的日期并返回给用户。 首先用户可能需要的日期信息比如今天的日期。如果系统已经知道当前的日期那么可以直接返回。 但根据用户提供的工具其中有一个函数叫做get_current_time其描述为获取当前的时间包括日期信息。 因此正确的做法是调用这个函数然后返回结果即今天的日期。 因此用户的问题可以转化为调用这个工具函数然后将返回的日期信息返回给用户。 综上所述正确的做法是调用这个工具函数获取当前的时间包括日期信息。然后将返回的日期信息返回给用户。 2026-04-21 23:11:46总结总体来说对比LangChain的工具调用大部分的套路都是相同的。但在实际操作中还是遇到了很多奇怪的问题原因个人分析可能是模型类型的也可能是模型参数版本的受限于资源太少所以想解决有一定的难度所以本篇只用了一个简单的示例来对比跟LangChain的区别。