方案选型
1.2 方案选型
Section titled “1.2 方案选型”- 根据需求分析结果,进行方案选型
- 制定和评估工程实施方案
- 制定最终版实施方案
- 进行教学简化和细化
一、 方案选型及工程实施
Section titled “一、 方案选型及工程实施”1 方案选型
Section titled “1 方案选型”有两种备选方案:传统人机对话和基于大模型的Agent,仔细分析一下这两个方案的优缺点,尤其关注是否有重大缺陷。

传统人机对话对复杂情况的扩展能力较弱,无力应对这样复杂的情况,这是致命缺陷,会导致项目后续扩展能力严重不足。当项目扩展到一定规模以上,可能要考虑推倒重做;意图识别和槽位抽取不准确是重大缺陷,可能导致用户体验较差。

2 工程实施
Section titled “2 工程实施”实际实施工程的时候,按照技术水平从低到高,可能会提出以下几种实施策略版本,注意分析各个版本的思路以及主要问题:


3 大型项目开发的主要问题
Section titled “3 大型项目开发的主要问题”分析上述几个实施策略版本的时候,基本思路是什么?
下面提供开发大型软件的时候,做项目架构必须考虑的主要问题,虽然比较偏工程方向,但是做比较大型综合的大模型项目的时候,这些问题也是需要大家深入思考的。

4 最终定案
Section titled “4 最终定案”最终方式是一个涉及15个独立智能体及其对应MCP服务的庞大体系,由一个整体的调度Agent负责全局统筹。并且各个独立智能体之间有复杂的联系。

二、教学简化
Section titled “二、教学简化”上面讲的是工程上实施的方案,教学中做了一定的简化,保留了主要技术框架,简化了重复性不较强的业务模块,教学方案中保留了两个完整的独立Agent(天气和票务),一个不完整的独立Agent(景点推荐)。
1 最简化逻辑图
Section titled “1 最简化逻辑图”项目的最简化逻辑图如下:统筹Agent中提供意图识别,判定具体使用哪个独立Agent,将15个独立Agent简化成两个。

统筹Agent提供更丰富的细节,包括意图识别和槽位提取。
提供一个非完全体的独立Agent:景点推荐。
所有工业项目必须提供兜底选项。这里使用了(out-of-scope)

3 代码级细化
Section titled “3 代码级细化”将逻辑图映射为系统各模块之间的调用关系,明确各部分的功能。

三、项目使用示例
Section titled “三、项目使用示例”用户查询: 北京2025-08-11的天气怎么样 适合出行吗 系统响应:系统生成 SQL 如 “SELECT * FROM weather_data WHERE city = ‘北京’ AND fx_date = ‘2025-08-11’“,调用工具进行查询,并将查询结果进行总结回复。

用户查询: 近半个月上海到北京的火车票有吗 系统响应:根据用户的提问进行意图识别,针对核心槽位信息确实的进行追问,并生成sql进行查询,基于查询结构进行总结回复。

用户查询:天气 系统响应:根据用户天气意图,默认返回四大热门城市的天气情况。

四、项目技术框架及项目依赖
Section titled “四、项目技术框架及项目依赖”1 技术框架
Section titled “1 技术框架”- python-a2a:实现 MCP 和 A2A 协议,用于工具调用和 Agent 通信,支持数据库查询和任务处理。
- LangChain:集成 ChatOpenAI,用于 SQL 生成和意图识别,实现自然语言到结构化查询的转换。
- Streamlit:构建交互式前端,显示聊天历史和 Agent 信息。
- MySQL Connector:处理数据库连接和查询,确保数据格式化。
- Uvicorn:部署 FastAPI 服务器,支持 MCP 和 A2A 端点
2 项目依赖
Section titled “2 项目依赖”以下是项目涉及的主要依赖及版本(基于代码环境推断,实际以 pip freeze 为准):
| 依赖名称 | 作用 |
|---|---|
| mysql-connector-python | 数据库连接和执行 SQL 查询 |
| langchain-openai | LLM 初始化和提示模板处理 |
| python-a2a | A2A/MCP 服务器和客户端实现 |
| streamlit | 前端界面构建 |
| requests | 天气 API 请求 |
| schedule | 定时数据更新 |
| uvicorn | 服务器运行 |
| pytz | 时区管理 |
| colorlog | 彩色日志输出 |
| json, datetime 等 | 数据库列化和时间处理 |
3 项目环境构建
Section titled “3 项目环境构建”为防止代码运行时因模块版本不同带来报错或异常,需要创建新的虚拟环境并安装相应的包。
# 创建虚拟环境,python版本:conda create -n smartVoyage python==3.12.11conda activate smartVoyage
#安装项目依赖pip install -r requirements.txtrequirements.txt中的内容如下。
aiohappyeyeballs==2.6.1aiohttp==3.12.15aiosignal==1.4.0altair==5.5.0annotated-types==0.7.0anthropic==0.60.0anyio==4.9.0attrs==25.3.0beautifulsoup4==4.13.4blinker==1.9.0boto3==1.39.16botocore==1.39.16bs4==0.0.2cachetools==6.1.0certifi==2025.7.14cffi==1.17.1charset-normalizer==3.4.2click==8.2.1colorama==0.4.6colorlog==6.9.0cryptography==45.0.5dashscope==1.24.0dataclasses-json==0.6.7distro==1.9.0fastapi==0.116.1filelock==3.18.0Flask==3.1.1frozenlist==1.7.0fsspec==2025.7.0gitdb==4.0.12GitPython==3.1.45greenlet==3.2.3h11==0.16.0hf-xet==1.1.5httpcore==1.0.9httpx==0.28.1httpx-sse==0.4.1huggingface-hub==0.34.3idna==3.10itsdangerous==2.2.0Jinja2==3.1.6jiter==0.10.0jmespath==1.0.1jsonpatch==1.33jsonpointer==3.0.0jsonschema==4.25.0jsonschema-specifications==2025.4.1langchain==0.3.26langchain-community==0.3.27langchain-core==0.3.72langchain-deepseek==0.1.4langchain-openai==0.3.28langchain-text-splitters==0.3.9langsmith==0.3.45lxml==6.0.0MarkupSafe==3.0.2marshmallow==3.26.1mcp==1.18.0mcp-server==0.1.4mpmath==1.3.0multidict==6.6.3mypy_extensions==1.1.0mysql-connector-python==9.4.0mysqlclient==2.2.7narwhals==2.0.1networkx==3.5numpy==2.3.2openai==1.97.1orjson==3.11.1packaging==25.0pandas==2.3.1pillow==11.3.0propcache==0.3.2protobuf==6.31.1pyarrow==21.0.0pycparser==2.22pydantic==2.11.7pydantic-settings==2.10.1pydantic_core==2.33.2pydeck==0.9.1PyMySQL==1.1.1python-a2a==0.5.4python-dateutil==2.9.0.post0python-dotenv==1.1.1python-multipart==0.0.20pytz==2025.2pywin32==311PyYAML==6.0.2referencing==0.36.2regex==2025.7.31requests==2.32.4requests-toolbelt==1.0.0rpds-py==0.26.0s3transfer==0.13.1safetensors==0.5.3setuptools==78.1.1six==1.17.0smmap==5.0.2sniffio==1.3.1soupsieve==2.7SQLAlchemy==2.0.42sse-starlette==3.0.2starlette==0.47.2streamlit==1.47.1sympy==1.14.0tenacity==9.1.2tiktoken==0.9.0tokenizers==0.21.4toml==0.10.2torch==2.7.1tornado==6.5.1tqdm==4.67.1transformers==4.54.1typing-inspect==0.9.0typing-inspection==0.4.1typing_extensions==4.14.1tzdata==2025.2urllib3==2.5.0uvicorn==0.35.0watchdog==6.0.0websocket-client==1.8.0Werkzeug==3.1.3wheel==0.45.1yarl==1.20.1zstandard==0.23.0schedule==1.2.2langchain-mcp-adapters==0.1.11本部分主要介绍了项目背景及痛点、项目目标及优势、项目使用示例以及项目相关技术框架和项目依赖。