Files
what_to_eat_today/AI编程.md
Chatbot_233 05955edb62 ke jian
2026-01-30 15:51:48 +08:00

523 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
~~~