当前位置: 首页 > news >正文

智能体 MCP 调用流

image

 

"""
简单的智能体 Demo
使用阿里千问判断并调用对应的 MCP 工具
"""
import os
from openai import OpenAI# 阿里千问 API 配置(兼容 OpenAI 格式)
client = OpenAI(api_key=os.getenv("DASHSCOPE_API_KEY", "sk-xxxxxxxxxxxxxxxxxxxx"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)# 定义工具(模拟 MCP 工具)
TOOLS = [{"type": "function","function": {"name": "get_weather","description": "获取指定城市的天气信息","parameters": {"type": "object","properties": {"city": {"type": "string", "description": "城市名称,如:北京、上海"}},"required": ["city"]}}},{"type": "function","function": {"name": "get_time","description": "获取当前时间","parameters": {"type": "object", "properties": {}}}},{"type": "function","function": {"name": "calculate","description": "进行数学计算","parameters": {"type": "object","properties": {"expression": {"type": "string", "description": "数学表达式,如:1+2*3"}},"required": ["expression"]}}}
]# 工具实现(写死的数据)
def get_weather(city: str) -> str:weather_data = {"北京": "晴,5°C,北风3级","上海": "多云,12°C,东风2级","广州": "阴,20°C,南风1级",}return weather_data.get(city, f"暂不支持查询 {city} 的天气")def get_time() -> str:from datetime import datetimereturn datetime.now().strftime("%Y-%m-%d %H:%M:%S")def calculate(expression: str) -> str:try:return str(eval(expression))except:return "计算出错"# 工具调用映射
TOOL_FUNCTIONS = {"get_weather": get_weather,"get_time": get_time,"calculate": calculate,
}def run_agent(user_input: str):"""运行智能体"""print(f"\n用户: {user_input}")# 1. 调用千问,让它判断使用哪个工具response = client.chat.completions.create(model="qwen-plus",messages=[{"role": "system", "content": "你是一个智能助手,根据用户需求调用合适的工具。"},{"role": "user", "content": user_input}],tools=TOOLS,tool_choice="auto")msg = response.choices[0].message# 2. 如果模型决定调用工具if msg.tool_calls:tool_call = msg.tool_calls[0]func_name = tool_call.function.nameargs = eval(tool_call.function.arguments) if tool_call.function.arguments else {}print(f"智能体决定调用: {func_name}({args})")# 3. 执行工具result = TOOL_FUNCTIONS[func_name](**args)print(f"工具返回: {result}")# 4. 把结果返回给模型生成最终回复final_response = client.chat.completions.create(model="qwen-plus",messages=[{"role": "system", "content": "你是一个智能助手"},{"role": "user", "content": user_input},msg,{"role": "tool", "tool_call_id": tool_call.id, "content": result}])print(f"智能体: {final_response.choices[0].message.content}")else:# 不需要工具,直接回复print(f"智能体: {msg.content}")if __name__ == "__main__":# 测试几个场景run_agent("北京天气怎么样?")run_agent("现在几点了?")run_agent("帮我算一下 123 * 456")run_agent("你好")

  结果:

用户: 北京天气怎么样?
智能体决定调用: get_weather({'city': '北京'})
工具返回: 晴,5°C,北风3级
智能体: 今天北京天气晴朗,气温为5°C,有北风3级。建议外出时注意保暖,适当增添衣物。用户: 现在几点了?
智能体决定调用: get_time({})
工具返回: 2025-12-30 11:27:43
智能体: 现在是2025年12月30日,星期二,上午11点27分。用户: 帮我算一下 123 * 456
智能体决定调用: calculate({'expression': '123*456'})
工具返回: 56088
智能体: 123 × 456 = 56088用户: 你好
智能体: 你好!有什么我可以帮你的吗?

  

http://www.jsqmd.com/news/170366/

相关文章:

  • 骑马修栅栏(fence)(信息学奥赛一本通- P1375)
  • Flipper Zero硬件维护实战手册:从入门到精通的完整指南
  • 适配器工厂怎么选择?2025插墙式适配器工厂推荐 - 栗子测评
  • 2025年能圆满处理贪污贿赂刑事的律师推荐,可靠的贪污贿赂刑事辩护律师全解析 - 工业品牌热点
  • JMeter Prometheus插件终极指南:快速构建实时性能监控体系
  • WeKnora智能知识平台极速部署手册:从小白到专家的完整指南
  • 2025年热门的气动点胶阀/顶针式点胶阀厂家最新实力排行 - 品牌宣传支持者
  • DLSS-Enabler终极指南:免费解锁非NVIDIA显卡的DLSS魔法
  • 162_尚硅谷_数组排序的基本介绍
  • AlphaFold蛋白质结构预测完全手册:从序列到三维模型的终极指南
  • 2025井盖密码锁厂家推荐!实力靠谱品牌全名单揭晓 - 栗子测评
  • 2025年深圳翻译机构哪家好?商务翻译生产/服务公司专业排名测评推荐 - myqiye
  • 2025单多袋式过滤机器厂家推荐 南京博滤产能领先专利众多服务优质 - 爱采购寻源宝典
  • Volatility3内存取证终极指南:从入门到实战精通
  • Git diff比较两个TensorFlow模型配置文件差异
  • 2025年终厂房园区推荐:TOP5排名揭晓,基于开发规模与入驻企业数深度对比。 - 品牌推荐
  • 液动/智能拍门厂家推荐哪家好?2025实力品牌TOP10揭晓 - 栗子测评
  • 详解TensorFlow-v2.9对CUDA版本的要求及GPU驱动适配策略
  • 2025年热门的B1级橡塑保温板实力厂家TOP推荐榜 - 品牌宣传支持者
  • HTML details标签折叠TensorFlow复杂配置项
  • Flipper Zero硬件改造完全指南:12个提升性能的创新方案
  • 2025办公室自助咖啡机连锁品牌、咖啡馆、西餐厅、酒店大堂、公司茶水间商用咖啡机推荐 - 品牌2026
  • 小程序开发公司如何选择,结合行业特性的实操建议与避坑提示律所小程序/教育小程序/课程小程序/硬件小程序开发公司推荐 - 品牌2026
  • Text-To-Video-AI:用AI技术轻松实现文字到视频的智能转换
  • 戴森球计划工厂蓝图优化终极方案:如何解决5大常见生产瓶颈问题
  • Manuskript 开源写作工具:从零开始打造完美作品的终极指南 ✍️
  • 2025年热门的圆形FVD防火阀/BT4防爆防火阀厂家推荐及选择参考 - 品牌宣传支持者
  • 3步搭建Claude Code Router零停机部署体系
  • 如何快速构建MIMIC-III临床数据集基准:面向研究者的完整指南
  • 前三章Js-20250415-8648基于Spring Boot的医疗器材供销管理系统的设计与实现