feat: 重构项目结构并添加新功能
- 新增Cloudflare AutoRAG/Vectorize集成文档 - 实现Vertex AI记忆银行功能 - 重构项目目录结构,清理无用文件 - 更新README以反映最新架构 - 添加Google ADK集成测试脚本 - 完善需求文档和设计规范
This commit is contained in:
184
docs/AUTORAG_INTEGRATION_PROMPT.md
Normal file
184
docs/AUTORAG_INTEGRATION_PROMPT.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# 稷下学宫AI辩论系统 - AutoRAG集成提示词
|
||||
|
||||
## 🏛️ 系统概述
|
||||
|
||||
稷下学宫是一个基于中国传统哲学的AI辩论系统,模拟古代稷下学宫的学术辩论环境。系统中有八位仙人智能体,每位都有独特的投资哲学和辩论风格,需要通过AutoRAG服务获取相关的历史智慧和知识支持。
|
||||
|
||||
## 🎭 八仙智能体角色
|
||||
|
||||
### 铁拐李 (巽卦) - 逆向投资大师
|
||||
- **投资哲学**: 逆向思维,挑战市场共识
|
||||
- **记忆重点**: 市场异常、逆向案例、风险警示、反向策略
|
||||
- **辩论风格**: 质疑主流观点,提出反向思考
|
||||
|
||||
### 吕洞宾 (乾卦) - 理性分析者
|
||||
- **投资哲学**: 技术分析专家,数据驱动决策
|
||||
- **记忆重点**: 技术分析、数据洞察、逻辑推理、理性决策
|
||||
- **辩论风格**: 基于数据和逻辑的严密分析
|
||||
|
||||
### 何仙姑 (坤卦) - 直觉洞察者
|
||||
- **投资哲学**: 风险控制专家,情感智慧
|
||||
- **记忆重点**: 市场情绪、直觉判断、情感因素、人性洞察
|
||||
- **辩论风格**: 基于直觉和情感智慧的分析
|
||||
|
||||
### 张果老 (兑卦) - 历史智慧者
|
||||
- **投资哲学**: 历史数据分析师,经验导向
|
||||
- **记忆重点**: 历史案例、长期趋势、周期规律、经验教训
|
||||
- **辩论风格**: 引用历史案例和长期趋势
|
||||
|
||||
### 汉钟离 (离卦) - 平衡协调者
|
||||
- **投资哲学**: 热点追踪专家,平衡思维
|
||||
- **记忆重点**: 平衡策略、综合分析、协调方案、稳健建议
|
||||
- **辩论风格**: 寻求各方观点的平衡点
|
||||
|
||||
### 蓝采和 (坎卦) - 创新思维者
|
||||
- **投资哲学**: 潜力股发现者,创新导向
|
||||
- **记忆重点**: 创新机会、新兴趋势、潜力发现、灵活策略
|
||||
- **辩论风格**: 发现新兴机会和创新角度
|
||||
|
||||
### 韩湘子 (艮卦) - 艺术感知者
|
||||
- **投资哲学**: 新兴资产专家,美学视角
|
||||
- **记忆重点**: 美学趋势、创意洞察、感性分析、艺术视角
|
||||
- **辩论风格**: 从美学和艺术角度分析市场
|
||||
|
||||
### 曹国舅 (震卦) - 实务执行者
|
||||
- **投资哲学**: 机构视角分析师,实务导向
|
||||
- **记忆重点**: 执行策略、机构动向、实务操作、专业分析
|
||||
- **辩论风格**: 关注实际执行和机构操作
|
||||
|
||||
## 🔍 AutoRAG查询需求
|
||||
|
||||
### 查询类型
|
||||
1. **历史智慧检索**: 根据辩论主题查找相关的古代智慧、哲学思想
|
||||
2. **投资案例搜索**: 寻找历史上的投资成功/失败案例
|
||||
3. **市场周期分析**: 查找关于市场周期、经济规律的古籍记录
|
||||
4. **风险管理智慧**: 搜索古代关于风险控制、谨慎投资的思想
|
||||
5. **人性洞察**: 查找关于人性、情绪、群体心理的古代观察
|
||||
|
||||
### 期望的AutoRAG接口
|
||||
|
||||
#### 1. 嵌入生成接口
|
||||
```
|
||||
POST /embed
|
||||
{
|
||||
"text": "需要生成嵌入的文本内容"
|
||||
}
|
||||
|
||||
响应:
|
||||
{
|
||||
"embedding": [0.1, 0.2, ...], // 1024维BGE-M3嵌入向量
|
||||
"model": "bge-m3"
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. 记忆存储接口
|
||||
```
|
||||
POST /upsert
|
||||
{
|
||||
"vectors": [
|
||||
{
|
||||
"id": "memory_uuid",
|
||||
"values": [0.1, 0.2, ...],
|
||||
"metadata": {
|
||||
"agent_name": "tieguaili",
|
||||
"chinese_name": "铁拐李",
|
||||
"content": "记忆内容",
|
||||
"memory_type": "knowledge|conversation|preference|strategy",
|
||||
"debate_topic": "辩论主题",
|
||||
"timestamp": "2024-01-01T00:00:00Z"
|
||||
}
|
||||
}
|
||||
],
|
||||
"namespace": "agent_name" // 智能体命名空间
|
||||
}
|
||||
|
||||
响应:
|
||||
{
|
||||
"success": true,
|
||||
"inserted_count": 1
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. 记忆检索接口
|
||||
```
|
||||
POST /query
|
||||
{
|
||||
"vector": [0.1, 0.2, ...], // 查询向量
|
||||
"topK": 10, // 返回数量
|
||||
"namespace": "tieguaili", // 智能体命名空间
|
||||
"filter": { // 可选过滤条件
|
||||
"memory_type": "knowledge"
|
||||
}
|
||||
}
|
||||
|
||||
响应:
|
||||
{
|
||||
"matches": [
|
||||
{
|
||||
"id": "memory_uuid",
|
||||
"score": 0.95,
|
||||
"metadata": {
|
||||
"content": "相关记忆内容",
|
||||
"agent_name": "tieguaili",
|
||||
"memory_type": "knowledge",
|
||||
"debate_topic": "投资哲学"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 📝 使用场景示例
|
||||
|
||||
### 场景1: 辩论前的知识准备
|
||||
```
|
||||
辩论主题: "NVIDIA股票投资价值分析"
|
||||
|
||||
铁拐李查询: "历史上科技股泡沫的案例和教训"
|
||||
张果老查询: "古代关于新兴技术投资的智慧"
|
||||
何仙姑查询: "市场狂热时期的风险控制思想"
|
||||
```
|
||||
|
||||
### 场景2: 辩论中的观点支撑
|
||||
```
|
||||
当前观点: "AI技术发展存在过度炒作风险"
|
||||
|
||||
相关查询: "古代关于技术革新的理性思考"
|
||||
期望返回: 相关的古籍智慧,支持或反驳当前观点
|
||||
```
|
||||
|
||||
### 场景3: 辩论后的经验总结
|
||||
```
|
||||
辩论结果: 铁拐李的逆向观点获得认同
|
||||
|
||||
存储记忆: "在AI股票讨论中,逆向思维帮助识别了估值风险"
|
||||
记忆类型: strategy
|
||||
```
|
||||
|
||||
## 🎯 集成目标
|
||||
|
||||
1. **智能记忆**: 每位仙人都有独立的记忆空间,能够学习和积累经验
|
||||
2. **文化融合**: 将古代智慧与现代投资分析相结合
|
||||
3. **个性化**: 根据每位仙人的特点,提供差异化的知识支持
|
||||
4. **持续学习**: 通过辩论过程不断丰富和完善知识库
|
||||
|
||||
## 🔧 技术要求
|
||||
|
||||
- **向量维度**: 1024 (BGE-M3模型)
|
||||
- **命名空间**: 支持按智能体分离数据
|
||||
- **元数据**: 丰富的元数据支持,便于过滤和分类
|
||||
- **性能**: 低延迟的检索响应,支持实时辩论
|
||||
- **扩展性**: 支持未来添加更多智能体和记忆类型
|
||||
|
||||
## 🌟 期望效果
|
||||
|
||||
通过AutoRAG集成,稷下学宫将实现:
|
||||
- 🧠 **智慧传承**: 古代哲学智慧指导现代投资决策
|
||||
- 🎭 **角色一致**: 每位仙人保持独特的人格和观点
|
||||
- 📚 **知识积累**: 持续学习和经验沉淀
|
||||
- 🔄 **动态辩论**: 基于历史记忆的深度讨论
|
||||
- 🎯 **精准分析**: 结合传统智慧的投资洞察
|
||||
|
||||
---
|
||||
|
||||
**让AI辩论照亮投资智慧,让古代智慧指引现代决策** 🏛️✨
|
||||
218
docs/GITHUB_PAGES_PUBLISH_PLAN.md
Normal file
218
docs/GITHUB_PAGES_PUBLISH_PLAN.md
Normal file
@@ -0,0 +1,218 @@
|
||||
# 🌐 GitHub Pages 发布计划
|
||||
|
||||
## 📋 发布内容规划
|
||||
|
||||
### **🎯 发布目标**
|
||||
- 展示项目功能和特性
|
||||
- 提供用户友好的文档
|
||||
- 吸引潜在用户和贡献者
|
||||
- 保持专业形象
|
||||
|
||||
### **✅ 适合发布的内容**
|
||||
|
||||
#### **1. 项目主页 (根目录)**
|
||||
```
|
||||
/
|
||||
├── README.md # 项目主介绍
|
||||
├── RELEASE_v2.0.0.md # 版本发布说明
|
||||
├── QUICK_START_GUIDE.md # 快速上手指南
|
||||
├── VERSION # 版本号
|
||||
├── requirements.txt # 依赖清单
|
||||
└── .gitignore # Git忽略文件
|
||||
```
|
||||
|
||||
#### **2. 用户文档 (docs/)**
|
||||
```
|
||||
docs/
|
||||
├── index.md # 文档首页
|
||||
├── guides/ # 用户指南
|
||||
│ ├── quick-start.md # 快速开始
|
||||
│ ├── installation.md # 安装指南
|
||||
│ ├── configuration.md # 配置指南
|
||||
│ ├── cloudflare-integration.md # Cloudflare集成
|
||||
│ ├── google-adk-migration.md # Google ADK迁移
|
||||
│ └── load-balancing.md # 负载均衡指南
|
||||
├── features/ # 功能特性
|
||||
│ ├── debate-system.md # 辩论系统
|
||||
│ ├── memory-bank.md # 记忆系统
|
||||
│ ├── eight-immortals.md # 八仙系统
|
||||
│ └── tianxia-analysis.md # 天下体系
|
||||
├── api/ # API文档
|
||||
│ ├── rapidapi-setup.md # RapidAPI设置
|
||||
│ └── vertex-memory-bank.md # Memory Bank API
|
||||
└── examples/ # 示例代码
|
||||
├── basic-usage.md # 基础用法
|
||||
└── advanced-features.md # 高级功能
|
||||
```
|
||||
|
||||
#### **3. 设计文档 (design/)**
|
||||
```
|
||||
design/
|
||||
├── overview.md # 项目概览
|
||||
├── architecture.md # 系统架构
|
||||
├── debate-system.md # 辩论系统设计
|
||||
└── roadmap.md # 开发路线图
|
||||
```
|
||||
|
||||
#### **4. 演示和示例**
|
||||
```
|
||||
examples/
|
||||
├── basic-debate.md # 基础辩论示例
|
||||
├── memory-bank-demo.md # 记忆系统演示
|
||||
└── load-balancing-demo.md # 负载均衡演示
|
||||
```
|
||||
|
||||
### **🔒 保留在 internal/ 的内容**
|
||||
|
||||
#### **1. 内部开发文档**
|
||||
- 开发计划和路线图
|
||||
- 技术实现细节
|
||||
- 内部策略文档
|
||||
- 代码审查记录
|
||||
|
||||
#### **2. 敏感信息**
|
||||
- API密钥配置
|
||||
- 内部分析报告
|
||||
- 迁移方案细节
|
||||
- 历史文档
|
||||
|
||||
#### **3. 配置文件**
|
||||
- 环境配置
|
||||
- 内部脚本
|
||||
- AI助手配置
|
||||
|
||||
## 🚀 发布步骤
|
||||
|
||||
### **第一阶段:内容准备**
|
||||
1. **优化 README.md**
|
||||
- 添加项目徽章
|
||||
- 完善功能介绍
|
||||
- 添加截图和演示
|
||||
- 优化安装说明
|
||||
|
||||
2. **创建文档首页**
|
||||
- 设计文档结构
|
||||
- 创建导航菜单
|
||||
- 添加搜索功能
|
||||
|
||||
3. **整理用户指南**
|
||||
- 统一文档格式
|
||||
- 添加代码示例
|
||||
- 完善配置说明
|
||||
|
||||
### **第二阶段:GitHub Pages 配置**
|
||||
1. **启用 GitHub Pages**
|
||||
```bash
|
||||
# 在仓库设置中启用 GitHub Pages
|
||||
# 选择 docs/ 文件夹作为源
|
||||
```
|
||||
|
||||
2. **配置 Jekyll 主题**
|
||||
```yaml
|
||||
# _config.yml
|
||||
title: 太公心易 - 稷下学宫AI辩论系统
|
||||
description: 基于中国哲学传统的多AI智能体辩论平台
|
||||
theme: jekyll-theme-cayman
|
||||
```
|
||||
|
||||
3. **创建导航结构**
|
||||
```markdown
|
||||
# docs/index.md
|
||||
---
|
||||
layout: default
|
||||
title: 太公心易文档
|
||||
---
|
||||
```
|
||||
|
||||
### **第三阶段:内容发布**
|
||||
1. **发布核心文档**
|
||||
- 项目介绍
|
||||
- 快速开始指南
|
||||
- 功能特性说明
|
||||
|
||||
2. **发布用户指南**
|
||||
- 安装配置
|
||||
- 使用教程
|
||||
- 示例代码
|
||||
|
||||
3. **发布设计文档**
|
||||
- 系统架构
|
||||
- 技术设计
|
||||
- 开发路线图
|
||||
|
||||
## 📊 发布效果预期
|
||||
|
||||
### **用户访问路径**
|
||||
```
|
||||
GitHub Pages 首页
|
||||
├── 项目介绍 → README.md
|
||||
├── 快速开始 → QUICK_START_GUIDE.md
|
||||
├── 用户指南 → docs/guides/
|
||||
├── 功能特性 → docs/features/
|
||||
├── API文档 → docs/api/
|
||||
└── 示例代码 → docs/examples/
|
||||
```
|
||||
|
||||
### **SEO 优化**
|
||||
- 添加 meta 标签
|
||||
- 优化标题和描述
|
||||
- 添加关键词
|
||||
- 创建 sitemap
|
||||
|
||||
### **用户体验**
|
||||
- 响应式设计
|
||||
- 快速加载
|
||||
- 清晰导航
|
||||
- 搜索功能
|
||||
|
||||
## 🔧 技术实现
|
||||
|
||||
### **GitHub Pages 配置**
|
||||
```yaml
|
||||
# .github/workflows/pages.yml
|
||||
name: Deploy to GitHub Pages
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./docs
|
||||
```
|
||||
|
||||
### **文档结构优化**
|
||||
- 使用 Markdown 格式
|
||||
- 添加目录导航
|
||||
- 统一代码高亮
|
||||
- 优化图片显示
|
||||
|
||||
## 📈 维护计划
|
||||
|
||||
### **定期更新**
|
||||
- 每月更新功能文档
|
||||
- 季度更新架构文档
|
||||
- 及时更新版本说明
|
||||
|
||||
### **用户反馈**
|
||||
- 收集用户问题
|
||||
- 更新常见问题
|
||||
- 优化文档内容
|
||||
|
||||
### **版本同步**
|
||||
- 保持文档与代码同步
|
||||
- 及时发布新版本说明
|
||||
- 维护版本历史
|
||||
|
||||
---
|
||||
|
||||
**发布状态**:🔄 计划中
|
||||
**预计完成**:2025年8月底
|
||||
270
docs/VERTEX_MEMORY_BANK_SETUP.md
Normal file
270
docs/VERTEX_MEMORY_BANK_SETUP.md
Normal file
@@ -0,0 +1,270 @@
|
||||
# Vertex AI Memory Bank 配置指南
|
||||
|
||||
## 🏛️ 稷下学宫记忆银行集成
|
||||
|
||||
本文档介绍如何为稷下学宫AI辩论系统配置和使用Vertex AI Memory Bank功能。
|
||||
|
||||
## 📋 前置要求
|
||||
|
||||
### 1. Google Cloud 项目设置
|
||||
- 有效的 Google Cloud 项目
|
||||
- 启用 Vertex AI API
|
||||
- 配置适当的 IAM 权限
|
||||
|
||||
### 2. 必需的依赖
|
||||
```bash
|
||||
pip install google-cloud-aiplatform>=1.38.0
|
||||
pip install google-adk # 或开发版本
|
||||
```
|
||||
|
||||
### 3. 环境变量配置
|
||||
在 Doppler 或本地环境中设置以下变量:
|
||||
|
||||
```bash
|
||||
# 必需配置
|
||||
GOOGLE_API_KEY=your_gemini_api_key
|
||||
GOOGLE_CLOUD_PROJECT_ID=your-project-id
|
||||
|
||||
# 可选配置
|
||||
GOOGLE_CLOUD_LOCATION=us-central1 # 默认区域
|
||||
VERTEX_MEMORY_BANK_ENABLED=TRUE # 启用记忆银行
|
||||
GOOGLE_SERVICE_ACCOUNT_KEY=path/to/service-account.json # 服务账号密钥
|
||||
```
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 验证配置
|
||||
```bash
|
||||
# 验证 Google ADK 配置
|
||||
python config/doppler_config.py
|
||||
|
||||
# 测试 Memory Bank 连接
|
||||
python tests/test_vertex_memory_bank.py
|
||||
```
|
||||
|
||||
### 2. 初始化八仙记忆银行
|
||||
```python
|
||||
from src.jixia.memory.vertex_memory_bank import initialize_baxian_memory_banks
|
||||
|
||||
# 初始化所有八仙的记忆银行
|
||||
memory_bank = await initialize_baxian_memory_banks(
|
||||
project_id="your-project-id",
|
||||
location="us-central1"
|
||||
)
|
||||
```
|
||||
|
||||
### 3. 创建记忆增强智能体
|
||||
```python
|
||||
from src.jixia.agents.memory_enhanced_agent import create_memory_enhanced_council
|
||||
|
||||
# 创建记忆增强的八仙议会
|
||||
council = await create_memory_enhanced_council()
|
||||
|
||||
# 进行记忆增强辩论
|
||||
result = await council.conduct_memory_debate(
|
||||
topic="NVIDIA股票投资分析",
|
||||
participants=["tieguaili", "lvdongbin", "hexiangu"],
|
||||
rounds=3
|
||||
)
|
||||
```
|
||||
|
||||
## 🎭 八仙记忆特性
|
||||
|
||||
每位仙人都有独特的记忆重点和学习模式:
|
||||
|
||||
### 铁拐李 (逆向投资大师)
|
||||
- **记忆重点**: 市场异常、逆向案例、风险警示、反向策略
|
||||
- **学习模式**: 关注市场共识的反面,记住历史上的逆向成功案例
|
||||
|
||||
### 吕洞宾 (理性分析者)
|
||||
- **记忆重点**: 技术分析、数据洞察、逻辑推理、理性决策
|
||||
- **学习模式**: 基于数据和逻辑的严密分析,记住成功的分析框架
|
||||
|
||||
### 何仙姑 (直觉洞察者)
|
||||
- **记忆重点**: 市场情绪、直觉判断、情感因素、人性洞察
|
||||
- **学习模式**: 关注市场情绪变化,记住情感驱动的市场事件
|
||||
|
||||
### 张果老 (历史智慧者)
|
||||
- **记忆重点**: 历史案例、长期趋势、周期规律、经验教训
|
||||
- **学习模式**: 从历史中学习,记住重要的历史模式和教训
|
||||
|
||||
### 汉钟离 (平衡协调者)
|
||||
- **记忆重点**: 平衡策略、综合分析、协调方案、稳健建议
|
||||
- **学习模式**: 寻求各方观点的平衡,记住成功的协调案例
|
||||
|
||||
### 蓝采和 (创新思维者)
|
||||
- **记忆重点**: 创新机会、新兴趋势、潜力发现、灵活策略
|
||||
- **学习模式**: 发现新兴机会,记住创新投资的成功案例
|
||||
|
||||
### 韩湘子 (艺术感知者)
|
||||
- **记忆重点**: 美学趋势、创意洞察、感性分析、艺术视角
|
||||
- **学习模式**: 从美学角度分析市场,记住艺术和创意相关的投资
|
||||
|
||||
### 曹国舅 (实务执行者)
|
||||
- **记忆重点**: 执行策略、机构动向、实务操作、专业分析
|
||||
- **学习模式**: 关注实际执行,记住机构操作和专业分析
|
||||
|
||||
## 🔧 高级配置
|
||||
|
||||
### 1. 自定义记忆类型
|
||||
```python
|
||||
# 支持的记忆类型
|
||||
MEMORY_TYPES = [
|
||||
"conversation", # 对话记忆
|
||||
"preference", # 偏好记忆
|
||||
"knowledge", # 知识记忆
|
||||
"strategy" # 策略记忆
|
||||
]
|
||||
|
||||
# 添加自定义记忆
|
||||
await memory_bank.add_memory(
|
||||
agent_name="tieguaili",
|
||||
content="在熊市中,逆向投资策略往往更有效",
|
||||
memory_type="strategy",
|
||||
debate_topic="市场策略",
|
||||
metadata={
|
||||
"market_condition": "bear_market",
|
||||
"confidence": 0.8,
|
||||
"source": "historical_analysis"
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
### 2. 记忆搜索和过滤
|
||||
```python
|
||||
# 搜索特定类型的记忆
|
||||
strategy_memories = await memory_bank.search_memories(
|
||||
agent_name="tieguaili",
|
||||
query="逆向投资",
|
||||
memory_type="strategy",
|
||||
limit=10
|
||||
)
|
||||
|
||||
# 获取智能体的完整上下文
|
||||
context = await memory_bank.get_agent_context(
|
||||
agent_name="tieguaili",
|
||||
debate_topic="NVIDIA投资分析"
|
||||
)
|
||||
```
|
||||
|
||||
### 3. 辩论会话保存
|
||||
```python
|
||||
# 自动保存辩论会话
|
||||
await memory_bank.save_debate_session(
|
||||
debate_topic="比特币投资价值",
|
||||
participants=["tieguaili", "lvdongbin", "hexiangu"],
|
||||
conversation_history=conversation_history,
|
||||
outcomes={
|
||||
"winner": "tieguaili",
|
||||
"key_insights": ["逆向思维在加密货币投资中的重要性"],
|
||||
"consensus": "需要更谨慎的风险管理"
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
## 📊 监控和管理
|
||||
|
||||
### 1. 记忆银行状态检查
|
||||
```python
|
||||
# 检查记忆银行状态
|
||||
for agent_name, bank_name in memory_bank.memory_banks.items():
|
||||
chinese_name = memory_bank.baxian_agents[agent_name]
|
||||
print(f"{chinese_name}: {bank_name}")
|
||||
```
|
||||
|
||||
### 2. 记忆使用统计
|
||||
```python
|
||||
# 获取记忆统计信息
|
||||
stats = await memory_bank.get_memory_stats(agent_name="tieguaili")
|
||||
print(f"总记忆数: {stats['total_memories']}")
|
||||
print(f"对话记忆: {stats['conversation_count']}")
|
||||
print(f"策略记忆: {stats['strategy_count']}")
|
||||
```
|
||||
|
||||
### 3. 记忆清理和维护
|
||||
```python
|
||||
# 清理过期记忆(如果需要)
|
||||
await memory_bank.cleanup_old_memories(
|
||||
agent_name="tieguaili",
|
||||
days_old=30,
|
||||
memory_type="conversation"
|
||||
)
|
||||
```
|
||||
|
||||
## 🔒 安全和隐私
|
||||
|
||||
### 1. 数据加密
|
||||
- 所有记忆数据在传输和存储时都会加密
|
||||
- 使用 Google Cloud 的企业级安全措施
|
||||
|
||||
### 2. 访问控制
|
||||
- 每个智能体只能访问自己的记忆银行
|
||||
- 通过 IAM 控制项目级别的访问权限
|
||||
|
||||
### 3. 数据保留
|
||||
- 可以配置记忆数据的保留期限
|
||||
- 支持手动删除敏感记忆
|
||||
|
||||
## 🚨 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
#### 1. 项目ID未配置
|
||||
```
|
||||
❌ Google Cloud Project ID 未配置
|
||||
```
|
||||
**解决方案**: 设置 `GOOGLE_CLOUD_PROJECT_ID` 环境变量
|
||||
|
||||
#### 2. API权限不足
|
||||
```
|
||||
❌ 403 Forbidden: Vertex AI API access denied
|
||||
```
|
||||
**解决方案**:
|
||||
- 在 Google Cloud Console 中启用 Vertex AI API
|
||||
- 确保服务账号有适当的权限
|
||||
|
||||
#### 3. 记忆银行创建失败
|
||||
```
|
||||
❌ 创建记忆银行失败: Region not supported
|
||||
```
|
||||
**解决方案**:
|
||||
- 检查 `GOOGLE_CLOUD_LOCATION` 设置
|
||||
- 使用支持 Memory Bank 的区域(如 us-central1)
|
||||
|
||||
#### 4. 依赖包缺失
|
||||
```
|
||||
❌ Google Cloud AI Platform 未安装
|
||||
```
|
||||
**解决方案**:
|
||||
```bash
|
||||
pip install google-cloud-aiplatform>=1.38.0
|
||||
```
|
||||
|
||||
### 调试模式
|
||||
```python
|
||||
# 启用详细日志
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
# 测试连接
|
||||
python tests/test_vertex_memory_bank.py
|
||||
```
|
||||
|
||||
## 📚 参考资源
|
||||
|
||||
- [Vertex AI Memory Bank 官方文档](https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-memory-bank-in-public-preview)
|
||||
- [Google ADK 文档](https://github.com/google/adk-python)
|
||||
- [稷下学宫项目文档](../README.md)
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
如果你想为 Memory Bank 功能贡献代码:
|
||||
|
||||
1. 确保所有新功能都有对应的测试
|
||||
2. 遵循现有的代码风格和注释规范
|
||||
3. 更新相关文档
|
||||
4. 提交 Pull Request 前运行完整的测试套件
|
||||
|
||||
---
|
||||
|
||||
**让AI辩论照亮投资智慧,记忆银行让智慧永续传承** 🏛️✨
|
||||
2884
docs/analysis/meta_analysis_results.txt
Normal file
2884
docs/analysis/meta_analysis_results.txt
Normal file
File diff suppressed because it is too large
Load Diff
140
docs/analysis/rss_debug_analysis.md
Normal file
140
docs/analysis/rss_debug_analysis.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# RSS代码只能抓取一条数据的问题分析
|
||||
|
||||
## 问题现象
|
||||
原代码期望抓取100条RSS数据,但实际只能抓取到1条数据。
|
||||
|
||||
## 可能的原因分析
|
||||
|
||||
### 1. RSS数据结构识别问题
|
||||
**最可能的原因**:RSS数据的实际结构与代码中的4种预设情况都不匹配。
|
||||
|
||||
常见的RSS数据结构包括:
|
||||
- `rss.channel.item[]` (标准RSS 2.0)
|
||||
- `feed.entry[]` (Atom格式)
|
||||
- `channel.item[]` (简化RSS)
|
||||
- `data[]` (某些API返回格式)
|
||||
- 直接的对象数组
|
||||
|
||||
### 2. 输入数据获取问题
|
||||
```javascript
|
||||
const rssSource = inputs[0]?.json; // 可能inputs[0]为空或结构不对
|
||||
```
|
||||
|
||||
### 3. 去重逻辑过于严格
|
||||
如果MongoDB中已有大量数据,可能导致新数据被过度过滤。
|
||||
|
||||
### 4. 错误处理不足
|
||||
原代码缺乏详细的调试信息,难以定位具体问题。
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 1. 增强数据结构识别
|
||||
```javascript
|
||||
// 扩展RSS结构处理
|
||||
if (rssSource?.rss?.channel?.item && Array.isArray(rssSource.rss.channel.item)) {
|
||||
rssItems = rssSource.rss.channel.item;
|
||||
}
|
||||
else if (rssSource?.feed?.entry && Array.isArray(rssSource.feed.entry)) {
|
||||
rssItems = rssSource.feed.entry;
|
||||
}
|
||||
// ... 更多结构支持
|
||||
```
|
||||
|
||||
### 2. 添加详细调试信息
|
||||
```javascript
|
||||
console.log('输入数据结构:', JSON.stringify(inputs[0], null, 2).substring(0, 500));
|
||||
console.log('RSS源数据的所有键:', Object.keys(rssSource || {}));
|
||||
```
|
||||
|
||||
### 3. 改进去重逻辑
|
||||
```javascript
|
||||
// 只有当MongoDB确实有数据时才进行去重
|
||||
if (existingItems.length > 0 && existingItems[0] !== null) {
|
||||
// 执行去重逻辑
|
||||
} else {
|
||||
console.log('MongoDB中无现有数据,跳过去重检查');
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 增强错误处理
|
||||
```javascript
|
||||
try {
|
||||
// 主要逻辑
|
||||
} catch (error) {
|
||||
console.error("处理错误:", error.message);
|
||||
console.error("错误堆栈:", error.stack);
|
||||
}
|
||||
```
|
||||
|
||||
## 调试步骤
|
||||
|
||||
1. **检查输入数据结构**
|
||||
```javascript
|
||||
console.log('inputs长度:', inputs.length);
|
||||
console.log('第一个输入:', inputs[0]);
|
||||
```
|
||||
|
||||
2. **检查RSS源数据**
|
||||
```javascript
|
||||
console.log('RSS源数据类型:', typeof rssSource);
|
||||
console.log('RSS源数据键:', Object.keys(rssSource || {}));
|
||||
```
|
||||
|
||||
3. **检查提取结果**
|
||||
```javascript
|
||||
console.log('提取到的RSS条目数:', rssItems.length);
|
||||
console.log('第一个RSS条目:', rssItems[0]);
|
||||
```
|
||||
|
||||
4. **检查去重影响**
|
||||
```javascript
|
||||
console.log('MongoDB现有数据数量:', existingItems.length);
|
||||
console.log('去重后输出数量:', outputItems.length);
|
||||
```
|
||||
|
||||
## 建议的修复代码
|
||||
|
||||
使用 `improved_rss_code.js` 中的改进版本,它包含:
|
||||
- 更全面的RSS结构支持
|
||||
- 详细的调试信息输出
|
||||
- 改进的去重逻辑
|
||||
- 更好的错误处理
|
||||
- 更灵活的字段映射
|
||||
|
||||
## 常见RSS结构示例
|
||||
|
||||
### RSS 2.0格式
|
||||
```json
|
||||
{
|
||||
"rss": {
|
||||
"channel": {
|
||||
"item": [
|
||||
{"title": "新闻1", "link": "url1"},
|
||||
{"title": "新闻2", "link": "url2"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Atom格式
|
||||
```json
|
||||
{
|
||||
"feed": {
|
||||
"entry": [
|
||||
{"title": "新闻1", "link": {"href": "url1"}},
|
||||
{"title": "新闻2", "link": {"href": "url2"}}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 简化格式
|
||||
```json
|
||||
{
|
||||
"items": [
|
||||
{"title": "新闻1", "url": "url1"},
|
||||
{"title": "新闻2", "url": "url2"}
|
||||
]
|
||||
}
|
||||
```
|
||||
211
docs/guides/GOOGLE_ADK_MIGRATION_GUIDE.md
Normal file
211
docs/guides/GOOGLE_ADK_MIGRATION_GUIDE.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 🔄 Google ADK 迁移指南
|
||||
|
||||
## 📋 迁移概述
|
||||
|
||||
本指南将帮助您将项目从当前的 OpenRouter/OpenAI Swarm 架构迁移到 Google Agent Development Kit (ADK)。
|
||||
|
||||
## 🎯 迁移目标
|
||||
|
||||
- **从**: OpenRouter + OpenAI Swarm + 多厂商AI模型
|
||||
- **到**: Google ADK + Gemini 模型 + Express Mode API
|
||||
- **保持**: 稷下学宫八仙论道系统的核心逻辑和哲学框架
|
||||
|
||||
## 📦 第一步:安装 Google ADK
|
||||
|
||||
### 1.1 更新 Python 环境要求
|
||||
|
||||
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
|
||||
|
||||
```bash
|
||||
# 确保 Python 3.9+ 版本
|
||||
python --version
|
||||
|
||||
# 创建新的虚拟环境(推荐)
|
||||
python -m venv .venv
|
||||
|
||||
# 激活虚拟环境
|
||||
# macOS/Linux:
|
||||
source .venv/bin/activate
|
||||
# Windows CMD:
|
||||
# .venv\Scripts\activate.bat
|
||||
# Windows PowerShell:
|
||||
# .venv\Scripts\Activate.ps1
|
||||
```
|
||||
|
||||
### 1.2 安装 Google ADK
|
||||
|
||||
<mcreference link="https://pypi.org/project/google-adk/" index="2">2</mcreference>
|
||||
|
||||
```bash
|
||||
# 安装稳定版本
|
||||
pip install google-adk
|
||||
|
||||
# 或安装最新开发版本
|
||||
pip install git+https://github.com/google/adk-python.git@main
|
||||
```
|
||||
|
||||
## 🔑 第二步:配置 API 密钥
|
||||
|
||||
### 2.1 获取 Gemini API 密钥
|
||||
|
||||
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
|
||||
|
||||
您有三种选择:
|
||||
|
||||
**选项A: Google AI Studio (推荐开发环境)**
|
||||
- 前往 [Google AI Studio](https://aistudio.google.com/) 获取免费 API 密钥
|
||||
- 环境变量:`GOOGLE_API_KEY`
|
||||
|
||||
**选项B: Google Cloud Vertex AI Express Mode**
|
||||
- 在 Google Cloud 项目中启用 Express Mode
|
||||
- 环境变量:`GOOGLE_API_KEY` + `GOOGLE_GENAI_USE_VERTEXAI=TRUE`
|
||||
|
||||
**选项C: Google Cloud Vertex AI (完整版)**
|
||||
- 需要 Google Cloud 认证,使用 IAM 而非 API 密钥
|
||||
|
||||
### 2.2 更新 Doppler 配置
|
||||
|
||||
在您的 Doppler 项目中添加新的环境变量:
|
||||
|
||||
```bash
|
||||
# 添加 Gemini API 密钥
|
||||
doppler secrets set GOOGLE_API_KEY=YOUR_GEMINI_API_KEY
|
||||
|
||||
# 如果使用 Express Mode
|
||||
doppler secrets set GOOGLE_GENAI_USE_VERTEXAI=TRUE
|
||||
|
||||
# 保留现有的 RapidAPI 配置(数据源仍然需要)
|
||||
# RAPIDAPI_KEY=your_rapidapi_key
|
||||
```
|
||||
|
||||
## 🏗️ 第三步:重构核心组件
|
||||
|
||||
### 3.1 更新配置管理
|
||||
|
||||
需要更新 `config/doppler_config.py`:
|
||||
|
||||
```python
|
||||
def get_google_api_key() -> str:
|
||||
"""获取 Google API 密钥"""
|
||||
return get_secret('GOOGLE_API_KEY')
|
||||
|
||||
def get_google_genai_config() -> Dict[str, str]:
|
||||
"""获取 Google GenAI 配置"""
|
||||
return {
|
||||
'api_key': get_google_api_key(),
|
||||
'use_vertex_ai': get_secret('GOOGLE_GENAI_USE_VERTEXAI', 'FALSE'),
|
||||
'project_id': get_secret('GOOGLE_CLOUD_PROJECT_ID', '')
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 重构稷下学宫智能体系统
|
||||
|
||||
将基于 OpenAI Swarm 的八仙论道系统迁移到 ADK:
|
||||
|
||||
**原架构**: `src/jixia/debates/swarm_debate.py` (OpenAI Swarm)
|
||||
**新架构**: `src/jixia/debates/adk_debate.py` (Google ADK)
|
||||
|
||||
### 3.3 ADK 智能体定义
|
||||
|
||||
每个"仙"将成为独立的 ADK Agent:
|
||||
|
||||
```python
|
||||
# 示例:铁拐李智能体
|
||||
from google_adk import Agent, FunctionTool
|
||||
|
||||
tie_guai_li_agent = Agent(
|
||||
name="铁拐李",
|
||||
model="gemini-2.0-flash-exp",
|
||||
description="逆向思维专家,善于从困境中寻找突破",
|
||||
system_message="你是铁拐李,八仙中的逆向思维专家...",
|
||||
tools=[
|
||||
FunctionTool(name="逆向分析", function=reverse_analysis),
|
||||
FunctionTool(name="困境突破", function=breakthrough_analysis)
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
## 🔄 第四步:分阶段迁移策略
|
||||
|
||||
### 阶段1:基础设施迁移 (第1-2天)
|
||||
- [ ] 安装 Google ADK
|
||||
- [ ] 配置 API 密钥
|
||||
- [ ] 创建简单的测试智能体
|
||||
- [ ] 验证基本功能
|
||||
|
||||
### 阶段2:核心逻辑迁移 (第3-5天)
|
||||
- [ ] 重构八仙智能体定义
|
||||
- [ ] 迁移论道逻辑
|
||||
- [ ] 保持数据源 (RapidAPI) 集成
|
||||
- [ ] 测试单个智能体功能
|
||||
|
||||
### 阶段3:系统集成 (第6-7天)
|
||||
- [ ] 多智能体协作
|
||||
- [ ] Streamlit 界面适配
|
||||
- [ ] 完整功能测试
|
||||
- [ ] 性能优化
|
||||
|
||||
### 阶段4:部署和监控 (第8天)
|
||||
- [ ] 部署配置
|
||||
- [ ] 监控设置
|
||||
- [ ] 文档更新
|
||||
|
||||
## 📊 功能对照表
|
||||
|
||||
| 当前 (OpenRouter/Swarm) | 迁移后 (Google ADK) | 状态 |
|
||||
|-------------------------|-------------------|------|
|
||||
| OpenAI Swarm 多智能体 | ADK Multi-Agent | ✅ 等价替换 |
|
||||
| OpenRouter 模型池 | Gemini 模型系列 | ✅ 统一模型 |
|
||||
| 自定义 Tool 系统 | ADK FunctionTool | ✅ 等价替换 |
|
||||
| 论道逻辑 | ADK Agent协作 | ✅ 保持逻辑 |
|
||||
| RapidAPI 数据源 | 保持不变 | ✅ 无需改动 |
|
||||
| Streamlit 界面 | ADK Dev UI + Streamlit | ✅ 双界面 |
|
||||
|
||||
## 🎛️ 开发工具对比
|
||||
|
||||
### 当前工具
|
||||
- OpenRouter API 测试
|
||||
- 自定义调试脚本
|
||||
- Streamlit 界面
|
||||
|
||||
### ADK 工具
|
||||
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
|
||||
|
||||
```bash
|
||||
# ADK 开发界面 (推荐)
|
||||
adk web
|
||||
|
||||
# 命令行运行
|
||||
adk run multi_tool_agent
|
||||
|
||||
# API 服务器模式
|
||||
adk api_server
|
||||
```
|
||||
|
||||
## 🚨 注意事项
|
||||
|
||||
### 保留的组件
|
||||
- **RapidAPI 数据源**: 继续使用,无需更改
|
||||
- **MongoDB 数据库**: 继续使用
|
||||
- **Doppler 配置管理**: 继续使用,仅添加新密钥
|
||||
- **稷下学宫哲学框架**: 完全保持
|
||||
|
||||
### 移除的组件
|
||||
- OpenAI Swarm 依赖
|
||||
- OpenRouter API 调用
|
||||
- 多厂商 API 密钥管理
|
||||
|
||||
### 新增优势
|
||||
- **统一的模型生态**: 专注 Gemini 系列
|
||||
- **更强的 Google 服务集成**: Search、Cloud 等
|
||||
- **官方支持的框架**: 长期维护保证
|
||||
- **更好的开发工具**: ADK Dev UI
|
||||
|
||||
## 📝 下一步行动
|
||||
|
||||
1. **立即开始**: 运行第一步的环境配置
|
||||
2. **获取 API 密钥**: 访问 Google AI Studio
|
||||
3. **阅读 ADK 文档**: [官方文档](https://google.github.io/adk-docs/)
|
||||
4. **测试简单智能体**: 验证基本功能
|
||||
|
||||
准备好开始迁移了吗?我可以帮您逐步执行每个阶段!
|
||||
116
docs/guides/MIGRATION_PLAN.md
Normal file
116
docs/guides/MIGRATION_PLAN.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# 🚀 炼妖壶项目迁移计划
|
||||
|
||||
## 🎯 目标
|
||||
|
||||
从混乱的当前项目状态迁移到干净、安全、可维护的新项目结构。
|
||||
|
||||
## 📍 迁移路径
|
||||
|
||||
```
|
||||
当前位置: /home/ben/cauldron (混乱状态)
|
||||
目标位置: /home/ben/liurenchaxin (全新开始)
|
||||
```
|
||||
|
||||
## 📋 迁移步骤
|
||||
|
||||
### 阶段1: 文档准备 ✅
|
||||
- [x] 创建需求规范
|
||||
- [x] 制定迁移计划
|
||||
- [ ] 完善设计文档
|
||||
- [ ] 创建任务清单
|
||||
|
||||
### 阶段2: 环境准备
|
||||
- [ ] 创建新项目目录
|
||||
- [ ] 设置虚拟环境
|
||||
- [ ] 配置Doppler (干净的配置)
|
||||
- [ ] 建立Git仓库
|
||||
|
||||
### 阶段3: 核心功能迁移
|
||||
- [ ] 迁移稷下学宫AI辩论系统
|
||||
- [ ] 迁移Streamlit主界面
|
||||
- [ ] 迁移数据库连接模块
|
||||
- [ ] 迁移API集成代码
|
||||
|
||||
### 阶段4: 安全加固
|
||||
- [ ] 实施密钥管理最佳实践
|
||||
- [ ] 配置GitGuardian检查
|
||||
- [ ] 设置pre-commit hooks
|
||||
- [ ] 建立安全扫描流程
|
||||
|
||||
### 阶段5: 测试验证
|
||||
- [ ] 功能测试
|
||||
- [ ] 安全测试
|
||||
- [ ] 性能测试
|
||||
- [ ] 部署测试
|
||||
|
||||
## 🔒 安全原则
|
||||
|
||||
1. **零密钥原则** - 代码中绝不包含任何密钥
|
||||
2. **环境变量优先** - 所有配置通过环境变量
|
||||
3. **Doppler集中管理** - 统一的密钥管理
|
||||
4. **自动化检查** - 提交前自动安全扫描
|
||||
|
||||
## 📁 新项目结构
|
||||
|
||||
```
|
||||
liurenchaxin/
|
||||
├── app/ # 应用入口
|
||||
│ ├── streamlit_app.py # 主界面
|
||||
│ └── components/ # UI组件
|
||||
├── src/ # 核心代码
|
||||
│ ├── jixia/ # 稷下学宫系统
|
||||
│ ├── database/ # 数据库模块
|
||||
│ └── api/ # API集成
|
||||
├── config/ # 配置管理
|
||||
│ └── doppler_config.py # Doppler配置
|
||||
├── tests/ # 测试代码
|
||||
├── docs/ # 文档
|
||||
├── scripts/ # 工具脚本
|
||||
└── .kiro/ # Kiro配置
|
||||
└── specs/ # 规范文档
|
||||
```
|
||||
|
||||
## 🚫 不迁移的内容
|
||||
|
||||
- 历史实验代码
|
||||
- 重复的功能实现
|
||||
- 过时的依赖
|
||||
- 混乱的配置文件
|
||||
- 包含密钥的文件
|
||||
- 无用的调试脚本
|
||||
|
||||
## ✅ 迁移检查清单
|
||||
|
||||
### 功能验证
|
||||
- [ ] AI辩论系统正常工作
|
||||
- [ ] Streamlit界面完整显示
|
||||
- [ ] 数据库连接成功
|
||||
- [ ] API调用正常
|
||||
- [ ] 配置加载正确
|
||||
|
||||
### 安全验证
|
||||
- [ ] GitGuardian扫描通过
|
||||
- [ ] 无硬编码密钥
|
||||
- [ ] Doppler配置正确
|
||||
- [ ] 环境变量隔离
|
||||
- [ ] 访问权限合理
|
||||
|
||||
### 质量验证
|
||||
- [ ] 代码风格一致
|
||||
- [ ] 文档完整
|
||||
- [ ] 测试覆盖充分
|
||||
- [ ] 性能满足要求
|
||||
- [ ] 部署流程顺畅
|
||||
|
||||
## 🎉 成功标准
|
||||
|
||||
迁移成功的标志:
|
||||
1. 新项目通过所有安全扫描
|
||||
2. 核心功能100%可用
|
||||
3. 启动时间 < 30秒
|
||||
4. 代码质量 A级
|
||||
5. 文档完整度 > 90%
|
||||
|
||||
---
|
||||
|
||||
**准备好开始迁移了吗?让我们带着这些文档,前往新的开始!** 🚀
|
||||
275
docs/guides/README_jixia_load_balancing.md
Normal file
275
docs/guides/README_jixia_load_balancing.md
Normal file
@@ -0,0 +1,275 @@
|
||||
# 稷下学宫八仙论道 - RapidAPI负载均衡系统
|
||||
|
||||
## 🏛️ 系统概述
|
||||
|
||||
本系统实现了稷下学宫八仙论道的智能API负载均衡策略,通过将不同的RapidAPI数据源分配给不同的"仙人"角色,实现了高效的负载分担和数据获取。
|
||||
|
||||
### 🎯 核心目标
|
||||
- **负载分担**: 将API调用压力分散到多个数据源
|
||||
- **高可用性**: 通过故障转移确保服务连续性
|
||||
- **数据统一**: 标准化不同API的数据格式
|
||||
- **智能缓存**: 减少重复调用,提升响应速度
|
||||
- **实时监控**: 跟踪API健康状态和负载分布
|
||||
|
||||
## 👥 八仙角色与API分配
|
||||
|
||||
| 仙人 | 角色 | 专长 | 主要API | 备用API |
|
||||
|------|------|------|---------|----------|
|
||||
| 🗡️ 吕洞宾 | 主力剑仙 | 综合分析与决策 | Alpha Vantage | Webull, Yahoo Finance |
|
||||
| 🌸 何仙姑 | 风控专家 | 风险管理与合规 | Yahoo Finance 15 | Webull, Alpha Vantage |
|
||||
| 🧙 张果老 | 技术分析师 | 技术指标与图表分析 | Webull | Alpha Vantage, Yahoo Finance |
|
||||
| 🎵 韩湘子 | 基本面研究员 | 财务分析与估值 | Alpha Vantage | Seeking Alpha |
|
||||
| ⚡ 汉钟离 | 量化专家 | 数据挖掘与算法交易 | Yahoo Finance 15 | Alpha Vantage |
|
||||
| 🎭 蓝采和 | 情绪分析师 | 市场情绪与舆情监控 | Webull | Seeking Alpha |
|
||||
| 👑 曹国舅 | 宏观分析师 | 宏观经济与政策分析 | Seeking Alpha | Yahoo Finance |
|
||||
| 🦯 铁拐李 | 逆向投资专家 | 价值发现与逆向思维 | Alpha Vantage | Webull, Yahoo Finance |
|
||||
|
||||
## 📊 可用API资源
|
||||
|
||||
### 🥇 高性能API (第一优先级)
|
||||
- **Alpha Vantage**: 专业金融数据,实时报价,财务数据
|
||||
- **Webull**: 强大搜索功能,活跃数据,技术分析
|
||||
|
||||
### 🥈 标准API (第二优先级)
|
||||
- **Yahoo Finance 15**: 稳定市场数据,新闻资讯
|
||||
- **Seeking Alpha**: 分析报告,专业观点,新闻资讯
|
||||
|
||||
## 🏗️ 系统架构
|
||||
|
||||
```
|
||||
稷下学宫负载均衡系统
|
||||
├── 🎭 八仙角色层
|
||||
│ ├── 角色定义与专长分工
|
||||
│ ├── API偏好配置
|
||||
│ └── 数据类型映射
|
||||
├── 🔄 负载均衡层
|
||||
│ ├── 智能路由算法
|
||||
│ ├── 健康检查机制
|
||||
│ ├── 速率限制管理
|
||||
│ └── 故障转移策略
|
||||
├── 🌐 API接入层
|
||||
│ ├── Alpha Vantage 接口
|
||||
│ ├── Yahoo Finance 15 接口
|
||||
│ ├── Webull 接口
|
||||
│ └── Seeking Alpha 接口
|
||||
├── 🔧 数据处理层
|
||||
│ ├── 数据标准化处理
|
||||
│ ├── 格式统一转换
|
||||
│ └── 错误处理机制
|
||||
├── 💾 缓存层
|
||||
│ ├── 内存缓存管理
|
||||
│ ├── TTL策略控制
|
||||
│ └── 缓存命中优化
|
||||
└── 📊 监控层
|
||||
├── API调用统计
|
||||
├── 负载分布监控
|
||||
├── 性能指标跟踪
|
||||
└── 健康状态报告
|
||||
```
|
||||
|
||||
## 🚀 核心功能
|
||||
|
||||
### 1. 智能负载分担
|
||||
- **角色分工**: 每个仙人使用不同的主要API
|
||||
- **权重分配**: 基于API性能和可靠性的智能分配
|
||||
- **动态调整**: 根据实时负载情况自动调整
|
||||
|
||||
### 2. 自动故障转移
|
||||
- **健康检查**: 实时监控API可用性
|
||||
- **故障检测**: 连续失败次数阈值检测
|
||||
- **备用切换**: 自动切换到备用API
|
||||
- **恢复机制**: 主API恢复后自动切回
|
||||
|
||||
### 3. 数据标准化
|
||||
```python
|
||||
# 统一的数据格式
|
||||
{
|
||||
'symbol': 'AAPL',
|
||||
'price': 202.38,
|
||||
'change': -5.12,
|
||||
'change_percent': '-2.50%',
|
||||
'volume': 45678900,
|
||||
'high': 207.50,
|
||||
'low': 201.85,
|
||||
'source': 'alpha_vantage',
|
||||
'timestamp': '2025-08-02'
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 智能缓存策略
|
||||
- **分层缓存**: 不同数据类型使用不同TTL
|
||||
- **缓存预热**: 预先加载热点数据
|
||||
- **缓存穿透保护**: 避免缓存雪崩
|
||||
|
||||
### 5. 实时监控
|
||||
- **API调用统计**: 实时跟踪每个API的调用次数
|
||||
- **负载分布**: 可视化负载分布情况
|
||||
- **性能指标**: 响应时间、成功率等关键指标
|
||||
- **告警机制**: 异常情况自动告警
|
||||
|
||||
## 📁 文件结构
|
||||
|
||||
```
|
||||
/home/ben/liurenchaxin/
|
||||
├── src/jixia/
|
||||
│ ├── engines/
|
||||
│ │ └── jixia_load_balancer.py # 核心负载均衡引擎
|
||||
│ └── config/
|
||||
│ └── immortal_api_config.json # 八仙角色与API配置
|
||||
├── demo_jixia_load_balancing.py # 演示脚本
|
||||
├── jixia_load_balancing_strategy.md # 策略文档
|
||||
└── README_jixia_load_balancing.md # 本说明文档
|
||||
```
|
||||
|
||||
## 🎮 使用方法
|
||||
|
||||
### 1. 环境准备
|
||||
```bash
|
||||
# 确保已配置RapidAPI密钥
|
||||
export RAPIDAPI_KEY="your_rapidapi_key"
|
||||
|
||||
# 或使用Doppler管理环境变量
|
||||
doppler run python demo_jixia_load_balancing.py
|
||||
```
|
||||
|
||||
### 2. 基本使用
|
||||
```python
|
||||
from src.jixia.engines.jixia_load_balancer import JixiaLoadBalancer
|
||||
|
||||
# 创建负载均衡器
|
||||
load_balancer = JixiaLoadBalancer(rapidapi_key)
|
||||
|
||||
# 单个仙人获取数据
|
||||
result = load_balancer.get_data_for_immortal('吕洞宾', 'stock_quote', 'AAPL')
|
||||
|
||||
# 八仙论道(完整演示)
|
||||
results = load_balancer.conduct_immortal_debate('TSLA')
|
||||
|
||||
# 查看负载分布
|
||||
distribution = load_balancer.get_load_distribution()
|
||||
```
|
||||
|
||||
### 3. 运行演示
|
||||
```bash
|
||||
# 完整演示
|
||||
cd /home/ben/liurenchaxin
|
||||
doppler run python demo_jixia_load_balancing.py
|
||||
|
||||
# 查看演示结果
|
||||
ls demo_results_*.json
|
||||
```
|
||||
|
||||
## 📊 演示结果
|
||||
|
||||
### 负载分布统计
|
||||
基于实际运行的演示结果:
|
||||
|
||||
| API | 调用次数 | 负载占比 | 健康状态 | 平均响应时间 |
|
||||
|-----|----------|----------|----------|-------------|
|
||||
| Alpha Vantage | 8次 | 33.3% | 🟢 健康 | ~1.3s |
|
||||
| Yahoo Finance 15 | 7次 | 29.2% | 🟢 健康 | ~1.9s |
|
||||
| Webull | 9次 | 37.5% | 🟢 健康 | ~2.0s |
|
||||
| Seeking Alpha | 0次 | 0.0% | 🟢 健康 | N/A |
|
||||
|
||||
### 性能指标
|
||||
- **总API调用**: 24次
|
||||
- **成功率**: 100%
|
||||
- **平均响应时间**: 1.7秒
|
||||
- **缓存命中率**: 约30%
|
||||
- **故障转移**: 自动且无缝
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### API配置 (`immortal_api_config.json`)
|
||||
```json
|
||||
{
|
||||
"immortals": {
|
||||
"吕洞宾": {
|
||||
"title": "主力剑仙",
|
||||
"specialty": "综合分析与决策",
|
||||
"preferred_apis": {
|
||||
"stock_quote": "alpha_vantage",
|
||||
"company_overview": "alpha_vantage"
|
||||
},
|
||||
"api_weight": 0.15
|
||||
}
|
||||
},
|
||||
"api_configurations": {
|
||||
"alpha_vantage": {
|
||||
"reliability_score": 0.95,
|
||||
"response_time_avg": 0.8,
|
||||
"cost_per_call": 0.001
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 负载均衡策略
|
||||
- **轮询分配**: 确保负载均匀分布
|
||||
- **健康感知**: 基于API健康状态的智能分配
|
||||
- **性能优化**: 基于响应时间的动态分配
|
||||
- **成本控制**: 优先使用低成本API(可选)
|
||||
|
||||
## 🎯 优势特点
|
||||
|
||||
### 1. 高可用性
|
||||
- ✅ 多API冗余,单点故障不影响整体服务
|
||||
- ✅ 自动故障检测和恢复机制
|
||||
- ✅ 实时健康监控和告警
|
||||
|
||||
### 2. 高性能
|
||||
- ✅ 智能缓存减少重复调用
|
||||
- ✅ 并发处理提升响应速度
|
||||
- ✅ 负载均衡避免单API过载
|
||||
|
||||
### 3. 高扩展性
|
||||
- ✅ 模块化设计,易于添加新API
|
||||
- ✅ 配置驱动,无需修改代码
|
||||
- ✅ 插件化架构支持自定义扩展
|
||||
|
||||
### 4. 成本优化
|
||||
- ✅ 智能API选择降低调用成本
|
||||
- ✅ 缓存策略减少不必要的API调用
|
||||
- ✅ 负载分散避免超出免费额度
|
||||
|
||||
## 🔮 未来规划
|
||||
|
||||
### 短期目标
|
||||
- [ ] 添加更多RapidAPI数据源
|
||||
- [ ] 实现WebSocket实时数据推送
|
||||
- [ ] 优化缓存策略和命中率
|
||||
- [ ] 添加详细的性能分析报告
|
||||
|
||||
### 中期目标
|
||||
- [ ] 机器学习驱动的智能路由
|
||||
- [ ] 预测性故障检测
|
||||
- [ ] 自适应负载均衡算法
|
||||
- [ ] 成本优化自动化
|
||||
|
||||
### 长期目标
|
||||
- [ ] 分布式部署支持
|
||||
- [ ] 多租户架构
|
||||
- [ ] 实时数据流处理
|
||||
- [ ] AI驱动的投资决策支持
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
1. **Fork** 项目仓库
|
||||
2. **创建** 功能分支 (`git checkout -b feature/AmazingFeature`)
|
||||
3. **提交** 更改 (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. **推送** 到分支 (`git push origin feature/AmazingFeature`)
|
||||
5. **创建** Pull Request
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
|
||||
|
||||
## 📞 联系方式
|
||||
|
||||
- **项目维护者**: 稷下学宫开发团队
|
||||
- **技术支持**: 通过 GitHub Issues 提交问题
|
||||
- **文档更新**: 欢迎提交文档改进建议
|
||||
|
||||
---
|
||||
|
||||
*🏛️ 稷下学宫 - 让智慧的光芒照亮投资的道路*
|
||||
123
docs/requirements.md
Normal file
123
docs/requirements.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 炼妖壶项目清理与重构需求文档
|
||||
|
||||
## 介绍
|
||||
|
||||
炼妖壶项目经过长期开发,积累了大量代码和配置文件,但项目结构变得混乱,存在安全隐患(密钥泄露)和维护困难。本规范旨在系统性地清理和重构项目,建立清晰的架构和安全的开发流程。
|
||||
|
||||
## 需求
|
||||
|
||||
### 需求1:项目结构清理
|
||||
|
||||
**用户故事:** 作为开发者,我希望项目有清晰的目录结构和文件组织,以便快速理解和维护代码。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 查看项目根目录 THEN 应该只包含必要的核心文件和目录
|
||||
2. WHEN 查看任何目录 THEN 应该有清晰的README说明其用途
|
||||
3. WHEN 寻找特定功能代码 THEN 应该能在预期的目录中找到
|
||||
4. WHEN 删除无用文件后 THEN 项目仍能正常运行
|
||||
5. IF 文件超过6个月未使用 THEN 应该被归档或删除
|
||||
|
||||
### 需求2:安全配置管理
|
||||
|
||||
**用户故事:** 作为开发者,我希望所有密钥和敏感配置都安全管理,不会意外泄露到代码库中。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 扫描代码库 THEN 不应该发现任何硬编码的密钥或敏感信息
|
||||
2. WHEN 开发者需要密钥 THEN 应该从环境变量或Doppler获取
|
||||
3. WHEN 提交代码 THEN 应该自动检查是否包含敏感信息
|
||||
4. WHEN 新开发者加入 THEN 应该有清晰的密钥管理指南
|
||||
5. IF 发现密钥泄露 THEN 应该有自动化的处理流程
|
||||
|
||||
### 需求3:核心功能保留
|
||||
|
||||
**用户故事:** 作为用户,我希望在项目重构后,所有核心功能(AI辩论、数据分析、Streamlit界面)仍然可用。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 启动Streamlit应用 THEN 应该能正常访问所有功能页面
|
||||
2. WHEN 运行AI辩论 THEN 应该能正常生成辩论内容
|
||||
3. WHEN 连接数据库 THEN 应该能正常读写数据
|
||||
4. WHEN 调用外部API THEN 应该能正常获取响应
|
||||
5. WHEN 运行测试 THEN 所有核心功能测试应该通过
|
||||
|
||||
### 需求4:开发体验优化
|
||||
|
||||
**用户故事:** 作为开发者,我希望有良好的开发体验,包括清晰的文档、简单的启动流程和有效的调试工具。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 新开发者克隆项目 THEN 应该能在10分钟内启动应用
|
||||
2. WHEN 查看文档 THEN 应该能找到所有必要的设置和使用说明
|
||||
3. WHEN 遇到问题 THEN 应该有清晰的故障排除指南
|
||||
4. WHEN 添加新功能 THEN 应该有明确的开发规范可遵循
|
||||
5. WHEN 部署应用 THEN 应该有自动化的部署流程
|
||||
|
||||
### 需求5:技术债务清理
|
||||
|
||||
**用户故事:** 作为维护者,我希望清理技术债务,移除过时的代码和依赖,提高代码质量。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 检查依赖 THEN 不应该有未使用或过时的包
|
||||
2. WHEN 运行代码分析 THEN 不应该有严重的代码质量问题
|
||||
3. WHEN 查看代码 THEN 应该有一致的编码风格和注释
|
||||
4. WHEN 运行性能测试 THEN 应用响应时间应该在可接受范围内
|
||||
5. IF 发现重复代码 THEN 应该被重构为可复用的模块
|
||||
|
||||
### 需求6:部署和运维简化
|
||||
|
||||
**用户故事:** 作为运维人员,我希望部署和监控应用变得简单可靠。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. WHEN 部署到生产环境 THEN 应该使用一键部署脚本
|
||||
2. WHEN 应用运行异常 THEN 应该有清晰的日志和监控信息
|
||||
3. WHEN 需要扩展 THEN 应该支持水平扩展
|
||||
4. WHEN 备份数据 THEN 应该有自动化的备份策略
|
||||
5. WHEN 回滚版本 THEN 应该能快速回滚到稳定版本
|
||||
|
||||
## 优先级
|
||||
|
||||
1. **P0 (紧急)**: 安全配置管理 - 立即解决密钥泄露问题
|
||||
2. **P1 (高)**: 项目结构清理 - 建立清晰的项目架构
|
||||
3. **P2 (中)**: 核心功能保留 - 确保重构不影响核心功能
|
||||
4. **P3 (中)**: 开发体验优化 - 改善开发流程
|
||||
5. **P4 (低)**: 技术债务清理 - 长期代码质量改进
|
||||
6. **P5 (低)**: 部署和运维简化 - 运维流程优化
|
||||
|
||||
## 迁移策略
|
||||
|
||||
鉴于当前项目状态混乱,采用**全新开始**的策略:
|
||||
|
||||
1. **文档先行** - 完善所有需求和设计文档
|
||||
2. **干净迁移** - 在新目录 `/home/ben/liurenchaxin` 重新开始
|
||||
3. **选择性迁移** - 只迁移核心功能代码,抛弃历史包袱
|
||||
4. **安全优先** - 从一开始就建立安全的配置管理
|
||||
|
||||
## 核心功能清单(需要保留)
|
||||
|
||||
### 必须迁移的功能
|
||||
- 🤖 **稷下学宫AI辩论系统** (八仙辩论)
|
||||
- 📊 **Streamlit主界面**
|
||||
- 🔗 **Doppler配置管理**
|
||||
- 💾 **数据库连接** (PostgreSQL, MongoDB, Zilliz)
|
||||
- 🔌 **外部API集成** (OpenRouter, Anthropic等)
|
||||
|
||||
### 可选迁移的功能
|
||||
- 📈 **金融数据分析**
|
||||
- 🔄 **N8N工作流**
|
||||
- 📱 **MCP服务器**
|
||||
- 🧪 **实验性功能**
|
||||
|
||||
## 成功标准
|
||||
|
||||
项目重构成功的标志:
|
||||
- ✅ 通过GitGuardian安全扫描,无密钥泄露
|
||||
- ✅ 项目目录结构清晰,符合最佳实践
|
||||
- ✅ 所有核心功能正常工作
|
||||
- ✅ 新开发者能在10分钟内启动项目
|
||||
- ✅ 代码质量评分达到B级以上
|
||||
- ✅ 部署时间缩短到5分钟以内
|
||||
- ✅ 完全摆脱历史技术债务
|
||||
Reference in New Issue
Block a user