This commit is contained in:
Chatbot_233
2026-01-30 15:51:48 +08:00
commit 05955edb62
8 changed files with 522 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

522
AI编程.md Normal file
View File

@@ -0,0 +1,522 @@
# AI编程
## 学习目的
1. 知道什么是核心编程
2. 核心编程的工具
3. 安装一款AI编程工具
4. 使用AI编程完成一个示例
飞书链接https://uxtfmecm0c4.feishu.cn/wiki/N6jow3R4XiyKp0kGfuTcE1kHnFd 密码7s436&55
## 1. AI编程概念
本质:意图的编译。
概念:将自然语言/模糊需求/草图等通过LLM大模型编译成能够运行的软件产品。
模型:
![1766321630464](AI编程.assets/1766321630464.png)
## 2. AI编程工具
有哪些编程工具:
![1766321711915](AI编程.assets/1766321711915.png)
工具定位:
![1766321727971](AI编程.assets/1766321727971.png)
选用建议:
1. 对于需要深入项目级重构、依赖多文件上下文且要求模型能力灵活切换的开发者Cursor 提供了卓越的 AI驱动 IDE 体验。
2. 对于处理超大型代码库、需要模型进行复杂架构推理的开发者Claude Code 及其强大的上下文能力是最佳选择。
3. 对于注重中文支持、国内生态和合规性的开发者,以 CodeBuddy、Comate 和通义灵码为代表的本土工具更具优势。
## 3. Claude Code介绍
### 3.1 ClaudCode概述
Claude Code 是 Anthropic 专为软件开发人员和工程团队设计的一款 AI 驱动的编码工具,它将 Claude 的高级智能直接集成到终端和开发环境中。
Claude是指Anthropic 这家公司训练的一系列基础模型。
Anthropic 是一家专注于 AI 安全和研究 的人工智能公司。它由前 OpenAI 的研究人员创立,其核心使命是开发出安全、有用且可控的通用人工智能(AGI)。
有哪些核心的模型比如编程用Claude Sonnet
![1766322032502](AI编程.assets/1766322032502.png)
### 3.2 安装
安装环境
![1766324869600](AI编程.assets/1766324869600.png)
还有一个:**安装git bash**
node.js介绍
![1766324861205](AI编程.assets/1766324861205.png)
安装node.js
node.js 下载地址:https://nodejs.org/en/download/
下载.msi文件安装并验证
```bash
node -v
npm -v
```
安装claudecode
```bash
#打开终端执行以下是claudecode安装
npm install -g @anthropic-ai/claude-code
#claude-code版本验证
claude --version
```
配置deepseek模型
```bash
# 设置 Deepseek 接地址
setx ANTHROPIC_BASE_URL "https://api.deepseek.com/anthropic"
# 设置认证 Key (请将 sk-xxxx 替换为你的真实的 Deepseek Key)
Setx ANTHROPIC_AUTH_TOKEN "sk-xxxxx"
# 设置超时时间(10分钟)
Setx API_TIMEOUT_MS 600000
# 指定模型
setx ANTHROPIC_MODEL "deepseek-chat"
Setx ANTHROPIC_SMALL_FAST_MODEL "deepseek-chat"
#禁用非必要流量
Setx CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 1
```
安装git bash
安装上git bash 才能使用claude命令否则报错。
安装并验证https://git-scm.com/install/windows
### 3.3 验证
```bash
# 如果项目在d盘就切到d盘
C:\Users\13716>d:
# 切到项目所在位置:
cd C:\Users\13716\PycharmProjects\LlmProject\SmartVoyage1
# 输入claude命令并一直点回车
claude
测试:输入:总结下这个项目
回复:
基于对项目的全面探索,以下是 SmartVoyage 智能旅行助手系统的详细总结:
📋 项目概述
SmartVoyage 是一个基于 Agent2AgentA2A架构 的智能旅行助手系统,采用多代理协同工作模式,为旅行者提供天气查询、票务查询、票务预定、景点推荐等一站式服务。
🏗️ 项目架构
系统架构
用户界面层 (UI Layer)
├── Streamlit Web界面 (app.py)
└── 命令行交互界面 (main.py)
意图识别层 (Intent Recognition Layer)
└── LLM驱动的意图识别Agent
代理路由层 (Agent Routing Layer)
├── WeatherQueryAssistant (天气查询代理)
├── TicketQueryAssistant (票务查询代理)
└── TicketOrderAssistant (票务预定代理)
服务执行层 (Service Execution Layer)
├── A2A代理服务器 (a2a_server/)
└── MCP服务器 (mcp_server/)
数据访问层 (Data Access Layer)
├── MySQL数据库 (travel_rag)
└── 数据爬虫 (utils/spider_weather.py)
核心组件
| 组件 | 端口 | 功能描述 |
|-----------------------|------|----------------------------------------------|
| WeatherQueryAssistant | 5005 | 天气查询代理调用MCP天气服务器 |
| TicketQueryAssistant | 5006 | 票务查询代理,支持火车、飞机、演唱会票查询 |
| TicketOrderAssistant | 5007 | 票务预定代理 |
| MCP天气服务器 | 8002 | 提供天气数据查询的Model Context Protocol服务 |
| MCP票务服务器 | 8003 | 提供票务数据查询的MCP服务 |
| MCP订单服务器 | 8004 | 提供票务预定服务的MCP服务 |
🔧 技术栈
编程语言与框架
- Python 3.x - 主要开发语言
- Agent2AgentA2A - 代理间通信框架 (python_a2a)
- LangChain - LLM应用框架 (langchain_openai, langchain_core)
- Model Context ProtocolMCP - 工具调用协议 (mcp)
- Streamlit - Web应用框架
- MySQL - 关系型数据库 (mysql-connector-python)
数据库设计
数据库 travel_rag 包含4张核心表
1. weather_data - 天气数据表(城市、日期、温度、湿度、降水等)
2. train_tickets - 火车票信息表
3. flight_tickets - 航班机票信息表
4. concert_tickets - 演唱会票信息表
第三方服务
- LLM API: 硅基流动APIQwen2.5-72B-Instruct模型
- 天气API: 和风天气API通过爬虫定时获取
🎯 核心功能
1. 意图识别与路由
- 支持的意图类型:
- weather - 天气查询(如"合肥2025-12-03天气怎么样"
- flight - 机票查询
- train - 火车票查询
- concert - 演唱会票查询
- order - 票务预定
- attraction - 景点推荐
- 多意图识别:支持单查询中的多个意图识别
- 智能追问:当信息不全时自动追问必要参数
2. 多代理协同工作流
用户输入 → 意图识别Agent → 路由决策 → 目标代理 → MCP工具调用 → 数据库查询 → 结果总结 → 用户响应
3. 天气服务模块
- 定时爬取北京、上海、广州、深圳的天气数据
- 支持单日查询和日期范围查询
- 返回温度、湿度、风向、降水等详细信息
4. 票务服务模块
- 火车票查询:出发/到达城市、时间、车次、座位、价格
- 机票查询:航班信息、舱位类型、剩余座位
- 演唱会票查询:艺人、城市、场馆、票类型
- 预定功能:模拟票务预定流程
5. 用户界面
- Streamlit Web界面两栏布局左侧对话右侧Agent卡片
- 命令行界面:交互式终端版本
- Agent卡片显示展示代理的技能、描述、地址和状态
6. 数据处理与日志
- 数据爬虫utils/spider_weather.py 定时获取天气数据
- 数据格式化utils/format.py 处理日期、Decimal等特殊类型
- 统一日志logs/app.log 记录系统运行状态
📁 目录结构详解
SmartVoyage1/
├── a2a_server/ # A2A代理服务器
│ ├── weather_server.py # 天气查询代理端口5005
│ ├── ticket_server.py # 票务查询代理端口5006
│ └── order_server.py # 票务预定代理端口5007
├── mcp_server/ # MCP协议服务器
│ ├── mcp_weather_server.py # 天气MCP服务端口8002
│ ├── mcp_ticket_server.py # 票务MCP服务端口8003
│ └── mcp_order_server.py # 订单MCP服务端口8004
├── data/ # 数据文件
│ └── weather_data.json # 天气数据缓存
├── sql/ # 数据库脚本
│ ├── sql.sql # 表结构定义
│ └── insert_data.sql # 示例数据
├── test/ # 测试文件
├── utils/ # 工具函数
│ ├── spider_weather.py # 天气爬虫
│ └── format.py # 数据格式化
├── app.py # Streamlit Web应用
├── main.py # 命令行主程序
├── config.py # 配置文件API密钥、数据库等
├── main_prompts.py # 提示词模板
└── create_logger.py # 日志配置
🚀 系统特色
1. 现代代理架构采用A2A代理框架实现代理间的标准化通信
2. MCP协议集成通过Model Context Protocol提供工具调用能力
3. 双界面支持同时提供Web界面和命令行界面
4. 可扩展设计:模块化设计便于添加新的代理和服务
5. 完整的日志系统:详细记录系统运行状态和错误信息
🎓 教育价值
该项目展示了:
- Agent2Agent代理架构的实际应用
- MCP协议在工具调用中的使用
- 基于LLM的意图识别和自然语言理解
- 多模块协同的完整AI系统设计
- 生产级代码的日志、配置和错误处理
🔍 典型使用场景
# 启动所有服务后,用户可查询:
1. "合肥2025-12-03天气怎么样" → 天气查询
2. "合肥到上海的火车票时间2025-12-03" → 火车票查询
3. "给我推荐一些合肥的著名景点" → 景点推荐
4. "预定G1001车次的二等座一张" → 票务预定
📝 总结
SmartVoyage 是一个完整的、生产可用的智能旅行助手系统,它结合了:
- 前沿的AI代理技术A2A + MCP
- 实用的业务功能(天气、票务、推荐)
- 良好的工程实践(模块化、日志、配置管理)
- 灵活的用户界面Web + CLI
该项目非常适合作为AI代理系统学习的参考案例展示了如何将多个AI代理、LLM能力和传统业务系统有效整合。
---
最后标记总结任务完成<end▁of▁thinking>
```
看是否可以编写文件:
```bash
编写一个测试 C:\Users\13716\PycharmProjects\LlmProject\SmartVoyage1\a2a_server\order_server.py
的脚本放到test下面名称为 claude_test.py
```
```
```
### 3.4 编程实战
第一步注册:
- git地址http://82.156.249.211:3000/student03
- 注册用户名zzs123
- 注册邮箱137.。。。。@163.com
- 注册密码 zzs123123
第二步配置密钥:
- git bash打开
- 输入ssh-keygen -t ed25519 -C"137.。。。。@163.com" 创建密匙
- 一直点enter
- ~~~
启动ssh代理并添加私钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
~~~
- 打开gitea设置 增加密钥
- 将密钥加入进去,名称选邮箱名称,添加
第二步git创建项目
- 点左上角绿色标
- 仓库 点 + 号 创建项目,输入名称即可
- 在git bash 中 用这个创建第一个文件并上传
```bash
git clone http://82.156.249.211:3000/zzs123/zzs_test.git
cd zzs_test/
touch README.md
git init
git checkout -b main
git add README.md
git commit -m "first commit"
报错的话就输入以下:
git config --global user.email "1371dd441@163.com"
git config --global user.name "zzs123"
在提交
git commit -m "first commit "
git remote add origin http://82.156.249.211:3000/zzs123/zzs_test2.git
git push -u origin main
```
~~~shell
请基于当前目录下 C:\Users\13716\PycharmProjects\zzs_test 进行克隆代码并基于C:\Users\13716\PycharmProjects\zzs_test 开发及提交要求.txt进行完成开发及提交我是zzs123注意测试验证时候我这边是中文注意字符编码或者采用英文query测试。
git clone ssh://git@82.156.249.211:2222/zzs123/zzs_test.git
我的deepseek账号信息,采用from dotenv import load_dotenv进行加载
DEEPSEEK_API_KEY1=skf001b5c30f294963b3906038239e41ea
base_url1=https://api.deepseek.com/v1
我的本地python解释器为: C:\Users\13716\.conda\envs\llm_env\python.exe
~~~
## 4. 项目实战
初始化项目:
~~~YAML
【项目总览】 本项目目标是构建一个名为 CardioAI-心血管疾病智能辅助系统的多模块应用,集成了数据可视化(Streamlit)、机器学习预测(XGBoost/Flask)和AI语音问答(DeepSeek/cosyVoice)。
【本地环境与文件路径约束】 请严格遵守以下文件路径和文件引用,它们是用户本地环境的绝对路径:
代码根目录(CODE_ROOT):C:\Users\13716\PycharmProjects\ai_coding\aicodes
数据文件(DATA_PATH):C:\Users\13716\PycharmProjects\ai_coding\data\心血管疾病.xlsx
配置文件 (ENV_PATH):C:\Users\13716\PycharmProjects\ai_coding\.env
【指令:项目初始化与环境配置】
Conda 环境说明:
请在 requirements.txt 文件前添加注释,指导用户创建并激活名为 cardioenv 的 conda 虚拟环境。
用户执行示例(非代码生成部分):conda create -n cardioenv python=3.10 和 conda activate
cardioenv。
创建目录结构:
在 CODE_ROOT 下创建以下目录:data(如果不存在)module1_dashboard, module2_predictor, module3_voice_assistant, module2_predictor/templates, module3_voice_assistant/templates。
生成 requirements.txt:
CODE_ROOT 下生成requirements.txt 文件,包含以下所有依赖:pandas,openpyxl,numpy,scikit-learn, xgboost, joblib, streamlit, plotly, Flask, python-dotenv, langchain-openai,
dashscope, requests。
~~~
模块1 交互式仪表盘
~~~yaml
【核心产出】module1_dashboard/cardio_dashboard.py
【任务要求】生成一个streamlit应用程序用于对 DATA_PATH 的数据进行清洗、特征工程和交互式可视化。
数据处理:
加载: 使用 DATA_PATH 加载数据,C:\Users\13716\PycharmProjects\ai_coding\data\心血管疾病.xlsx注意数据格式excel表格和编码。
特征工程:将age(天)转换为年(age_years四舍五入)。计算BMI($BMI=\frac{weight}
{(height/100)^2}$).
异常值处理:删除舒张压(ap_1o)$\geq$ 收缩压(ap_hi)的记录。删除血压极端异常值(收缩压$\in[90,250]$,舒张压$\in[60,150]$)。
类别转换:将 cholestero1 和 gluc 数值转换为描述性字符串。创建 bmi_category。
性能优化: 对数据加载和清洗函数使用@st.cache_data装饰器。
Streamlit 界面:
侧边栏:包含 age_years范围滑块、gender 和 cardio 的多选框筛选器。
主页展示:展示筛选后的总记录数和心血管疾病总风险率。
图表(Plotly Express):绘制 age_years 分布直方图(按cardio 区分)和 bmi_category对 cardio影响的堆叠柱状图。
C:\Users\13716\.conda\envs\cardioenv\python.exe 解释器 这是当前整个项目的解释器!虚拟环境是cardioenv
~~~
模块2 高效心血管风险预测模型
~~~yaml
【核心产出】module2_predictor/train_and_save.py (一次性脚本), module2_predictor/cardio_predictor_model.pkl, module2_predictor/app.py, module2_predictor/templates/index.html
【任务要求】
Part A:模型训练与保存
生成独立脚本 module2_predictor/train_and_save.py:
执行与模块1相同的清洗和特征工程。删除id和原始 age字段。
构建 Pipeline:使用 ColumnTransformer 封装StandardScaler(用于连续特征)和 OneHotEncoder (用于分类特征)。
训练XGBClassifier模型。
使用joblib 将包含 预处理器和分类器的完整Pipeline 对象保存到 module2_predictor/cardio_predictor_model.pkl。
Part B:Flask API 部署
生成后端应用 module2_predictor/app.py (Flask):
创建/predict_cardio API接口,接收11个原始特征值的JSON PosT 请求。
在接口内部:加载模型,使用保存的 Pipeline 对输入数据进行预处理,然后预测。
返回JsoN响应包含预测的疾病概率(probability)和预测结果(prediction:0或1)。
Part C:前端交互界面
生成前端模板 module2_predictor/templates/index.html:
创建一个包含 11 个输入字段的 HTML 表单。
使用 Javascript/Fetch API 调用/predict_cardio接口并将返回的风险概率和结果清晰地展示给用户。
启动方式:bat
不要创建bat文件进行启动 给出对应的命令手动启动即可
C:\Users\13716\.conda\envs\cardioenv\python.exe 解释器 这是当前整个项目的解释器!虚拟环境是cardioenv
~~~
模块3:VoiceDoc -AI驱动的心血管健康语音顾问
~~~
【核心产出】 module3_voice_assistant/voice_assistant_app.py, module3_voice_assistant/templates/voice_index.html
【任务要求】 构建一个 F1ask API实现 Deepseek 问答和大模型的文字回答到CosyVoice语音的同步转换和
Base64 编码。
后端生成 module3_voice_assistant/voice_assistant_app.py (Flask):
初始化:使用 python-dotenv 从 ENV_PATH 加载所有 API Key。
Deepseek 逻辑:使用1angchain-openai.ChatopenAI 连接 Deepseek API(使用环境变量)。设置 SystemPrompt 为"专业心血管健康顾问"。
CosyVoice逻辑:使用 dashscope.audio.tts_v2,模型 cosyvoice-v2,音色 longxiaochun_v2。采用同步调用(SpeechSynthesizer.call),指定 MP3 格式(AudioFormat.MP3_22050HZ_MONO_256KBPS)。
编码与返回:将 LLM的完整文字回答合成为音频使用base64.b64encode编码。返回JsoN:
{"text_answer":"...", "audio_base64":"..."}。
前端生成 module3_voice_assistant/templates/voice_index.html:
包含用户输入框和提交按钮。
JavaScript 必须能够接收 Base64音频构造 data:audio/mp3;base64,...URL,并使用 HTML5<audio>标签自动播放音频,并显示文字回答。
参考开发文档:C:\Users\13716\PycharmProjects\ai_coding\aicodes\语音合成cosyVoice.md 与 C:\Users\13716\PycharmProjects\ai_coding\aicodes\llm_streaming.py
C:\Users\13716\.conda\envs\cardioenv\python.exe 解释器 这是当前整个项目的解释器!虚拟环境是cardioenv
接下来请完成模块3
~~~

BIN
心血管疾病.xlsx Normal file

Binary file not shown.