🏗️ 项目重构:模块化清理完成
This commit is contained in:
163
modules/documentation-suite/docs/guides/CLAUDE.md
Normal file
163
modules/documentation-suite/docs/guides/CLAUDE.md
Normal file
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: "Claude 集成与使用指南"
|
||||
status: summer
|
||||
created: 2025-08-17
|
||||
owner: Claude
|
||||
review_by: "2026-02-17"
|
||||
tags: ["guide", "claude", "core"]
|
||||
---
|
||||
|
||||
# Claude 集成与使用指南
|
||||
|
||||
本指南介绍如何在炼妖壶项目中使用 Claude,包括运行时模型接入、GitHub 代码审查助手(可选)以及常见问题排查。此文档面向公开文档;更详细或偏内部的安装步骤请参考内部文档 `internal/setup/CLAUDE_ACTION_SETUP.md`。
|
||||
|
||||
## 适用场景
|
||||
|
||||
- 在项目中调用 Claude 模型(通过 LiteLLM/OpenRouter/Anthropic)用于分析、辩论与推理
|
||||
- 在 GitHub 的 Issue/PR 中通过评论触发 Claude 进行代码审查、调试辅助与架构讨论(可选)
|
||||
|
||||
## 快速开始(运行时模型)
|
||||
|
||||
项目推荐通过 LiteLLM 路由到不同模型供应商。你可以选择两种常见方式接入 Claude:
|
||||
|
||||
- 方式 A:使用 OpenRouter 免费路由(如 `anthropic/claude-3.5-sonnet:free`)
|
||||
- 方式 B:直接使用 Anthropic 官方 API(需要付费 API Key)
|
||||
|
||||
### 环境变量
|
||||
|
||||
至少准备以下中的一个或多个(按你的接入方式选择):
|
||||
|
||||
- OPENROUTER_API_KEY: 使用 OpenRouter 路由时需要
|
||||
- ANTHROPIC_API_KEY: 直接调用 Anthropic API 时需要
|
||||
|
||||
建议将密钥保存到本地 `.env` 或 CI/CD 的 Secret 中,不要提交到仓库。
|
||||
|
||||
### LiteLLM 配置提示
|
||||
|
||||
仓库中 `litellm/config.yaml` 是示例配置。你可以添加 Claude 相关配置,例如:
|
||||
|
||||
```yaml
|
||||
model_list:
|
||||
- model_name: claude-free
|
||||
litellm_params:
|
||||
model: anthropic/claude-3.5-sonnet:free
|
||||
# 如果使用 OpenRouter,请在运行环境里提供 OPENROUTER_API_KEY
|
||||
|
||||
- model_name: claude-sonnet
|
||||
litellm_params:
|
||||
model: anthropic/claude-3-5-sonnet-20240620
|
||||
# 如果直接使用 Anthropic 官方,请在运行环境里提供 ANTHROPIC_API_KEY
|
||||
```
|
||||
|
||||
> 提示:内部文档 `internal/technical/Sanqing_Baxian_OpenRouter_Model_Assignment.md` 与 `internal/technical/Final_Baxian_Sanqing_Model_Configuration.md` 描述了项目在三清八仙体系中对 Claude 的模型分配建议,可作为策略参考。
|
||||
|
||||
## GitHub 助手(可选)
|
||||
|
||||
如果你希望在 GitHub 的 Issue/PR 评论中 @Claude 进行协助,请按以下步骤配置。若当前仓库没有工作流文件,请根据下面示例新建。
|
||||
|
||||
1) 在 GitHub 仓库设置中添加 Secret(任选一种或两种):
|
||||
- ANTHROPIC_API_KEY: 你的 Anthropic API Key
|
||||
- CLAUDE_CODE_OAUTH_TOKEN: Claude Code OAuth Token(Pro/Max)
|
||||
|
||||
2) 安装 Claude GitHub App(如果还未安装)
|
||||
- 访问 https://github.com/apps/claude
|
||||
- 选择安装到你的仓库并授权必要权限
|
||||
|
||||
3) 新建或更新工作流文件 `.github/workflows/claude.yml`
|
||||
|
||||
```yaml
|
||||
name: Claude Assistant
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
run-claude:
|
||||
if: contains(github.event.comment.body, '@claude') || contains(github.event.comment.body, '@太公') || contains(github.event.comment.body, '@八仙')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Install deps
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install litellm
|
||||
|
||||
- name: Run Claude reply
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
python - <<'PY'
|
||||
import os, json, requests
|
||||
|
||||
body = os.environ.get('GITHUB_EVENT_PATH')
|
||||
import sys, pathlib
|
||||
event = json.load(open(os.environ['GITHUB_EVENT_PATH']))
|
||||
comment_body = event['comment']['body']
|
||||
issue_url = event['issue']['comments_url'] if 'issue' in event else event['pull_request']['comments_url']
|
||||
|
||||
if '@claude' in comment_body or '@太公' in comment_body or '@八仙' in comment_body:
|
||||
prompt = comment_body.replace('@claude','').replace('@太公','').replace('@八仙','').strip()
|
||||
else:
|
||||
sys.exit(0)
|
||||
|
||||
# 调用 Claude(示例:通过 LiteLLM 统一调用,环境里准备好 API Key)
|
||||
import litellm
|
||||
litellm.set_verbose(False)
|
||||
resp = litellm.completion(model="anthropic/claude-3.5-sonnet:free", messages=[{"role":"user","content":prompt}])
|
||||
text = resp.choices[0].message.get('content') if hasattr(resp.choices[0], 'message') else resp['choices'][0]['message']['content']
|
||||
|
||||
headers = {"Authorization": f"Bearer {os.environ['GITHUB_TOKEN']}", "Accept": "application/vnd.github+json"}
|
||||
requests.post(issue_url, headers=headers, json={"body": text})
|
||||
PY
|
||||
```
|
||||
|
||||
- 触发词默认支持:`@claude`、`@太公`、`@八仙`
|
||||
- 你可以在工作流的 `if:` 条件中添加更多触发词
|
||||
|
||||
> 注意:内部文档 `internal/setup/CLAUDE_ACTION_SETUP.md` 提供了更完整的 Action 版配置与触发词说明。
|
||||
|
||||
## 使用示例
|
||||
|
||||
- 代码审查:
|
||||
- 在 PR 评论中输入:`@claude 请审查这个MCP管理器的实现,关注安全性和性能`
|
||||
- 功能实现建议:
|
||||
- 在 Issue 评论中输入:`@claude 帮我实现一个新的Yahoo Finance数据获取功能`
|
||||
- 架构讨论:
|
||||
- 在评论中输入:`@太公 如何优化当前的金融数据分析流程?`
|
||||
- 调试帮助:
|
||||
- 在评论中输入:`@八仙 这个错误是什么原因:[粘贴错误信息]`
|
||||
|
||||
## 成本与安全
|
||||
|
||||
- API 成本:使用 Anthropic 直连会产生费用;OpenRouter 免费路由有速率与配额限制
|
||||
- 权限:GitHub App 与工作流权限请最小化配置
|
||||
- 敏感信息:不要在公开评论中包含敏感数据;密钥请使用 Secret 管理
|
||||
|
||||
## 常见问题排查
|
||||
|
||||
- 无法调用成功:确认已在运行环境设置了相应的 API Key(`OPENROUTER_API_KEY` 或 `ANTHROPIC_API_KEY`)
|
||||
- 工作流未触发:确认评论中包含触发词,且仓库已启用 `Actions`;检查 `if:` 条件
|
||||
- 响应为空或报错:降低请求长度,检查模型名称是否正确,或改用其他可用模型
|
||||
|
||||
## 参考
|
||||
|
||||
- 内部:`internal/setup/CLAUDE_ACTION_SETUP.md`
|
||||
- 内部:`internal/technical/Final_Baxian_Sanqing_Model_Configuration.md`
|
||||
- 内部:`internal/technical/Sanqing_Baxian_OpenRouter_Model_Assignment.md`
|
||||
@@ -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/settings.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. **测试简单智能体**: 验证基本功能
|
||||
|
||||
准备好开始迁移了吗?我可以帮您逐步执行每个阶段!
|
||||
@@ -0,0 +1,160 @@
|
||||
# Vertex AI Memory Bank 访问指南
|
||||
|
||||
## 📋 项目概览
|
||||
|
||||
- **项目ID**: `inner-radius-469712-e9`
|
||||
- **项目名称**: My First Project
|
||||
- **项目编号**: 849796462624
|
||||
- **区域**: `us-central1`
|
||||
- **创建时间**: 2025-08-21T12:27:33.480028Z
|
||||
- **状态**: ACTIVE
|
||||
|
||||
## 🧠 Memory Bank 实例
|
||||
|
||||
### 八仙智能体 Memory Bank 列表
|
||||
|
||||
我们已成功创建并验证了以下Memory Bank实例:
|
||||
|
||||
1. **铁拐李** (`tieguaili`)
|
||||
- Memory Bank ID: `memory_bank_tieguaili_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
2. **汉钟离** (`zhongliquan`)
|
||||
- Memory Bank ID: `memory_bank_zhongliquan_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
3. **吕洞宾** (`lvdongbin`)
|
||||
- Memory Bank ID: `memory_bank_lvdongbin_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
- 测试数据: 包含对话、偏好、知识、策略等4种类型记忆
|
||||
|
||||
4. **何仙姑** (`hehe_erxian`)
|
||||
- Memory Bank ID: `memory_bank_hehe_erxian_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
5. **蓝采和** (`lantsaihe`)
|
||||
- Memory Bank ID: `memory_bank_lantsaihe_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
6. **韩湘子** (`hanxiangzi`)
|
||||
- Memory Bank ID: `memory_bank_hanxiangzi_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
7. **曹国舅** (`caoguo_jiu`)
|
||||
- Memory Bank ID: `memory_bank_caoguo_jiu_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
8. **何仙姑** (`hexiangu`)
|
||||
- Memory Bank ID: `memory_bank_hexiangu_inner-radius-469712-e9`
|
||||
- 状态: ✅ 活跃
|
||||
|
||||
## 🌐 Web端访问方式
|
||||
|
||||
### Google Cloud Console 直接链接
|
||||
|
||||
1. **Memory Bank 专用页面**:
|
||||
```
|
||||
https://console.cloud.google.com/vertex-ai/generative/memory-banks?project=inner-radius-469712-e9
|
||||
```
|
||||
|
||||
2. **Vertex AI 主页**:
|
||||
```
|
||||
https://console.cloud.google.com/vertex-ai?project=inner-radius-469712-e9
|
||||
```
|
||||
|
||||
3. **生成式AI 控制台**:
|
||||
```
|
||||
https://console.cloud.google.com/vertex-ai/generative?project=inner-radius-469712-e9
|
||||
```
|
||||
|
||||
### 导航路径
|
||||
|
||||
在Google Cloud Console中:
|
||||
1. 选择项目: `inner-radius-469712-e9`
|
||||
2. 导航到: **Vertex AI** → **生成式AI** → **Memory Banks**
|
||||
3. 或搜索: "Memory Bank" 或 "记忆银行"
|
||||
|
||||
## 🔧 命令行访问
|
||||
|
||||
### 已配置的工具
|
||||
|
||||
- ✅ `gcloud` CLI 已安装并认证
|
||||
- ✅ Application Default Credentials 已设置
|
||||
- ✅ Vertex AI API (`aiplatform.googleapis.com`) 已启用
|
||||
- ✅ Python SDK 可正常使用
|
||||
|
||||
### 测试脚本
|
||||
|
||||
1. **基础列表查看**: `list_memory_banks.py`
|
||||
2. **详细功能测试**: `detailed_memory_bank_info.py`
|
||||
3. **GCP API查询**: `view_memory_banks_gcp.py`
|
||||
|
||||
### 运行命令
|
||||
|
||||
```bash
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 查看Memory Bank列表
|
||||
python list_memory_banks.py
|
||||
|
||||
# 详细测试功能
|
||||
python detailed_memory_bank_info.py
|
||||
|
||||
# GCP API查询
|
||||
python view_memory_banks_gcp.py
|
||||
```
|
||||
|
||||
## 📊 Memory Bank 功能验证
|
||||
|
||||
### ✅ 已验证功能
|
||||
|
||||
1. **创建Memory Bank**: 为每个智能体创建独立的记忆银行
|
||||
2. **添加记忆**: 支持4种记忆类型
|
||||
- `conversation`: 对话记忆
|
||||
- `preference`: 偏好记忆
|
||||
- `knowledge`: 知识记忆
|
||||
- `strategy`: 策略记忆
|
||||
3. **搜索记忆**: 基于关键词和类型搜索
|
||||
4. **获取上下文**: 为特定辩论主题生成上下文
|
||||
5. **记忆统计**: 按类型统计记忆数量
|
||||
|
||||
### 📈 测试数据示例
|
||||
|
||||
**吕洞宾** 的测试记忆:
|
||||
- 对话记忆: "在关于AI伦理的辩论中,我强调了技术发展应该以人为本..."
|
||||
- 偏好记忆: "我偏好使用古典哲学的智慧来论证现代问题,特别是道家思想。"
|
||||
- 知识记忆: "区块链技术的核心是去中心化和不可篡改性,这与道家'无为而治'的理念有相通之处。"
|
||||
- 策略记忆: "在辩论中,当对手使用激进论点时,我会用温和的反问来引导思考..."
|
||||
|
||||
## 🔐 权限和安全
|
||||
|
||||
### 认证状态
|
||||
- ✅ Google Cloud 用户: `benhouzhong@gmail.com`
|
||||
- ✅ 默认项目: `inner-radius-469712-e9`
|
||||
- ✅ 访问令牌: 有效
|
||||
- ✅ IAM权限: 足够访问Vertex AI服务
|
||||
|
||||
### 启用的服务
|
||||
- ✅ `aiplatform.googleapis.com` (Vertex AI API)
|
||||
- ✅ `generativelanguage.googleapis.com` (Generative Language API)
|
||||
- ✅ `ml.googleapis.com` (AI Platform API)
|
||||
|
||||
## 🚀 下一步建议
|
||||
|
||||
1. **Web端验证**: 使用提供的链接在Google Cloud Console中查看Memory Bank
|
||||
2. **功能扩展**: 为其他智能体添加更多测试数据
|
||||
3. **集成测试**: 在实际辩论系统中测试Memory Bank功能
|
||||
4. **监控设置**: 配置Memory Bank使用情况的监控和告警
|
||||
|
||||
## 📝 注意事项
|
||||
|
||||
- Memory Bank 功能目前处于公开预览阶段
|
||||
- 某些高级功能可能需要特殊权限或白名单
|
||||
- API端点可能会随着服务更新而变化
|
||||
- 建议定期备份重要的记忆数据
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2025-08-22 11:44*
|
||||
*项目: 稷下学宫AI辩论系统*
|
||||
@@ -0,0 +1,152 @@
|
||||
# Vertex AI Memory Bank 访问解决方案
|
||||
|
||||
## 问题说明
|
||||
|
||||
您遇到的"打不开"问题是因为 **Vertex AI Memory Bank 目前没有独立的Web控制台界面**。Memory Bank是Vertex AI Agent Engine的一个预览功能,只能通过API、SDK和命令行工具访问。
|
||||
|
||||
## 为什么没有Web界面
|
||||
|
||||
根据Google官方文档,Memory Bank具有以下特点:
|
||||
- 🔄 **预览功能**:Memory Bank目前处于公开预览阶段
|
||||
- 🛠️ **API优先**:主要通过编程接口访问
|
||||
- 🤖 **Agent Engine集成**:与Vertex AI Agent Engine深度集成
|
||||
- 📍 **区域限制**:仅在us-central1区域支持
|
||||
|
||||
## 可用的访问方式
|
||||
|
||||
### 1. 编程访问(推荐)
|
||||
|
||||
#### Python SDK
|
||||
```python
|
||||
# 我们已经验证的方式
|
||||
from jixia.memory.factory import get_memory_backend
|
||||
|
||||
# 初始化Memory Bank
|
||||
memory_backend = await get_memory_backend("vertex")
|
||||
|
||||
# 创建记忆银行
|
||||
memory_bank = await memory_backend.create_memory_bank(agent_id="your_agent")
|
||||
|
||||
# 添加记忆
|
||||
await memory_bank.add_memory("用户偏好信息")
|
||||
|
||||
# 搜索记忆
|
||||
results = await memory_bank.search_memories("查询内容")
|
||||
```
|
||||
|
||||
#### 直接使用Google Cloud SDK
|
||||
```python
|
||||
from google.cloud import aiplatform
|
||||
from google.adk.memory import VertexAiMemoryBankService
|
||||
|
||||
# 创建Memory Bank服务
|
||||
memory_service = VertexAiMemoryBankService(
|
||||
project="your-project-id",
|
||||
location="us-central1",
|
||||
agent_engine_id="your-agent-engine-id"
|
||||
)
|
||||
```
|
||||
|
||||
### 2. REST API访问
|
||||
|
||||
```bash
|
||||
# 使用gcloud获取访问令牌
|
||||
gcloud auth print-access-token
|
||||
|
||||
# 调用Memory Bank API
|
||||
curl -X POST \
|
||||
"https://aiplatform.googleapis.com/v1/projects/YOUR_PROJECT/locations/us-central1/reasoningEngines/YOUR_ENGINE/memories" \
|
||||
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"memory": {"content": "记忆内容"}}'
|
||||
```
|
||||
|
||||
### 3. Agent Development Kit (ADK)
|
||||
|
||||
```python
|
||||
from google import adk
|
||||
from google.adk.memory import VertexAiMemoryBankService
|
||||
|
||||
# 创建带记忆功能的Agent
|
||||
agent = adk.Agent(
|
||||
model="gemini-2.0-flash",
|
||||
name='stateful_agent',
|
||||
tools=[adk.tools.preload_memory_tool.PreloadMemoryTool()]
|
||||
)
|
||||
```
|
||||
|
||||
## 当前项目状态
|
||||
|
||||
### ✅ 已验证功能
|
||||
- **环境配置**:Application Default Credentials已设置
|
||||
- **Memory Bank创建**:成功为8个"八仙"角色创建记忆银行
|
||||
- **记忆操作**:lvdongbin的记忆银行已添加测试数据
|
||||
- **API访问**:所有核心功能均可正常使用
|
||||
|
||||
### 📊 Memory Bank实例
|
||||
```
|
||||
1. ✅ lvdongbin (包含测试数据)
|
||||
2. ✅ tieguaili
|
||||
3. ✅ hanxiangzi
|
||||
4. ✅ lanzaihe
|
||||
5. ✅ hesengu
|
||||
6. ✅ zhonghanli
|
||||
7. ✅ caogujiu
|
||||
8. ✅ hanzhongli
|
||||
```
|
||||
|
||||
## 替代访问方案
|
||||
|
||||
### 1. 使用我们创建的脚本
|
||||
|
||||
运行现有的Python脚本来管理Memory Bank:
|
||||
|
||||
```bash
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 列出所有Memory Bank
|
||||
python list_memory_banks.py
|
||||
|
||||
# 查看详细信息
|
||||
python detailed_memory_bank_info.py
|
||||
|
||||
# 通过API查看
|
||||
python view_memory_banks_gcp.py
|
||||
```
|
||||
|
||||
### 2. 创建自定义Web界面
|
||||
|
||||
如果需要Web界面,可以考虑:
|
||||
- 使用Streamlit创建简单的Web界面
|
||||
- 构建Flask/FastAPI应用
|
||||
- 集成到现有的管理系统中
|
||||
|
||||
### 3. Google Cloud Console集成
|
||||
|
||||
虽然没有专门的Memory Bank界面,但可以在以下位置查看相关信息:
|
||||
- **Vertex AI** → **Agent Engine**
|
||||
- **API & Services** → **Enabled APIs**
|
||||
- **Cloud Logging** → 查看Memory Bank操作日志
|
||||
|
||||
## 未来发展
|
||||
|
||||
根据Google的产品路线图:
|
||||
- Memory Bank目前处于**公开预览**阶段
|
||||
- 未来可能会提供更完整的Web控制台
|
||||
- 建议关注Google Cloud官方更新
|
||||
|
||||
## 技术支持
|
||||
|
||||
如需进一步帮助:
|
||||
1. 📚 查看[官方文档](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/memory-bank/overview)
|
||||
2. 💬 加入[Vertex AI Google Cloud社区](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/memory-bank/overview)
|
||||
3. 🛠️ 使用我们已验证的代码示例
|
||||
|
||||
## 总结
|
||||
|
||||
Memory Bank功能完全正常,只是访问方式与传统的Web控制台不同。通过编程接口,您可以实现所有必要的Memory Bank操作,包括创建、添加、搜索和管理记忆。
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2025年1月*
|
||||
@@ -0,0 +1,76 @@
|
||||
# 炼妖壶 (Lianyaohu) - 稷下学宫AI辩论系统
|
||||
|
||||
## 八仙记忆银行配置与使用指南
|
||||
|
||||
每个八仙智能体都有一个专属的记忆银行,用于存储其在不同辩论主题下的记忆。系统支持两种记忆后端:Google Vertex AI Memory Bank 和 Cloudflare AutoRAG。
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 选择记忆后端
|
||||
|
||||
通过设置环境变量 `JIXIA_MEMORY_BACKEND` 来选择记忆后端:
|
||||
|
||||
```bash
|
||||
# 使用Google Vertex AI (默认)
|
||||
export JIXIA_MEMORY_BACKEND=vertex
|
||||
|
||||
# 使用Cloudflare AutoRAG
|
||||
export JIXIA_MEMORY_BACKEND=cloudflare
|
||||
```
|
||||
|
||||
### Google Vertex AI 配置
|
||||
|
||||
需要配置以下环境变量:
|
||||
|
||||
- `GOOGLE_API_KEY`: Google API 密钥
|
||||
- `GOOGLE_CLOUD_PROJECT_ID`: Google Cloud 项目ID
|
||||
- `GOOGLE_CLOUD_LOCATION`: 部署区域 (可选,默认 us-central1)
|
||||
|
||||
### Cloudflare AutoRAG 配置
|
||||
|
||||
需要配置以下环境变量:
|
||||
|
||||
- `CLOUDFLARE_ACCOUNT_ID`: Cloudflare 账户ID
|
||||
- `CLOUDFLARE_API_TOKEN`: 具有 Vectorize 和 Workers AI 权限的 API 令牌
|
||||
|
||||
## 八仙记忆银行详情
|
||||
|
||||
系统为以下八位仙人创建了专属记忆银行:
|
||||
|
||||
1. **铁拐李 (tieguaili)** - 擅长技术分析和风险控制
|
||||
2. **汉钟离 (hanzhongli)** - 注重基本面分析和长期价值
|
||||
3. **张果老 (zhangguolao)** - 擅长宏观趋势分析和周期判断
|
||||
4. **蓝采和 (lancaihe)** - 关注市场情绪和资金流向
|
||||
5. **何仙姑 (hexiangu)** - 精于财务数据分析和估值模型
|
||||
6. **吕洞宾 (lvdongbin)** - 善于多维度综合分析和创新策略
|
||||
7. **韩湘子 (hanxiangzi)** - 擅长行业比较和相对价值分析
|
||||
8. **曹国舅 (caoguojiu)** - 注重合规性、社会责任和ESG因素
|
||||
|
||||
## 使用方法
|
||||
|
||||
在代码中使用记忆银行:
|
||||
|
||||
```python
|
||||
from src.jixia.memory.factory import get_memory_backend
|
||||
|
||||
# 获取记忆后端 (自动根据环境变量选择)
|
||||
memory_bank = get_memory_backend()
|
||||
|
||||
# 为吕洞宾添加偏好记忆
|
||||
await memory_bank.add_memory(
|
||||
agent_name="lvdongbin",
|
||||
content="倾向于使用DCF模型评估科技股的内在价值",
|
||||
memory_type="preference",
|
||||
debate_topic="TSLA投资分析"
|
||||
)
|
||||
|
||||
# 搜索吕洞宾关于TSLA的记忆
|
||||
memories = await memory_bank.search_memories(
|
||||
agent_name="lvdongbin",
|
||||
query="TSLA",
|
||||
memory_type="preference"
|
||||
)
|
||||
|
||||
# 获取上下文
|
||||
context = await memory_bank.get_agent_context("lvdongbin", "TSLA投资分析")
|
||||
```
|
||||
116
modules/documentation-suite/docs/guides/MIGRATION_PLAN.md
Normal file
116
modules/documentation-suite/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/ # 配置管理
|
||||
│ └── settings.py # Doppler配置
|
||||
├── tests/ # 测试代码
|
||||
├── docs/ # 文档
|
||||
├── scripts/ # 工具脚本
|
||||
└── .kiro/ # Kiro配置
|
||||
└── specs/ # 规范文档
|
||||
```
|
||||
|
||||
## 🚫 不迁移的内容
|
||||
|
||||
- 历史实验代码
|
||||
- 重复的功能实现
|
||||
- 过时的依赖
|
||||
- 混乱的配置文件
|
||||
- 包含密钥的文件
|
||||
- 无用的调试脚本
|
||||
|
||||
## ✅ 迁移检查清单
|
||||
|
||||
### 功能验证
|
||||
- [ ] AI辩论系统正常工作
|
||||
- [ ] Streamlit界面完整显示
|
||||
- [ ] 数据库连接成功
|
||||
- [ ] API调用正常
|
||||
- [ ] 配置加载正确
|
||||
|
||||
### 安全验证
|
||||
- [ ] GitGuardian扫描通过
|
||||
- [ ] 无硬编码密钥
|
||||
- [ ] Doppler配置正确
|
||||
- [ ] 环境变量隔离
|
||||
- [ ] 访问权限合理
|
||||
|
||||
### 质量验证
|
||||
- [ ] 代码风格一致
|
||||
- [ ] 文档完整
|
||||
- [ ] 测试覆盖充分
|
||||
- [ ] 性能满足要求
|
||||
- [ ] 部署流程顺畅
|
||||
|
||||
## 🎉 成功标准
|
||||
|
||||
迁移成功的标志:
|
||||
1. 新项目通过所有安全扫描
|
||||
2. 核心功能100%可用
|
||||
3. 启动时间 < 30秒
|
||||
4. 代码质量 A级
|
||||
5. 文档完整度 > 90%
|
||||
|
||||
---
|
||||
|
||||
**准备好开始迁移了吗?让我们带着这些文档,前往新的开始!** 🚀
|
||||
236
modules/documentation-suite/docs/guides/QUICK_START_GUIDE.md
Normal file
236
modules/documentation-suite/docs/guides/QUICK_START_GUIDE.md
Normal file
@@ -0,0 +1,236 @@
|
||||
# 🚀 稷下学宫负载均衡系统 - 快速上手指南
|
||||
|
||||
## 📋 前置条件
|
||||
|
||||
1. **RapidAPI账户**: 确保已订阅以下API服务
|
||||
- Alpha Vantage
|
||||
- Yahoo Finance 15
|
||||
- Webull
|
||||
- Seeking Alpha
|
||||
|
||||
2. **环境配置**: 已配置Doppler环境变量管理
|
||||
```bash
|
||||
doppler secrets | grep RAPIDAPI_KEY
|
||||
```
|
||||
|
||||
## ⚡ 5分钟快速体验
|
||||
|
||||
### 1. 运行完整演示
|
||||
```bash
|
||||
cd /home/ben/liurenchaxin
|
||||
doppler run python demo_jixia_load_balancing.py
|
||||
```
|
||||
|
||||
### 2. 查看演示结果
|
||||
```bash
|
||||
# 查看生成的结果文件
|
||||
ls demo_results_*.json
|
||||
|
||||
# 查看AAPL的详细结果
|
||||
cat demo_results_aapl.json | jq .
|
||||
```
|
||||
|
||||
## 🎯 核心功能演示
|
||||
|
||||
### 单个仙人数据获取
|
||||
```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')
|
||||
print(f"价格: ${result.data['price']}, 来源: {result.api_used}")
|
||||
```
|
||||
|
||||
### 八仙论道完整演示
|
||||
```python
|
||||
# 进行八仙论道
|
||||
results = load_balancer.conduct_immortal_debate('TSLA')
|
||||
|
||||
# 查看负载分布
|
||||
distribution = load_balancer.get_load_distribution()
|
||||
for api, stats in distribution.items():
|
||||
print(f"{api}: {stats['calls']}次调用 ({stats['percentage']:.1f}%)")
|
||||
```
|
||||
|
||||
## 📊 预期输出示例
|
||||
|
||||
```
|
||||
🏛️ 稷下学宫八仙论道开始 - 主题: AAPL
|
||||
============================================================
|
||||
🎭 吕洞宾 正在获取 stock_quote 数据...
|
||||
✅ 成功从 alpha_vantage 获取数据 (响应时间: 1.33s)
|
||||
💰 吕洞宾: $202.38 (-2.5004%) via alpha_vantage
|
||||
|
||||
🎭 何仙姑 正在获取 stock_quote 数据...
|
||||
✅ 成功从 yahoo_finance_15 获取数据 (响应时间: 1.87s)
|
||||
💰 何仙姑: $N/A (N/A) via yahoo_finance_15
|
||||
|
||||
📊 负载分布统计:
|
||||
alpha_vantage: 3 次调用 (37.5%) - 健康
|
||||
yahoo_finance_15: 2 次调用 (25.0%) - 健康
|
||||
webull: 3 次调用 (37.5%) - 健康
|
||||
```
|
||||
|
||||
## 🔧 自定义配置
|
||||
|
||||
### 修改仙人API偏好
|
||||
编辑 `/home/ben/liurenchaxin/src/jixia/config/immortal_api_config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"immortals": {
|
||||
"吕洞宾": {
|
||||
"preferred_apis": {
|
||||
"stock_quote": "webull", // 改为使用Webull
|
||||
"company_overview": "alpha_vantage"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 调整缓存策略
|
||||
```python
|
||||
# 修改缓存TTL
|
||||
load_balancer.cache_ttl = 600 # 10分钟缓存
|
||||
|
||||
# 清空缓存
|
||||
load_balancer.cache.clear()
|
||||
```
|
||||
|
||||
## 🚨 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **API密钥错误**
|
||||
```
|
||||
❌ 错误: 请设置RAPIDAPI_KEY环境变量
|
||||
```
|
||||
**解决**: 确保Doppler配置正确
|
||||
```bash
|
||||
doppler secrets set RAPIDAPI_KEY="your_key_here"
|
||||
```
|
||||
|
||||
2. **API调用失败**
|
||||
```
|
||||
⚠️ alpha_vantage 不可用,尝试备用API...
|
||||
```
|
||||
**解决**: 系统会自动故障转移,无需干预
|
||||
|
||||
3. **数据格式异常**
|
||||
```
|
||||
💰 价格: $N/A
|
||||
```
|
||||
**解决**: 某些API返回格式不同,系统会标准化处理
|
||||
|
||||
### 调试模式
|
||||
```python
|
||||
# 启用详细日志
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
# 查看API健康状态
|
||||
for api, status in load_balancer.health_checker.health_status.items():
|
||||
print(f"{api}: {'健康' if status['healthy'] else '异常'}")
|
||||
```
|
||||
|
||||
## 📈 性能优化建议
|
||||
|
||||
### 1. 缓存优化
|
||||
```python
|
||||
# 针对不同数据类型设置不同缓存时间
|
||||
cache_strategies = {
|
||||
'stock_quote': 60, # 1分钟
|
||||
'company_overview': 3600, # 1小时
|
||||
'market_news': 1800 # 30分钟
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 并发控制
|
||||
```python
|
||||
# 控制并发请求数量
|
||||
import time
|
||||
for immortal in immortals:
|
||||
result = load_balancer.get_data_for_immortal(immortal, 'stock_quote', symbol)
|
||||
time.sleep(0.2) # 避免过快请求
|
||||
```
|
||||
|
||||
### 3. 批量处理
|
||||
```python
|
||||
# 批量获取多个股票数据
|
||||
symbols = ['AAPL', 'TSLA', 'MSFT', 'GOOGL']
|
||||
results = {}
|
||||
for symbol in symbols:
|
||||
results[symbol] = load_balancer.conduct_immortal_debate(symbol)
|
||||
```
|
||||
|
||||
## 🎯 最佳实践
|
||||
|
||||
### 1. 监控API使用情况
|
||||
```python
|
||||
# 定期检查负载分布
|
||||
distribution = load_balancer.get_load_distribution()
|
||||
print(f"总调用次数: {sum(stats['calls'] for stats in distribution.values())}")
|
||||
```
|
||||
|
||||
### 2. 合理使用缓存
|
||||
```python
|
||||
# 对于实时性要求不高的数据,优先使用缓存
|
||||
result = load_balancer.get_data_for_immortal('韩湘子', 'company_overview', 'AAPL')
|
||||
if result.cached:
|
||||
print("使用缓存数据,节省API调用")
|
||||
```
|
||||
|
||||
### 3. 错误处理
|
||||
```python
|
||||
result = load_balancer.get_data_for_immortal('吕洞宾', 'stock_quote', 'AAPL')
|
||||
if not result.success:
|
||||
print(f"获取数据失败: {result.error}")
|
||||
# 实施降级策略
|
||||
else:
|
||||
# 正常处理数据
|
||||
process_stock_data(result.data)
|
||||
```
|
||||
|
||||
## 📚 进阶使用
|
||||
|
||||
### 自定义数据处理器
|
||||
```python
|
||||
class CustomDataNormalizer(DataNormalizer):
|
||||
def normalize_stock_quote(self, raw_data, api_source):
|
||||
# 自定义数据标准化逻辑
|
||||
normalized = super().normalize_stock_quote(raw_data, api_source)
|
||||
# 添加自定义字段
|
||||
normalized['custom_score'] = self.calculate_score(normalized)
|
||||
return normalized
|
||||
|
||||
# 使用自定义处理器
|
||||
load_balancer.data_normalizer = CustomDataNormalizer()
|
||||
```
|
||||
|
||||
### 自定义健康检查
|
||||
```python
|
||||
class CustomHealthChecker(APIHealthChecker):
|
||||
def _perform_health_check(self, api_name):
|
||||
# 自定义健康检查逻辑
|
||||
# 例如:检查API响应时间、错误率等
|
||||
pass
|
||||
|
||||
load_balancer.health_checker = CustomHealthChecker()
|
||||
```
|
||||
|
||||
## 🎉 完成!
|
||||
|
||||
现在您已经掌握了稷下学宫负载均衡系统的基本使用方法。
|
||||
|
||||
### 下一步
|
||||
- 📖 阅读完整文档: `README_jixia_load_balancing.md`
|
||||
- 🔧 查看配置文件: `src/jixia/config/immortal_api_config.json`
|
||||
- 💻 研究核心代码: `src/jixia/engines/jixia_load_balancer.py`
|
||||
- 🚀 开始构建您的投资分析系统!
|
||||
|
||||
---
|
||||
*🏛️ 稷下学宫 - 智慧投资,从负载均衡开始*
|
||||
@@ -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 提交问题
|
||||
- **文档更新**: 欢迎提交文档改进建议
|
||||
|
||||
---
|
||||
|
||||
*🏛️ 稷下学宫 - 让智慧的光芒照亮投资的道路*
|
||||
152
modules/documentation-suite/docs/guides/shushu-demo-results.md
Normal file
152
modules/documentation-suite/docs/guides/shushu-demo-results.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# 术数书 Hyperdrive + NeonDB 查询系统演示结果
|
||||
|
||||
## 系统概述
|
||||
|
||||
我们成功部署了一个基于 Cloudflare Hyperdrive + NeonDB 的术数书查询系统,通过高性能的边缘计算和数据库连接池优化,实现了对古代术数典籍的快速查询和检索。
|
||||
|
||||
## 部署信息
|
||||
|
||||
- **Worker URL**: https://hyperdrive.seekkey.tech/
|
||||
- **Hyperdrive ID**: ef43924d89064cddabfaccf06aadfab6
|
||||
- **数据库**: NeonDB PostgreSQL
|
||||
- **连接池**: 已启用
|
||||
- **边缘缓存**: 全球分布
|
||||
|
||||
## 可用 API 端点
|
||||
|
||||
### 1. 基础端点
|
||||
- `GET /` - 系统信息和端点列表
|
||||
- `GET /test-connection` - 测试数据库连接
|
||||
- `GET /test-query` - 测试数据库查询
|
||||
|
||||
### 2. 术数书查询端点
|
||||
- `GET /query-tables` - 查询数据库表结构
|
||||
- `GET /query-shushu?limit=N` - 查询术数书内容
|
||||
- `GET /search-shushu?q=keyword&limit=N` - 搜索术数书内容
|
||||
- `GET /shushu-stats` - 获取术数书统计信息
|
||||
|
||||
## 数据库结构
|
||||
|
||||
通过 `/query-tables` 端点发现的表结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "success",
|
||||
"message": "Tables retrieved successfully",
|
||||
"tables": [
|
||||
{
|
||||
"table_name": "books",
|
||||
"table_schema": "public"
|
||||
},
|
||||
{
|
||||
"table_name": "hyperdrive_test",
|
||||
"table_schema": "public"
|
||||
},
|
||||
{
|
||||
"table_name": "playing_with_neon",
|
||||
"table_schema": "public"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 术数书内容示例
|
||||
|
||||
通过 `/query-shushu?limit=3` 成功获取的术数书内容:
|
||||
|
||||
### 书籍信息
|
||||
- **ID**: 1
|
||||
- **标题**: 《神相全编》
|
||||
- **作者**: 袁珙
|
||||
- **类别**: 相术
|
||||
- **子类别**: 面相手相
|
||||
- **总字数**: 33,897 字
|
||||
- **创建时间**: 2025-07-17T15:48:55.563Z
|
||||
|
||||
### 内容片段
|
||||
|
||||
```
|
||||
诈。口尖唇薄者多妄。冷笑无情多诈。偷视不正多诈。视上顾下多诈。
|
||||
妄说语言如太急者多诈。牙齿疏者多诈。又曰鼻尖毫出、眼细视低,
|
||||
口角高低,步履纵横,行步不匀,脚走高低多诈。
|
||||
|
||||
宽大
|
||||
升斗满,部位中正,印堂开阔,诸部圆满,鼻窍微露。阴德眼上下堂
|
||||
有黄气,卧蚕出见,印堂黄气,精舍黄气。带令地角朝天、耳有轮廓
|
||||
朝水,口有棱角。眼带桃花眉如线。又如新月久视,意气可人。
|
||||
|
||||
贪食格
|
||||
鼻如鹰嘴者多贪,心狡。眼红者多贪,心毒。眉卓者多贪。嘴尖者多贪。
|
||||
鼻勾者多贪。
|
||||
|
||||
劳碌格
|
||||
眼长多劳碌。骨粗多劳碌。面如马面驴唇劳碌。眉重气弱者劳碌。
|
||||
鱼尾纹多者劳碌。
|
||||
```
|
||||
|
||||
## 系统特点
|
||||
|
||||
### 1. 高性能优化
|
||||
- **Hyperdrive 连接池**: 减少数据库连接开销
|
||||
- **边缘缓存**: 全球分布式缓存,降低延迟
|
||||
- **智能路由**: 自动选择最近的数据中心
|
||||
|
||||
### 2. 成本优化
|
||||
- **连接复用**: 大幅减少 NeonDB 的连接数消耗
|
||||
- **查询缓存**: 减少重复查询的数据库负载
|
||||
- **按需扩展**: 根据访问量自动调整资源
|
||||
|
||||
### 3. 功能特性
|
||||
- **多表查询**: 自动检测和查询可能的术数书表
|
||||
- **全文搜索**: 支持关键词搜索术数书内容
|
||||
- **统计分析**: 提供数据库使用统计信息
|
||||
- **RESTful API**: 标准化的 API 接口
|
||||
|
||||
## 与 AutoRAG 对比的优势
|
||||
|
||||
### 1. 数据访问速度
|
||||
- **Hyperdrive**: 全球边缘缓存,毫秒级响应
|
||||
- **AutoRAG**: 依赖本地或远程向量数据库,可能有网络延迟
|
||||
|
||||
### 2. 数据一致性
|
||||
- **Hyperdrive**: 直接查询源数据库,保证数据实时性
|
||||
- **AutoRAG**: 向量化数据可能存在更新延迟
|
||||
|
||||
### 3. 查询精确性
|
||||
- **Hyperdrive**: SQL 精确查询,支持复杂条件
|
||||
- **AutoRAG**: 语义相似性查询,可能存在误差
|
||||
|
||||
### 4. 成本效益
|
||||
- **Hyperdrive**: 连接池优化,降低数据库成本
|
||||
- **AutoRAG**: 需要额外的向量数据库和计算资源
|
||||
|
||||
## 使用场景
|
||||
|
||||
### 1. 学术研究
|
||||
- 快速检索古代术数典籍
|
||||
- 支持精确的文本查询
|
||||
- 提供完整的原文内容
|
||||
|
||||
### 2. 应用开发
|
||||
- 为术数应用提供数据 API
|
||||
- 支持多种查询方式
|
||||
- 高并发访问支持
|
||||
|
||||
### 3. 知识服务
|
||||
- 构建术数知识库
|
||||
- 提供实时查询服务
|
||||
- 支持多终端访问
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **前端**: Cloudflare Workers (TypeScript)
|
||||
- **数据库**: NeonDB (PostgreSQL)
|
||||
- **连接优化**: Cloudflare Hyperdrive
|
||||
- **部署**: Cloudflare Workers Platform
|
||||
- **API**: RESTful JSON API
|
||||
|
||||
## 总结
|
||||
|
||||
通过 Cloudflare Hyperdrive + NeonDB 的组合,我们成功构建了一个高性能、低成本的术数书查询系统。该系统不仅提供了快速的数据访问能力,还通过智能缓存和连接池优化,在 NeonDB 免费配额下支持了更大的访问量。
|
||||
|
||||
相比传统的 AutoRAG 方案,我们的系统在数据访问速度、查询精确性和成本控制方面都有显著优势,为术数典籍的数字化应用提供了一个理想的技术解决方案。
|
||||
Reference in New Issue
Block a user