Agent项目
用户一句话进来主控用 Prompt 做意图识别和查询改写再按意图把请求分发天气 / 票务查询 / 订票等A2A Agent。查询类 Agent 做 NL2SQL通过内网 MCP 查本地 MySQL天气数据由定时任务从和风同步进库实现一次写入多次查询避免每次外网调用的成本和延迟。订票会先 A2A 查余票再调订票 MCP。整体是主控编排、领域 Agent 推理、MCP 统一数据访问。技术栈是 LangChain Qwen、python-a2a、FastMCP、MySQL。SmartVoyage 是一个旅游多智能体项目。用户做攻略时要同时关注天气、交通、票务、景点等信息比较分散所以我们做了一站式自然语言入口用户一句话提问系统自动识别意图并完成查询或订票。整体链路是用户从前端或命令行进入后主控用 Prompt 加大模型做意图识别和查询改写结合对话历史输出意图、改写后的问题和必要时的追问。意图支持天气、机票、火车、演唱会、订票、景点等也可以多意图一起处理。然后按意图分发天气、查票、订票分别打到对应的 A2A Agent景点推荐目前由主控侧大模型直接生成。Agent 通过 Task 通信查票和天气结果回来后主控还会再做一次结果润色再返回给用户。以天气为例讲核心实现。天气 Agent 收到改写后的问题后做 NL2SQL把完整表结构写进 Prompt生成可执行的 SELECT信息不全就追问。生成 SQL 后Agent 作为 MCP 客户端调用天气 MCP把 SQL 当工具参数传入MCP 连本地 MySQL 执行查询并按约定返回状态和数据。之所以不让 Agent 每次直接调和风一是要把数据访问做成独立可复用的 MCP 服务和推理解耦二是第三方按次计费、走外网贵且慢。我们用定时任务按官方 API 拉取天气、解析入库查询时走内网 MCP 查本地库实现一次写入、多次查询。实时性靠调度频率平衡频率过高会压库。票务查询和天气同构也是 Agent 做 NL2SQL再经票务 MCP 查本地票表。订票更体现 Agent 协作订票 Agent 先通过 A2A 调查票 Agent 确认余票有票再调订票 MCP 完成下单。技术栈主要是 LangChain 加通义、python-a2a、FastMCP 和 MySQL。这套「主控编排、领域 Agent 推理、MCP 统一数据访问、本地库承载高频查询」的模式也可以迁移到征信等场景换的是协议和合规细节主链路一致。流程总览用户输入 → ① 意图识别查询改写 → ② 按意图路由到 A2A Agent → ③ AgentNL2SQL → ④ Agent调用 MCP传 SQL → ⑤ MCP查 MySQL 返回 JSON → ⑥ 主控结果润色输出 旁路定时任务同步和风数据 → MySQL1. 用户入口 ➕️ 2. 主控: 意图识别 查询改写2. 主控意图识别 查询改写总述主控不是 Router 组件而是 Prompt LLMintent_prompt → intent_agent。输入用户问题 最近几轮对话历史 当前日期。输出严格 JSON三类信息① intents如 weather、train、flight、concert、order、attraction支持多意图组合② user_queries按意图改写后的明确问题把「明天」补成日期、把缺省城市从上下文补全③ follow_up_message意图不清时追问超范围时直接回复引导语分支处理① out_of_scope → 直接用 follow_up 回复② 有追问 → 先问清再往下走③ 有效意图 → 进入分发口述要点主控只负责「看懂要干什么、把问题说清楚」不负责查库查库在子 Agent MCP。用户一句话进来系统启动时会①创建 LLM 实例②初始化AgentNetwork需要智能选型时多个Agent可注册进AgentNetwork通过network.add(name, url)将AgentServer登记进AgentNetwork。意图识别两种方案Router或提示词。方式一当使用AIAgentRouter时Network再按url地址发现各端的AgentCard/Skill交给AIAgentRouterRouter基于用户查询对照network中各Agent的Card/Skill能力描述使用LLM做意图匹配返回目标agent名称及置信度confidence方式二提示词方案意图识别我们没用单独的Router组件而是Prompt LLM在提示词里写清有哪些意图、如何改写、如何输出JSON再把用户问题和历史喂给模型(这里的「历史」是主控自己维护的一串对话文本不是数据库里的日志)由模型返回意图列表intents意图列表“intents”: [“weather”, “train”]是由LLM 吐出的 JSON 解析后得到的例如{intents:[weather,train],user_queries:{weather:明天上海的天气,train:明天上海到北京的高铁},follow_up_message:}主控再根据这个JSON去调对应的A2A Agent主控拿到列表后用普通 if/elif 做映射再agent.send_task_async(task)远程发Taskforintentinintents:ifintentweather:agent_nameWeatherQueryAssistantelifintentin[flight,train,concert]: agent_nameTicketQueryAssistantelifintentorder:agent_nameTicketOrderAssistant...elifagent_name: query_struser_queries.get(intent,{})agentagent_network.get_agent(agent_name)... taskTask(...)raw_responseasyncio.run(agent.send_task_async(task))JSON 里的 intentweather、主控映射到WeatherQueryAssistant 5005 intenttrain/flight/concert、主控映射到TicketQueryAssistant 5006 intentorder、主控映射到TicketOrderAssistant 5007同时用 user_queries[intent] 当该 Agent 的输入改写后的问题不是原始整句一股脑丢过去。即主控不是 Router 组件而是 Prompt LLM用一段写好的提示词模板把用户问题交给大模型让模型自己判断意图并输出结构化结果——不是框架里一个叫 Router 的现成组件在做路由拿到名字后再通过get_agent(name).send_task_async(task) 取Client发Task意图识别只产出意图列表intents、改写后的问题user_queries、追问话术或超范围时的直接回复(即可选的追问/兜底回复)follow_up_message(只有第三项为空且意图有效时才进入分发即按intents映射并调用对应Agent或景点LLM主控用 for intent in intents 查表映射到agent_name即Agent名字再raw_responseasyncio.run(network.get_agent(agent_name).send_task_async(task))通过AgentNetwork 把 Task 发到对应端口的 A2A 服务去执行。本质是按这个 URL 远程调用已在跑的服务。启动顺序一般是先起 MCP8001–8003→再起三个 Agent5005–5007→最后起 main.py / app.py只跑主控、不跑 Agent分发时会连不上。agent来源a2a_server/下 weather_server.py/ticket_server.py/order_server.py —WeatherQueryServer(A2AServer)— run_server(…, port5005)每个服务里有 AgentCard / AgentSkill并实现 handle_taskNL2SQL、调 MCP 等MCP来源mcp_server/下 mcp_weather_server.py/mcp_ticket_server.py/mcp_order_server.py — create_weather_mcp_server()方式二Prompt 写给大模型的说明书规则、意图列表、输出格式LLM 真正做判断的模型如 qwen-plusPrompt LLM 把说明书和用户问题拼在一起让模型「读完后按格式回答」— 本项目里用来做意图识别。main.pychain SmartVoyagePrompts.intent_prompt() | llm这是 LangChain 的写法① intent_prompt()一段带占位符的模板规则 {query} / {conversation_history} / {current_date}② | llm模板填好后交给大模型③ chain.invoke({…})得到模型返回的 JSON 字符串( Prompt要求尽量输出为JSON)再 json.loads 解析出 intents、user_queries分类逻辑写在 Prompt 里由 LLM 执行而不是 if/else 或独立 Router 模块。Q为什么要进行查询改写改写发生在意图识别 Prompt结合 conversation_history结果放在user_queries谁用分发时 query_str user_queries.get(intent)再放进 Task 发给对应 Agent主控改写不是替用户回答Prompt 也写了不要答题、不改原意只补上下文让问题更明确用户说话依赖上下文、经常省略Agent 办事需要明确的城市、日期、出发到达等。查询改写 在分发前把省略补全让每个 Agent 拿到「可执行」的问题。Q为什么要拼进去再解析回来因为大模型接口本质是 chat completionin text → out text即LLM 只吃文本、也只吐文本主控后面的代码却要拿结构化字段intents列表、user_queries字典去做 if intent “weather” 这种分支。中间必须有一次「约定格式的文本 ↔ 程序对象」转换。 Prompt是给模型看的说明书模型只认文本 → 所以要把问题「拼」进 Prompt 送进去模型只能回文字我们约定它回 JSON 这种文字模型按约定吐 JSON 文本字符串{intents: [weather], user_queries: {weather: 明天上海天气}, follow_up_message: }不能对字符串写for intent in intents后面代码需要按字段路由(即要拿 结构化字段intents 列表、user_queries 字典去做if intentweather这种分支) → 所以要把模型吐出的JSON字符串使用json.loads 转成字典(如下)这时才能当程序数据用再「解析」成 intents、user_queriesintent_outputjson.loads(intent_response)# 变成真正的 dict# {# intents: [weather],# user_queries: {weather: 明天上海天气},# follow_up_message: # }intentsintent_output.get(intents,[])# → [weather]user_queriesintent_output.get(user_queries,{})# → {weather: 明天上海天气}主控才能按意图分发即主控读字典里的 intents决定调哪个 Agent如果中间不做解析主控拿着一串字没法可靠地if intent weather。所以「拼进去再解析回来」不是浪费步骤而是 文本接口 → 程序可用数据 的必要转换。QRouter和提示词这两种意图识别方案的区别3. 按意图分发先调 intent_agent(prompt)得到 intents、user_queries、follow_up_message若超范围或有追问 → 直接返回不进循环否则进入 else执行 for intent in intents: ——按意图分发就在这里对每个 intent 循环处理如下循环内再做映射 Agent 名 → get_agent → send_task_async → 可选 summarize → 收集到 responses最后 “\n\n”.join(responses) 合并返回。一句话分发发生在意图识别之后、调用各 A2A Agent 之前对 Agent 类意图取出该意图改写后的 query_str拼一点历史封装成 A2A 的 Message Tasksend_task_async 发给对应 Agent拿回 artifacts 或失败信息。天气 / 票务查询回来后主控还会再过一层 总结 Promptsummarize_weather_prompt / summarize_ticket_prompt把结构化结果润色成自然语言订票结果一般直接展示。多意图时把多段回复用空行拼在一起返回用户

相关新闻

【AI问数】多智能体协同架构:行业首创的AI问数大脑

【AI问数】多智能体协同架构:行业首创的AI问数大脑

鲲溟智能 AI智能问数系列 第15篇 | 2026-07-12 10 大智能体 Multi-Agent 协同架构 端到端 自动化 99.97% 可用性 鲲溟智能首创10大智能体协同架构,是AI问数的大脑。每个Agent专精一个领域,通过Orchestrator智能编排,实现复杂任务的端到…

2026/7/31 23:18:23 阅读更多 →
【AI问数】五引擎混合查询架构:突破NL2SQL的场景局限

【AI问数】五引擎混合查询架构:突破NL2SQL的场景局限

鲲溟智能 AI智能问数系列 第14篇 | 2026-07-12 5 引擎混合 100% 场景覆盖 95% 综合准确率 <3秒 响应时间 五引擎混合查询是AI问数的场景扩展器&#xff1a;NL2SQL(70%)NL2API(10%)NL2DSL(8%)NL2Chart(7%)NL2Report(5%)。智能路由根据用户问题自动选择最优引擎&#xf…

2026/8/1 5:11:27 阅读更多 →
零知识证明(ZKP):当数据“可用不可得”成为现实

零知识证明(ZKP):当数据“可用不可得”成为现实

目录 引言 一、什么是“数据可用不可得”&#xff1f; 1.1 传统数据共享的困境 1.2 ZKP如何打破这一困境 二、ZKP技术栈&#xff1a;从理论到工程 2.1 主流ZKP方案对比 2.2 Go语言的ZKP生态 三、实战&#xff1a;用Go实现“数据可用不可得” 3.1 环境准备 3.2 定义ZKP…

2026/8/1 5:25:32 阅读更多 →

最新新闻

视频监控远程运维难吗?国标GB28181视频监控平台EasyCVR一套操作全都是实战干货!

视频监控远程运维难吗?国标GB28181视频监控平台EasyCVR一套操作全都是实战干货!

做过视频监控运维的人都知道&#xff0c;最头疼的不是设备坏&#xff0c;而是"不知道哪个设备坏了、坏了得跑一趟现场"。一个城市级项目几百路摄像头分布在几十个点位&#xff0c;靠人工巡检根本巡不过来。等用户报修才知道"某路画面没了"&#xff0c;再派…

2026/8/1 11:49:10 阅读更多 →
RTOS-F429-HAL-列表创建,写入,读取(2026/8/1)

RTOS-F429-HAL-列表创建,写入,读取(2026/8/1)

目录 一&#xff1a;队列核心概念梳理 1、队列是什么 2、四个关键特性 3、阻塞机制&#xff08;核心&#xff09; 4、多个任务挤着等一个队列时&#xff0c;谁先醒&#xff1f; 5、队列操作流程 二&#xff1a;队列的结构体 1&#xff1a;结构体分析 2&#xff1a;联合…

2026/8/1 11:49:10 阅读更多 →
ESP32-S3-Tiny设计实战:从芯片选型到低功耗优化的微型物联网模块开发指南

ESP32-S3-Tiny设计实战:从芯片选型到低功耗优化的微型物联网模块开发指南

1. 从“ESP32-S3”到“ESP32-S3-Tiny”&#xff1a;一个芯片的“瘦身”哲学如果你玩过ESP32-S3&#xff0c;大概率会对它又爱又恨。爱的是它强大的双核240MHz处理器、丰富的接口&#xff08;USB OTG、摄像头、LCD屏&#xff09;和那令人安心的Wi-Fi 6与蓝牙5连接能力&#xff0…

2026/8/1 11:49:10 阅读更多 →
SQL Server DBA 实用的 100 条命令(建议收藏)

SQL Server DBA 实用的 100 条命令(建议收藏)

前言 做 SQL Server DBA&#xff0c;真正考验能力的不是会不会创建数据库&#xff0c;而是在生产环境出现 CPU 飙高、SQL 卡顿、阻塞堆积、日志暴涨、Always On 延迟时&#xff0c;能快速找到问题原因。 SQL Server 提供了大量 DMV&#xff08;Dynamic Management Views&#x…

2026/8/1 11:49:10 阅读更多 →
热敏电阻与DS18B20实战指南:从模拟到数字的温度传感器设计

热敏电阻与DS18B20实战指南:从模拟到数字的温度传感器设计

1. 从“感知温度”到“数据世界”&#xff1a;温度传感器的核心价值温度&#xff0c;这个我们每天都能感知到的物理量&#xff0c;在工业自动化、智能家居、环境监测乃至生物医疗等无数领域&#xff0c;却是决定系统成败、影响产品质量、保障人身安全的关键参数。而温度传感器&…

2026/8/1 11:49:10 阅读更多 →
DLX自建翻译API:零成本搭建企业级翻译服务终极指南

DLX自建翻译API:零成本搭建企业级翻译服务终极指南

DLX自建翻译API&#xff1a;零成本搭建企业级翻译服务终极指南 【免费下载链接】DLX DLX - Self-hosted translation API server. Unofficial; not affiliated with DeepL SE. 项目地址: https://gitcode.com/gh_mirrors/de/DLX 还在为昂贵的翻译API费用而烦恼&#xff…

2026/8/1 11:48:09 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →