feat: 初始化自动控制原理AI+数智平台项目
- 添加时域分析、频域分析、根轨迹分析功能 - 集成 AI 智能问答(DeepSeek/Gemini API) - 现代化 UI 设计,支持 LaTeX 公式渲染 - 完整的项目文档和配置文件
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
|||||||
|
# AutoControl - 自动控制原理AI+数智平台
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
*.pyc
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# 虚拟环境
|
||||||
|
venv/
|
||||||
|
env/
|
||||||
|
ENV/
|
||||||
|
.venv
|
||||||
|
.conda/
|
||||||
|
|
||||||
|
# IDE 配置
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# 环境变量文件
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# 日志文件
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# 临时文件
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# 系统文件
|
||||||
|
Thumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# 打包文件
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.egg-info/
|
||||||
|
|
||||||
|
# API 密钥配置(如果单独管理)
|
||||||
|
config.json
|
||||||
|
secrets.json
|
||||||
|
api_keys.txt
|
||||||
+201
@@ -0,0 +1,201 @@
|
|||||||
|
# API 配置指南
|
||||||
|
|
||||||
|
本文档详细说明如何配置 DeepSeek 和 Gemini API。
|
||||||
|
|
||||||
|
## 📋 目录
|
||||||
|
|
||||||
|
- [DeepSeek API 配置](#deepseek-api-配置)
|
||||||
|
- [Gemini API 配置](#gemini-api-配置)
|
||||||
|
- [常见问题](#常见问题)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 DeepSeek API 配置
|
||||||
|
|
||||||
|
### 1. 获取 API 密钥
|
||||||
|
|
||||||
|
1. 访问 [DeepSeek 平台](https://platform.deepseek.com/)
|
||||||
|
2. 注册账号并登录
|
||||||
|
3. 进入 [API Keys 页面](https://platform.deepseek.com/api_keys)
|
||||||
|
4. 点击"创建新密钥"
|
||||||
|
5. 复制生成的 API 密钥(格式:`sk-xxxxxxxxxxxxxxxx`)
|
||||||
|
|
||||||
|
### 2. 配置到应用
|
||||||
|
|
||||||
|
编辑 `app.py` 文件的配置区域(第 7-28 行):
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ==================== API 配置 ====================
|
||||||
|
API_KEY = "sk-your-api-key-here" # 粘贴您的 DeepSeek API 密钥
|
||||||
|
API_BASE_URL = "https://api.deepseek.com/v1"
|
||||||
|
API_MODEL = "deepseek-chat" # 或 "deepseek-coder"
|
||||||
|
API_TYPE = "deepseek"
|
||||||
|
# ==================================================
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 可用模型
|
||||||
|
|
||||||
|
| 模型名称 | 适用场景 | 特点 |
|
||||||
|
|---------|---------|------|
|
||||||
|
| `deepseek-chat` | 通用对话 | 平衡性能,推荐使用 |
|
||||||
|
| `deepseek-coder` | 代码相关 | 代码理解和生成能力强 |
|
||||||
|
|
||||||
|
### 4. 费用说明
|
||||||
|
|
||||||
|
- 新用户通常有免费额度
|
||||||
|
- 按 token 计费,价格实惠
|
||||||
|
- 详见 [定价页面](https://platform.deepseek.com/pricing)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Gemini API 配置
|
||||||
|
|
||||||
|
### 1. 获取 API 密钥
|
||||||
|
|
||||||
|
1. 访问 [Google AI Studio](https://aistudio.google.com/app/apikey)
|
||||||
|
2. 使用 Google 账号登录
|
||||||
|
3. 点击"Get API Key"
|
||||||
|
4. 创建或选择项目
|
||||||
|
5. 复制生成的 API 密钥
|
||||||
|
|
||||||
|
### 2. 配置到应用
|
||||||
|
|
||||||
|
编辑 `app.py` 文件的配置区域:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ==================== API 配置 ====================
|
||||||
|
API_KEY = "AIzaSy-your-gemini-api-key-here"
|
||||||
|
API_BASE_URL = "https://generativelanguage.googleapis.com/v1beta"
|
||||||
|
API_MODEL = "gemini-1.5-flash" # 或其他可用模型
|
||||||
|
API_TYPE = "gemini"
|
||||||
|
# ==================================================
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 可用模型
|
||||||
|
|
||||||
|
| 模型名称 | 特点 |
|
||||||
|
|---------|------|
|
||||||
|
| `gemini-1.5-flash` | 快速响应,适合实时交互 |
|
||||||
|
| `gemini-1.5-pro` | 更强大的理解和生成能力 |
|
||||||
|
| `gemini-pro` | 经典版本 |
|
||||||
|
|
||||||
|
### 4. 注意事项
|
||||||
|
|
||||||
|
- Gemini API 在某些地区可能需要网络代理
|
||||||
|
- 中国大陆用户推荐使用 DeepSeek API
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 安全建议
|
||||||
|
|
||||||
|
### 方法 1:环境变量(推荐)
|
||||||
|
|
||||||
|
不要直接在代码中硬编码 API 密钥,使用环境变量:
|
||||||
|
|
||||||
|
**Windows PowerShell:**
|
||||||
|
```powershell
|
||||||
|
$env:DEEPSEEK_API_KEY="sk-your-key"
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux/Mac:**
|
||||||
|
```bash
|
||||||
|
export DEEPSEEK_API_KEY="sk-your-key"
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
然后在代码中读取:
|
||||||
|
```python
|
||||||
|
import os
|
||||||
|
API_KEY = os.environ.get("DEEPSEEK_API_KEY", "")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法 2:配置文件
|
||||||
|
|
||||||
|
创建 `config.json`(不要提交到 Git):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"api_key": "sk-your-key",
|
||||||
|
"api_base_url": "https://api.deepseek.com/v1",
|
||||||
|
"api_model": "deepseek-chat",
|
||||||
|
"api_type": "deepseek"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
在代码中加载:
|
||||||
|
```python
|
||||||
|
import json
|
||||||
|
|
||||||
|
with open('config.json', 'r') as f:
|
||||||
|
config = json.load(f)
|
||||||
|
API_KEY = config['api_key']
|
||||||
|
API_BASE_URL = config['api_base_url']
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❓ 常见问题
|
||||||
|
|
||||||
|
### Q1: API 请求失败,显示 401 错误
|
||||||
|
|
||||||
|
**原因**:API 密钥无效或未配置
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 检查 API 密钥是否正确复制(无多余空格)
|
||||||
|
2. 确认密钥未过期或被删除
|
||||||
|
3. 重新生成密钥并更新配置
|
||||||
|
|
||||||
|
### Q2: 网络连接错误
|
||||||
|
|
||||||
|
**原因**:网络问题或 API 服务不可达
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. DeepSeek 用户:检查国内网络连接
|
||||||
|
2. Gemini 用户:可能需要配置网络代理
|
||||||
|
3. 尝试切换到 DeepSeek API(国内友好)
|
||||||
|
|
||||||
|
### Q3: 回复速度慢或超时
|
||||||
|
|
||||||
|
**原因**:网络延迟或 API 负载高
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 检查网络连接速度
|
||||||
|
2. 调整超时设置(app.py 中的 `ClientTimeout`)
|
||||||
|
3. 尝试切换模型(如 flash 版本)
|
||||||
|
|
||||||
|
### Q4: 公式不渲染
|
||||||
|
|
||||||
|
**原因**:Chatbot 未启用 LaTeX 支持
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
确认 `gr.Chatbot` 包含 `latex_delimiters` 参数:
|
||||||
|
```python
|
||||||
|
chatbot = gr.Chatbot(
|
||||||
|
latex_delimiters=[
|
||||||
|
{"left": "$$", "right": "$$", "display": True},
|
||||||
|
{"left": "$", "right": "$", "display": False}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q5: 如何限制 API 调用成本?
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
1. 在 API 平台设置使用限额
|
||||||
|
2. 代码中添加 `max_tokens` 限制
|
||||||
|
3. 监控 API 使用情况
|
||||||
|
4. 使用轻量级模型(如 flash 版本)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 获取帮助
|
||||||
|
|
||||||
|
- **DeepSeek 文档**:https://platform.deepseek.com/docs
|
||||||
|
- **Gemini 文档**:https://ai.google.dev/docs
|
||||||
|
- **项目 Issues**:[GitHub Issues 链接]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
最后更新:2025年10月15日
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.0.0] - 2025-10-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- ✨ 时域分析功能(阶跃响应、脉冲响应、性能指标计算)
|
||||||
|
- ✨ 频域分析功能(Bode 图、Nyquist 图、稳定裕度)
|
||||||
|
- ✨ 根轨迹分析功能(动态轨迹绘制、增益调节、极点跟踪)
|
||||||
|
- ✨ AI 智能问答功能(支持 DeepSeek 和 Gemini API)
|
||||||
|
- 🎨 现代化 UI 设计(渐变色、卡片布局、可滚动知识区)
|
||||||
|
- 📚 详细的知识卡片(时域、频域、根轨迹理论)
|
||||||
|
- 🔧 对数增益滑块(精确调节 0.1 到 1000 范围)
|
||||||
|
- 💬 LaTeX 公式渲染(聊天机器人内数学公式支持)
|
||||||
|
- 📊 英文图表标签(避免中文显示问题)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- 支持任意阶次线性时不变(LTI)系统分析
|
||||||
|
- 实时参数调节和图表更新
|
||||||
|
- 流式 AI 对话响应
|
||||||
|
- 标签页切换自动加载数据
|
||||||
|
- 可折叠的知识点章节
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- 📄 完整的 README.md
|
||||||
|
- 📄 API 配置指南(API_CONFIG.md)
|
||||||
|
- 📄 快速上手指南(QUICK_START.md)
|
||||||
|
- 📄 依赖列表(requirements.txt)
|
||||||
|
- 📄 .gitignore 配置
|
||||||
|
- 📄 MIT 开源许可证
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Planned
|
||||||
|
- [ ] 状态空间分析模块
|
||||||
|
- [ ] 离散系统分析支持
|
||||||
|
- [ ] 更多控制器设计工具(PID 调优、极点配置)
|
||||||
|
- [ ] 系统对比功能(多个传递函数对比)
|
||||||
|
- [ ] 导出分析报告(PDF/Word)
|
||||||
|
- [ ] 历史记录保存
|
||||||
|
- [ ] 更多 AI 模型支持
|
||||||
|
- [ ] 多语言界面(英文版)
|
||||||
|
- [ ] 移动端适配
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
### v1.0.0 (2025-10-15)
|
||||||
|
- 🎉 首次正式发布
|
||||||
|
- 包含四大核心功能模块
|
||||||
|
- 完整的文档和配置文件
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Note**: For detailed commit history, see the [Git log](https://github.com/your-repo/commits).
|
||||||
+171
@@ -0,0 +1,171 @@
|
|||||||
|
# 贡献指南
|
||||||
|
|
||||||
|
感谢您对本项目的关注!我们欢迎任何形式的贡献。
|
||||||
|
|
||||||
|
## 🤝 如何贡献
|
||||||
|
|
||||||
|
### 报告 Bug
|
||||||
|
|
||||||
|
如果您发现了 Bug,请:
|
||||||
|
|
||||||
|
1. 在 [Issues](https://github.com/your-repo/issues) 中搜索是否已有相同问题
|
||||||
|
2. 如果没有,创建新 Issue,包含:
|
||||||
|
- 清晰的标题
|
||||||
|
- Bug 复现步骤
|
||||||
|
- 预期行为 vs 实际行为
|
||||||
|
- 系统环境(操作系统、Python 版本等)
|
||||||
|
- 错误截图或日志(如果有)
|
||||||
|
|
||||||
|
### 提出新功能
|
||||||
|
|
||||||
|
如果您有新功能建议:
|
||||||
|
|
||||||
|
1. 创建 Feature Request Issue
|
||||||
|
2. 描述功能的用途和价值
|
||||||
|
3. 提供可能的实现思路(可选)
|
||||||
|
|
||||||
|
### 提交代码
|
||||||
|
|
||||||
|
#### 准备工作
|
||||||
|
|
||||||
|
1. Fork 本仓库
|
||||||
|
2. 克隆到本地:
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/your-username/AutoControl.git
|
||||||
|
cd AutoControl
|
||||||
|
```
|
||||||
|
3. 创建新分支:
|
||||||
|
```bash
|
||||||
|
git checkout -b feature/your-feature-name
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 开发规范
|
||||||
|
|
||||||
|
**代码风格**:
|
||||||
|
- 遵循 PEP 8 Python 代码规范
|
||||||
|
- 使用有意义的变量名和函数名
|
||||||
|
- 添加必要的注释和文档字符串
|
||||||
|
|
||||||
|
**提交信息**:
|
||||||
|
```
|
||||||
|
<type>(<scope>): <subject>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
```
|
||||||
|
|
||||||
|
类型(type):
|
||||||
|
- `feat`: 新功能
|
||||||
|
- `fix`: Bug 修复
|
||||||
|
- `docs`: 文档更新
|
||||||
|
- `style`: 代码格式调整
|
||||||
|
- `refactor`: 重构
|
||||||
|
- `test`: 测试相关
|
||||||
|
- `chore`: 构建/工具链相关
|
||||||
|
|
||||||
|
示例:
|
||||||
|
```
|
||||||
|
feat(analysis): 添加状态空间分析模块
|
||||||
|
|
||||||
|
- 实现状态空间表示转换
|
||||||
|
- 添加可控性和可观测性判断
|
||||||
|
- 集成到主界面标签页
|
||||||
|
|
||||||
|
Closes #123
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 测试
|
||||||
|
|
||||||
|
在提交前确保:
|
||||||
|
- 代码能正常运行
|
||||||
|
- 没有破坏现有功能
|
||||||
|
- 新功能经过测试
|
||||||
|
|
||||||
|
#### 提交 Pull Request
|
||||||
|
|
||||||
|
1. 推送到您的 Fork:
|
||||||
|
```bash
|
||||||
|
git push origin feature/your-feature-name
|
||||||
|
```
|
||||||
|
2. 在 GitHub 上创建 Pull Request
|
||||||
|
3. 填写 PR 描述:
|
||||||
|
- 做了什么改动
|
||||||
|
- 为什么需要这个改动
|
||||||
|
- 如何测试
|
||||||
|
4. 等待代码审查
|
||||||
|
|
||||||
|
## 📋 开发任务
|
||||||
|
|
||||||
|
### 当前优先级
|
||||||
|
|
||||||
|
#### 高优先级
|
||||||
|
- [ ] 修复已知 Bug
|
||||||
|
- [ ] 改进性能(大系统分析优化)
|
||||||
|
- [ ] 移动端适配
|
||||||
|
|
||||||
|
#### 中优先级
|
||||||
|
- [ ] 状态空间分析模块
|
||||||
|
- [ ] PID 控制器调优工具
|
||||||
|
- [ ] 系统对比功能
|
||||||
|
|
||||||
|
#### 低优先级
|
||||||
|
- [ ] 导出分析报告
|
||||||
|
- [ ] 多语言支持
|
||||||
|
- [ ] 主题切换(暗色模式)
|
||||||
|
|
||||||
|
### 适合新手的任务
|
||||||
|
|
||||||
|
标记为 `good first issue` 的 Issue 适合新手参与:
|
||||||
|
- 文档改进
|
||||||
|
- UI 微调
|
||||||
|
- 小功能添加
|
||||||
|
|
||||||
|
## 🎨 UI/UX 贡献
|
||||||
|
|
||||||
|
我们欢迎设计相关的贡献:
|
||||||
|
- 界面美化
|
||||||
|
- 交互优化
|
||||||
|
- 图标设计
|
||||||
|
- 配色方案
|
||||||
|
|
||||||
|
## 📚 文档贡献
|
||||||
|
|
||||||
|
文档同样重要:
|
||||||
|
- 修正错别字
|
||||||
|
- 改进说明
|
||||||
|
- 添加示例
|
||||||
|
- 翻译文档
|
||||||
|
|
||||||
|
## 💬 社区
|
||||||
|
|
||||||
|
- GitHub Issues: 技术讨论
|
||||||
|
- [讨论区](https://github.com/your-repo/discussions): 一般交流
|
||||||
|
|
||||||
|
## ⚖️ 行为准则
|
||||||
|
|
||||||
|
### 我们的承诺
|
||||||
|
|
||||||
|
为建设开放友好的环境,我们贡献者和维护者承诺:
|
||||||
|
|
||||||
|
- 使用友好和包容的语言
|
||||||
|
- 尊重不同的观点和经验
|
||||||
|
- 优雅地接受建设性批评
|
||||||
|
- 关注对社区最有利的事情
|
||||||
|
|
||||||
|
### 不可接受的行为
|
||||||
|
|
||||||
|
- 使用性暗示语言或图像
|
||||||
|
- 挑衅、侮辱性评论,人身攻击
|
||||||
|
- 公开或私下骚扰
|
||||||
|
- 未经许可发布他人隐私信息
|
||||||
|
|
||||||
|
## 📄 许可证
|
||||||
|
|
||||||
|
贡献代码即表示您同意将您的贡献以 MIT 许可证授权。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**感谢您的贡献!** 🎉
|
||||||
|
|
||||||
|
如有任何问题,请随时联系维护者。
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 AutoControl Team
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
+121
@@ -0,0 +1,121 @@
|
|||||||
|
# 🚀 5分钟快速上手指南
|
||||||
|
|
||||||
|
本指南帮助您快速配置并运行自动控制原理AI+数智平台。
|
||||||
|
|
||||||
|
## ⚡ 快速开始(3 步完成)
|
||||||
|
|
||||||
|
### 步骤 1:安装依赖
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install gradio numpy control matplotlib aiohttp
|
||||||
|
```
|
||||||
|
|
||||||
|
### 步骤 2:配置 API
|
||||||
|
|
||||||
|
编辑 `app.py` 第 24 行,填入您的 DeepSeek API 密钥:
|
||||||
|
|
||||||
|
```python
|
||||||
|
API_KEY = "sk-your-api-key-here" # 替换为您的密钥
|
||||||
|
```
|
||||||
|
|
||||||
|
**获取密钥**:访问 https://platform.deepseek.com/api_keys
|
||||||
|
|
||||||
|
### 步骤 3:运行应用
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
浏览器会自动打开 http://localhost:7860
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 第一次使用
|
||||||
|
|
||||||
|
### 试试时域分析
|
||||||
|
|
||||||
|
1. 在"时域分析"标签页
|
||||||
|
2. 输入传递函数:
|
||||||
|
- 分子:`1`
|
||||||
|
- 分母:`1,2,1`
|
||||||
|
3. 点击"开始分析"
|
||||||
|
4. 观察阶跃响应曲线和性能指标
|
||||||
|
|
||||||
|
### 试试 AI 问答
|
||||||
|
|
||||||
|
1. 切换到"智能问答"标签页
|
||||||
|
2. 输入问题:`什么是 PID 控制器?`
|
||||||
|
3. 点击"发送"
|
||||||
|
4. AI 会实时回复并渲染数学公式
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 常用传递函数示例
|
||||||
|
|
||||||
|
### 一阶系统
|
||||||
|
```
|
||||||
|
分子: 1
|
||||||
|
分母: 1,1
|
||||||
|
G(s) = 1/(s+1)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 二阶欠阻尼系统
|
||||||
|
```
|
||||||
|
分子: 4
|
||||||
|
分母: 1,2,4
|
||||||
|
G(s) = 4/(s²+2s+4)
|
||||||
|
阻尼比 ζ = 0.5,超调量约 16%
|
||||||
|
```
|
||||||
|
|
||||||
|
### 三阶系统
|
||||||
|
```
|
||||||
|
分子: 1
|
||||||
|
分母: 1,6,11,6
|
||||||
|
G(s) = 1/[(s+1)(s+2)(s+3)]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 故障排查
|
||||||
|
|
||||||
|
### 问题 1:模块导入错误
|
||||||
|
|
||||||
|
```
|
||||||
|
ModuleNotFoundError: No module named 'gradio'
|
||||||
|
```
|
||||||
|
|
||||||
|
**解决**:重新安装依赖
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题 2:API 密钥错误
|
||||||
|
|
||||||
|
```
|
||||||
|
❌ 错误:API_KEY 未配置
|
||||||
|
```
|
||||||
|
|
||||||
|
**解决**:确认 `app.py` 第 24 行已填入有效密钥
|
||||||
|
|
||||||
|
### 问题 3:中文乱码
|
||||||
|
|
||||||
|
**解决**:确保终端支持 UTF-8 编码
|
||||||
|
```powershell
|
||||||
|
# Windows PowerShell
|
||||||
|
chcp 65001
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 下一步
|
||||||
|
|
||||||
|
- 阅读完整 [README.md](README.md)
|
||||||
|
- 查看 [API 配置详细说明](API_CONFIG.md)
|
||||||
|
- 探索四大功能模块
|
||||||
|
- 调整系统增益观察变化
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**需要帮助?** 查看 [常见问题](API_CONFIG.md#常见问题) 或提交 Issue。
|
||||||
|
|
||||||
|
祝学习愉快!🎓
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
# 🎛️ 自动控制原理AI+数智平台
|
||||||
|
|
||||||
|
> 交互式控制系统分析与设计工具 | 时域·频域·根轨迹·AI问答
|
||||||
|
|
||||||
|
一个基于 Gradio 构建的现代化自动控制原理学习平台,集成了系统分析工具和 AI 智能问答功能。
|
||||||
|
|
||||||
|
## ✨ 核心功能
|
||||||
|
|
||||||
|
### 📊 1. 时域分析 (Time Domain Analysis)
|
||||||
|
|
||||||
|
- **阶跃响应分析**:观察系统对单位阶跃输入的响应
|
||||||
|
- **脉冲响应分析**:观察系统对单位脉冲输入的响应
|
||||||
|
- **性能指标计算**:
|
||||||
|
- 上升时间 (Rise Time)
|
||||||
|
- 峰值时间 (Peak Time)
|
||||||
|
- 超调量 (Overshoot)
|
||||||
|
- 调节时间 (Settling Time)
|
||||||
|
- 稳态值 (Steady State Value)
|
||||||
|
|
||||||
|
**知识要点**:
|
||||||
|
- 二阶系统标准形式
|
||||||
|
- 阻尼比与自然频率参数说明
|
||||||
|
- 时域性能指标公式
|
||||||
|
- 稳态误差分析
|
||||||
|
|
||||||
|
### 🌊 2. 频域分析 (Frequency Domain Analysis)
|
||||||
|
|
||||||
|
- **Bode 图绘制**:幅频特性和相频特性
|
||||||
|
- **Nyquist 图绘制**:极坐标频率响应
|
||||||
|
- **稳定裕度计算**:
|
||||||
|
- 增益裕度 (Gain Margin, GM)
|
||||||
|
- 相位裕度 (Phase Margin, PM)
|
||||||
|
- 增益交越频率
|
||||||
|
- 相角交越频率
|
||||||
|
- **稳定性评估**:自动判断系统稳定性
|
||||||
|
|
||||||
|
**知识要点**:
|
||||||
|
- 增益裕度与相位裕度定义
|
||||||
|
- 稳定性判断准则
|
||||||
|
- 频域指标与时域性能的关系
|
||||||
|
- Bode 图读数技巧
|
||||||
|
|
||||||
|
### 🎯 3. 根轨迹分析 (Root Locus Analysis)
|
||||||
|
|
||||||
|
- **根轨迹绘制**:自动绘制完整根轨迹图
|
||||||
|
- **增益调节**:对数滑块精确调节增益 K
|
||||||
|
- **极点跟踪**:实时显示当前增益下的闭环极点位置
|
||||||
|
- **动态视角**:自动调整坐标范围,聚焦关键区域
|
||||||
|
|
||||||
|
**知识要点**:
|
||||||
|
- 根轨迹法基本原理
|
||||||
|
- 幅值条件与相角条件
|
||||||
|
- 根轨迹的基本性质(起点、终点、渐近线、分离点)
|
||||||
|
- s 平面稳定性区域
|
||||||
|
- 阻尼比等值线
|
||||||
|
|
||||||
|
### 🤖 4. AI 智能问答 (Q&A)
|
||||||
|
|
||||||
|
- **专业教学助手**:精通自动控制原理的 AI 教授
|
||||||
|
- **流式响应**:实时显示 AI 回复过程
|
||||||
|
- **LaTeX 公式渲染**:完美支持数学公式显示
|
||||||
|
- **上下文记忆**:支持多轮对话
|
||||||
|
|
||||||
|
**支持的 API**:
|
||||||
|
- DeepSeek API(推荐,国内网络友好)
|
||||||
|
- Google Gemini API
|
||||||
|
|
||||||
|
## 🚀 快速开始
|
||||||
|
|
||||||
|
### 环境要求
|
||||||
|
|
||||||
|
- Python 3.8+
|
||||||
|
- pip 包管理器
|
||||||
|
|
||||||
|
### 安装步骤
|
||||||
|
|
||||||
|
1. **克隆项目**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <your-repo-url>
|
||||||
|
cd AutoControl
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **安装依赖**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install gradio numpy control matplotlib aiohttp
|
||||||
|
```
|
||||||
|
|
||||||
|
或使用 conda:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
conda create -n autocontrol python=3.9
|
||||||
|
conda activate autocontrol
|
||||||
|
pip install gradio numpy control matplotlib aiohttp
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **配置 API 密钥**
|
||||||
|
|
||||||
|
编辑 `app.py` 文件开头的配置区域:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ==================== API 配置 ====================
|
||||||
|
API_KEY = "your-api-key-here" # 填入您的 DeepSeek API 密钥
|
||||||
|
API_BASE_URL = "https://api.deepseek.com/v1"
|
||||||
|
API_MODEL = "deepseek-chat"
|
||||||
|
API_TYPE = "deepseek" # 或 "gemini"
|
||||||
|
# ==================================================
|
||||||
|
```
|
||||||
|
|
||||||
|
**获取 DeepSeek API 密钥**:
|
||||||
|
- 访问 https://platform.deepseek.com/api_keys
|
||||||
|
- 注册并创建 API 密钥
|
||||||
|
- 复制密钥到配置文件
|
||||||
|
|
||||||
|
4. **运行应用**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
或使用 conda 环境:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
conda run -n autocontrol python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **访问应用**
|
||||||
|
|
||||||
|
浏览器自动打开,或手动访问:
|
||||||
|
```
|
||||||
|
http://localhost:7860
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📖 使用指南
|
||||||
|
|
||||||
|
### 输入系统传递函数
|
||||||
|
|
||||||
|
在任意标签页的输入框中输入传递函数的分子和分母系数:
|
||||||
|
|
||||||
|
**示例 1:一阶系统**
|
||||||
|
```
|
||||||
|
分子: 1
|
||||||
|
分母: 1,1
|
||||||
|
传递函数: G(s) = 1/(s+1)
|
||||||
|
```
|
||||||
|
|
||||||
|
**示例 2:二阶系统**
|
||||||
|
```
|
||||||
|
分子: 4
|
||||||
|
分母: 1,2,4
|
||||||
|
传递函数: G(s) = 4/(s²+2s+4)
|
||||||
|
```
|
||||||
|
|
||||||
|
**示例 3:三阶系统**
|
||||||
|
```
|
||||||
|
分子: 1
|
||||||
|
分母: 1,6,11,6
|
||||||
|
传递函数: G(s) = 1/(s³+6s²+11s+6)
|
||||||
|
```
|
||||||
|
|
||||||
|
**输入格式**:
|
||||||
|
- 系数从最高次项到常数项
|
||||||
|
- 用逗号分隔(支持中文或英文逗号)
|
||||||
|
- 支持小数和负数
|
||||||
|
- 例如:`1, 2.5, -3, 4` 表示 s³ + 2.5s² - 3s + 4
|
||||||
|
|
||||||
|
### 调节系统增益
|
||||||
|
|
||||||
|
频域分析和根轨迹分析都支持增益调节:
|
||||||
|
|
||||||
|
- **对数滑块**:log₁₀(K) 范围 -1 到 3
|
||||||
|
- -1 对应 K = 0.1
|
||||||
|
- 0 对应 K = 1
|
||||||
|
- 1 对应 K = 10
|
||||||
|
- 2 对应 K = 100
|
||||||
|
- 3 对应 K = 1000
|
||||||
|
|
||||||
|
- **实时显示**:下方数字框显示实际增益值
|
||||||
|
- **松开更新**:滑块松开后才更新图表,避免卡顿
|
||||||
|
|
||||||
|
### AI 问答技巧
|
||||||
|
|
||||||
|
**高效提问方式**:
|
||||||
|
|
||||||
|
✅ **好的问题**:
|
||||||
|
- "请解释 PID 控制器的三个参数如何影响系统性能?"
|
||||||
|
- "如何根据 Bode 图判断系统的稳定裕度?"
|
||||||
|
- "为什么阻尼比为 0.707 时系统响应最佳?"
|
||||||
|
- "推导二阶系统的超调量公式"
|
||||||
|
|
||||||
|
❌ **避免的问题**:
|
||||||
|
- "帮我做作业"(太模糊)
|
||||||
|
- "这个对吗?"(缺少上下文)
|
||||||
|
- "答案是什么?"(没有提供问题描述)
|
||||||
|
|
||||||
|
**公式显示**:
|
||||||
|
AI 回复中的数学公式会自动渲染,支持以下格式:
|
||||||
|
- 行内公式:`$公式$` 或 `\(公式\)`
|
||||||
|
- 块级公式:`$$公式$$` 或 `\[公式\]`
|
||||||
|
|
||||||
|
## 🎨 界面特色
|
||||||
|
|
||||||
|
### 现代化设计
|
||||||
|
|
||||||
|
- **渐变色标题**:紫色渐变视觉效果
|
||||||
|
- **卡片式布局**:分组清晰,层次分明
|
||||||
|
- **可滚动知识卡片**:长文档不占据过多空间
|
||||||
|
- **可折叠章节**:按需展开知识点
|
||||||
|
|
||||||
|
### 响应式交互
|
||||||
|
|
||||||
|
- **实时更新**:参数改变即时反映在图表上
|
||||||
|
- **流式对话**:AI 回复逐字显示
|
||||||
|
- **标签页联动**:切换标签自动加载数据
|
||||||
|
- **平滑动画**:按钮悬停、卡片滚动效果
|
||||||
|
|
||||||
|
### 知识可视化
|
||||||
|
|
||||||
|
- **嵌入式公式**:页面内直接显示 LaTeX 公式
|
||||||
|
- **表格对比**:性能指标、稳定准则表格化
|
||||||
|
- **颜色编码**:稳定/不稳定用绿/红色标识
|
||||||
|
- **图标辅助**:emoji 增强视觉识别
|
||||||
|
|
||||||
|
## 🛠️ 技术栈
|
||||||
|
|
||||||
|
### 前端框架
|
||||||
|
- **Gradio 4.x**:快速构建机器学习 Web 界面
|
||||||
|
- **Custom CSS**:现代化样式定制
|
||||||
|
|
||||||
|
### 计算库
|
||||||
|
- **NumPy**:数值计算
|
||||||
|
- **python-control**:控制系统分析
|
||||||
|
- **Matplotlib**:图表绘制
|
||||||
|
|
||||||
|
### AI 集成
|
||||||
|
- **aiohttp**:异步 HTTP 请求
|
||||||
|
- **DeepSeek API**:智能问答后端
|
||||||
|
- **流式响应**:提升用户体验
|
||||||
|
|
||||||
|
## 📁 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
AutoControl/
|
||||||
|
├── app.py # 主应用程序
|
||||||
|
├── README.md # 项目文档
|
||||||
|
├── API_CONFIG.md # API 配置详细说明(可选)
|
||||||
|
├── QUICK_START.md # 快速入门指南(可选)
|
||||||
|
└── requirements.txt # 依赖列表(可选)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 高级配置
|
||||||
|
|
||||||
|
### 切换到 Gemini API
|
||||||
|
|
||||||
|
如果您想使用 Google Gemini API:
|
||||||
|
|
||||||
|
```python
|
||||||
|
API_KEY = "your-gemini-api-key"
|
||||||
|
API_BASE_URL = "https://generativelanguage.googleapis.com/v1beta"
|
||||||
|
API_MODEL = "gemini-1.5-flash"
|
||||||
|
API_TYPE = "gemini"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 自定义系统提示词
|
||||||
|
|
||||||
|
修改 `chat_with_ai` 函数中的 `system_prompt`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
system_prompt = """
|
||||||
|
你是一位[角色定义]。
|
||||||
|
请用[语言风格]来回答有关[领域]的问题。
|
||||||
|
[其他要求...]
|
||||||
|
"""
|
||||||
|
```
|
||||||
|
|
||||||
|
### 调整图表样式
|
||||||
|
|
||||||
|
在 `matplotlib` 绘图代码中修改:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 修改图表大小
|
||||||
|
fig, ax = plt.subplots(figsize=(12, 6))
|
||||||
|
|
||||||
|
# 修改颜色主题
|
||||||
|
ax.plot(x, y, color='#667eea', linewidth=2)
|
||||||
|
|
||||||
|
# 修改网格样式
|
||||||
|
ax.grid(True, alpha=0.3, linestyle='--')
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 参考资料
|
||||||
|
|
||||||
|
### 经典教材
|
||||||
|
- 《自动控制原理》- 胡寿松
|
||||||
|
- 《现代控制工程》- Katsuhiko Ogata
|
||||||
|
- 《反馈控制理论》- John Doyle
|
||||||
|
|
||||||
|
### 在线资源
|
||||||
|
- [python-control 官方文档](https://python-control.readthedocs.io/)
|
||||||
|
- [DeepSeek API 文档](https://platform.deepseek.com/docs)
|
||||||
|
- [Gradio 官方文档](https://www.gradio.app/docs)
|
||||||
|
|
||||||
|
## 🤝 贡献指南
|
||||||
|
|
||||||
|
欢迎提交 Issue 和 Pull Request!
|
||||||
|
|
||||||
|
### 贡献方向
|
||||||
|
- 🐛 修复 Bug
|
||||||
|
- ✨ 添加新功能(如状态空间分析)
|
||||||
|
- 📝 改进文档
|
||||||
|
- 🎨 优化界面设计
|
||||||
|
- 🧪 添加测试用例
|
||||||
|
|
||||||
|
## 📄 许可证
|
||||||
|
|
||||||
|
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
|
||||||
|
|
||||||
|
## 🙏 致谢
|
||||||
|
|
||||||
|
- **Gradio**:提供优秀的 Web 界面框架
|
||||||
|
- **python-control**:强大的控制系统分析库
|
||||||
|
- **DeepSeek**:高质量的 AI 服务
|
||||||
|
- 所有贡献者和使用者
|
||||||
|
|
||||||
|
## 📞 联系方式
|
||||||
|
|
||||||
|
- 项目地址:[GitHub Repository URL]
|
||||||
|
- 问题反馈:[Issues URL]
|
||||||
|
- 邮箱:[your-email@example.com]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**⭐ 如果这个项目对您有帮助,请给它一个 Star!**
|
||||||
|
|
||||||
|
最后更新:2025年10月15日
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# 自动控制原理AI+数智平台 - 依赖包列表
|
||||||
|
# Python 版本要求: Python 3.8+
|
||||||
|
|
||||||
|
# Web 界面框架
|
||||||
|
gradio>=4.0.0
|
||||||
|
|
||||||
|
# 科学计算库
|
||||||
|
numpy>=1.21.0
|
||||||
|
|
||||||
|
# 控制系统分析库
|
||||||
|
control>=0.9.0
|
||||||
|
|
||||||
|
# 绘图库
|
||||||
|
matplotlib>=3.5.0
|
||||||
|
|
||||||
|
# 异步 HTTP 客户端(用于 AI 问答)
|
||||||
|
aiohttp>=3.8.0
|
||||||
|
|
||||||
|
# 可选:数据处理
|
||||||
|
scipy>=1.7.0
|
||||||
Reference in New Issue
Block a user