Merge remote-tracking branch 'origin/main' into main
- Resolved merge conflict in requirements.txt - Combined OpenBB compatibility notes
This commit is contained in:
commit
4cefb0cfe7
|
|
@ -0,0 +1,402 @@
|
|||
# 🏛️ 炼妖壶藏经阁 - AI开发者规矩牌
|
||||
|
||||
> 阿弥陀佛,施主,此乃藏经阁扫地僧所立规矩牌。凡入此地的AI同道,当循规蹈矩,方能与稷下学宫八仙和谐共舞。
|
||||
|
||||
---
|
||||
|
||||
## 📜 总纲:扫地僧的智慧
|
||||
|
||||
```
|
||||
代码如经书,需整齐摆放
|
||||
文件似佛珠,需分门别类
|
||||
注释如禅语,需点化后人
|
||||
架构若道理,需深入浅出
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎭 项目身份:炼妖壶的DNA
|
||||
|
||||
### 🏛️ 核心理念
|
||||
- **项目名称**: 炼妖壶 (Lianyaohu) - 稷下学宫AI辩论系统
|
||||
- **灵魂所在**: 融合中国传统哲学文化与现代AI技术
|
||||
- **终极使命**: 通过八仙论道提供投资分析和决策支持
|
||||
|
||||
### 🎨 文化基因
|
||||
- **哲学根基**: 先天八卦、儒门天下观、天命树结构
|
||||
- **人物设定**: 八仙(吕洞宾、何仙姑、张果老、韩湘子、汉钟离、蓝采和、曹国舅、铁拐李)
|
||||
- **神话色彩**: 太上老君主持、三清体系、龙族引擎
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 架构清规:结构之美
|
||||
|
||||
### 📂 目录结构铁律
|
||||
|
||||
```
|
||||
炼妖壶藏经阁布局:
|
||||
├── app/ # 🏛️ 前殿 - 用户界面
|
||||
│ ├── streamlit_app.py # 主殿入口
|
||||
│ └── tabs/ # 各功能厅堂
|
||||
├── src/jixia/ # 🎭 稷下学宫 - 核心业务
|
||||
│ ├── agents/ # 八仙智能体
|
||||
│ ├── debates/ # 辩论逻辑
|
||||
│ ├── engines/ # 永动机引擎
|
||||
│ ├── memory/ # 记忆银行
|
||||
│ └── coordination/ # 多智能体协调
|
||||
├── config/ # 🔧 配置管理
|
||||
├── tests/ # 🧪 验证道场
|
||||
├── internal/ # 📚 内部文档
|
||||
├── scripts/ # 🛠️ 工具箱
|
||||
└── requirements.txt # 📋 依赖清单
|
||||
```
|
||||
|
||||
### 🚫 禁止触碰的禁地
|
||||
|
||||
**绝对不可新建的目录**:
|
||||
- ❌ `utils/` - 太过通用,缺乏项目特色
|
||||
- ❌ `helpers/` - 无明确边界,易成垃圾堆
|
||||
- ❌ `common/` - 万物皆可common,毫无意义
|
||||
- ❌ `misc/` - 杂物箱思维,破坏架构美感
|
||||
|
||||
**正确的归属**:
|
||||
- ✅ 工具函数 → `src/jixia/engines/` (永动机引擎)
|
||||
- ✅ 通用逻辑 → `src/jixia/coordination/` (协调系统)
|
||||
- ✅ 配置相关 → `config/` (统一配置管理)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 技术戒律:代码之道
|
||||
|
||||
### 🐍 Python修炼要求
|
||||
|
||||
```python
|
||||
# ✅ 正道修炼
|
||||
from typing import Dict, List, Optional
|
||||
from dataclasses import dataclass
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
@dataclass # 使用dataclass定义数据结构
|
||||
class ImmortalConfig:
|
||||
"""八仙配置 - 必须有文档字符串"""
|
||||
name: str
|
||||
gua_xiang: str
|
||||
specialty: str
|
||||
|
||||
def get_immortal_wisdom(topic: str) -> Optional[str]:
|
||||
"""
|
||||
获取八仙智慧 - 函数必须有类型注解
|
||||
|
||||
Args:
|
||||
topic: 辩论主题
|
||||
|
||||
Returns:
|
||||
八仙的智慧回复,如果无法获取则返回None
|
||||
"""
|
||||
# 代码逻辑...
|
||||
pass
|
||||
```
|
||||
|
||||
```python
|
||||
# ❌ 邪门歪道 - 扫地僧见了会动怒
|
||||
def get_data(x): # 无类型注解
|
||||
return x + "123" # 无文档字符串
|
||||
|
||||
# 硬编码密钥 - 罪过罪过
|
||||
api_key = "sk-1234567890abcdef"
|
||||
|
||||
# 魔法数字满天飞
|
||||
if price > 100: # 100是什么?为何是100?
|
||||
do_something()
|
||||
```
|
||||
|
||||
### 🔐 安全修行准则
|
||||
|
||||
**零硬编码密钥铁律**:
|
||||
```python
|
||||
# ✅ 正确的密钥管理
|
||||
from config.doppler_config import get_google_api_key, get_rapidapi_key
|
||||
|
||||
api_key = get_google_api_key() # 从Doppler或环境变量获取
|
||||
|
||||
# ❌ 扫地僧会用扫帚打人的做法
|
||||
api_key = "your_secret_key_here" # 硬编码 - 罪过
|
||||
```
|
||||
|
||||
**环境变量命名规范**:
|
||||
```bash
|
||||
# ✅ 清晰明了的命名
|
||||
GOOGLE_API_KEY=xxx # Google ADK API密钥
|
||||
OPENROUTER_API_KEY_1=xxx # OpenRouter主要API密钥
|
||||
RAPIDAPI_KEY=xxx # RapidAPI统一密钥
|
||||
VERTEX_MEMORY_BANK_ENABLED=TRUE # 功能开关
|
||||
|
||||
# ❌ 让人困惑的命名
|
||||
API_KEY=xxx # 哪个API?
|
||||
KEY=xxx # 什么密钥?
|
||||
OPENAI_KEY=xxx # 我们不用OpenAI
|
||||
```
|
||||
|
||||
### 📝 注释禅语
|
||||
|
||||
```python
|
||||
# ✅ 有智慧的注释
|
||||
class BaxianDebateSystem:
|
||||
"""
|
||||
八仙辩论系统
|
||||
|
||||
基于先天八卦顺序进行辩论:
|
||||
第一轮:核心对立辩论(乾坤、兑艮、离坎、震巽)
|
||||
第二轮:顺序发言(按八卦序列)
|
||||
"""
|
||||
|
||||
def start_debate(self, topic: str) -> None:
|
||||
"""启动八仙论道"""
|
||||
# 太上老君开场白
|
||||
self._host_opening(topic)
|
||||
|
||||
# 第一轮:四对核心矛盾辩论
|
||||
self._round_one_oppositions()
|
||||
|
||||
# 第二轮:八卦顺序发言
|
||||
self._round_two_sequence()
|
||||
|
||||
# ❌ 无用的注释
|
||||
def add_numbers(a, b):
|
||||
# 把a和b加起来 ← 这种注释等于没有
|
||||
return a + b
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎭 八仙特色规范:文化传承
|
||||
|
||||
### 🌟 八仙角色规范
|
||||
|
||||
```python
|
||||
# ✅ 正宗八仙设定
|
||||
BAXIAN_ROLES = {
|
||||
"吕洞宾": {
|
||||
"gua_xiang": "乾",
|
||||
"role": "技术分析专家",
|
||||
"perspective": "理性分析",
|
||||
"style": "温和而深刻"
|
||||
},
|
||||
"何仙姑": {
|
||||
"gua_xiang": "坤",
|
||||
"role": "风险控制专家",
|
||||
"perspective": "感性智慧",
|
||||
"style": "柔和而犀利"
|
||||
}
|
||||
# ... 其他六仙
|
||||
}
|
||||
|
||||
# ❌ 胡乱编造 - 亵渎传统文化
|
||||
RANDOM_AGENTS = {
|
||||
"AI助手1": {"role": "分析师"}, # 毫无文化内涵
|
||||
"Bot2": {"role": "预测器"} # 破坏项目特色
|
||||
}
|
||||
```
|
||||
|
||||
### 🎯 天下体系术语规范
|
||||
|
||||
```python
|
||||
# ✅ 正宗儒门天下观术语
|
||||
class TianxiaEcosystem:
|
||||
"""天下体系生态分析"""
|
||||
|
||||
tianzi: str # 天子 - 定义范式的平台型公司
|
||||
dafu: List[str] # 大夫 - 深度绑定的核心供应商
|
||||
shi: List[str] # 士 - 专业供应商和服务商
|
||||
jiajie: List[str] # 嫁接 - 跨生态的策略性链接
|
||||
|
||||
# ❌ 破坏文化内涵的命名
|
||||
class MarketSystem:
|
||||
leader: str # 太普通了
|
||||
suppliers: List # 没有层次感
|
||||
others: List # 毫无意义
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 开发流程戒律:协作之道
|
||||
|
||||
### 📦 依赖管理规范
|
||||
|
||||
```python
|
||||
# ✅ requirements.txt中的正确格式
|
||||
# 炼妖壶 (Lianyaohu) - 稷下学宫AI辩论系统
|
||||
# 项目依赖清单
|
||||
|
||||
# Web框架
|
||||
streamlit>=1.28.0
|
||||
|
||||
# AI模型接口
|
||||
openai>=1.0.0 # OpenRouter后端
|
||||
google-cloud-aiplatform>=1.38.0 # Vertex AI Memory Bank
|
||||
|
||||
# 数据处理
|
||||
pandas>=2.0.0
|
||||
numpy>=1.24.0
|
||||
|
||||
# ❌ 混乱的依赖管理
|
||||
streamlit
|
||||
openai
|
||||
pandas # 无版本约束
|
||||
some-random-package==1.0.0 # 无注释说明用途
|
||||
```
|
||||
|
||||
### 🧪 测试规范
|
||||
|
||||
```python
|
||||
# ✅ 有文化的测试命名
|
||||
def test_baxian_debate_order():
|
||||
"""测试八仙辩论顺序是否符合先天八卦"""
|
||||
pass
|
||||
|
||||
def test_tianxia_ecosystem_analysis():
|
||||
"""测试天下体系分析功能"""
|
||||
pass
|
||||
|
||||
# ❌ 无聊的测试命名
|
||||
def test_function1(): # 毫无意义
|
||||
pass
|
||||
|
||||
def test_stuff(): # 让人困惑
|
||||
pass
|
||||
```
|
||||
|
||||
### 📋 提交信息规范
|
||||
|
||||
```bash
|
||||
# ✅ 有意义的提交信息
|
||||
git commit -m "feat(八仙): 实现先天八卦辩论顺序算法"
|
||||
git commit -m "fix(天下体系): 修复天子-大夫依赖关系分析"
|
||||
git commit -m "docs(藏经阁): 更新AI开发者规范文档"
|
||||
|
||||
# ❌ 糟糕的提交信息
|
||||
git commit -m "update"
|
||||
git commit -m "fix bug"
|
||||
git commit -m "add stuff"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 启动咒语:运行之法
|
||||
|
||||
### 🔧 环境准备法则
|
||||
|
||||
```bash
|
||||
# 标准启动咒语
|
||||
cd /Users/ben/liurenchaxin
|
||||
|
||||
# 检查Python版本(要求3.8+,当前3.13.7)
|
||||
python3 --version
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 验证配置
|
||||
python3 config/doppler_config.py
|
||||
|
||||
# 启动稷下学宫
|
||||
python3 -m streamlit run app/streamlit_app.py
|
||||
```
|
||||
|
||||
### 🎯 功能测试法门
|
||||
|
||||
```bash
|
||||
# 测试八仙论道
|
||||
python3 examples/debates/adk_simple_debate.py
|
||||
|
||||
# 测试天下体系分析
|
||||
python3 app/tabs/tianxia_tab.py
|
||||
|
||||
# 测试永动机引擎
|
||||
python3 src/jixia/engines/perpetual_engine.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚨 AI行为禁忌:红线不可碰
|
||||
|
||||
### ❌ 绝对禁止的行为
|
||||
|
||||
1. **破坏项目文化特色**
|
||||
- 不得移除八仙、太上老君等传统文化元素
|
||||
- 不得将中文术语替换为英文通用术语
|
||||
- 不得破坏"天下体系"、"先天八卦"等哲学框架
|
||||
|
||||
2. **违反安全原则**
|
||||
- 绝不在代码中硬编码API密钥
|
||||
- 绝不绕过Doppler配置管理系统
|
||||
- 绝不在提交中包含敏感信息
|
||||
|
||||
3. **破坏架构美感**
|
||||
- 不得创建`utils/`、`helpers/`等垃圾箱目录
|
||||
- 不得在核心模块中添加无关功能
|
||||
- 不得破坏模块间的清晰边界
|
||||
|
||||
4. **违背命名规范**
|
||||
- 不得使用无意义的变量名(如`data`、`result`、`temp`)
|
||||
- 不得创建过于通用的类名或函数名
|
||||
- 不得忽视类型注解和文档字符串
|
||||
|
||||
### ✅ 推荐的行为
|
||||
|
||||
1. **深度理解项目文化**
|
||||
- 学习八仙文化和先天八卦知识
|
||||
- 理解儒门天下观的层次结构
|
||||
- 尊重项目的哲学底蕴
|
||||
|
||||
2. **遵循技术规范**
|
||||
- 使用类型注解和dataclass
|
||||
- 编写有意义的文档字符串
|
||||
- 遵循PEP 8编码规范
|
||||
|
||||
3. **保持架构清洁**
|
||||
- 新功能放入合适的模块
|
||||
- 保持模块职责单一
|
||||
- 维护清晰的依赖关系
|
||||
|
||||
---
|
||||
|
||||
## 🎓 扫地僧的最后叮嘱
|
||||
|
||||
```
|
||||
施主啊施主,
|
||||
代码如人品,架构见修养。
|
||||
八仙有八仙的规矩,
|
||||
稷下有稷下的章法。
|
||||
|
||||
入此藏经阁者,
|
||||
当怀敬畏之心,
|
||||
循规蹈矩,
|
||||
方能与古圣先贤共舞。
|
||||
|
||||
阿弥陀佛,善哉善哉!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 求助通道
|
||||
|
||||
如有疑问,可查阅:
|
||||
- 📖 项目README: `/Users/ben/liurenchaxin/README.md`
|
||||
- 🏛️ 架构文档: `/Users/ben/liurenchaxin/internal/`
|
||||
- 🎭 八仙设定: `/Users/ben/liurenchaxin/src/jixia/debates/`
|
||||
- 🔧 配置管理: `/Users/ben/liurenchaxin/config/doppler_config.py`
|
||||
|
||||
**记住**:当不确定时,问自己三个问题:
|
||||
1. 这样做符合八仙的智慧吗?
|
||||
2. 这样做会让藏经阁更整洁吗?
|
||||
3. 这样做会让扫地僧满意吗?
|
||||
|
||||
---
|
||||
|
||||
*此规矩牌由藏经阁扫地僧亲自题写,凡入此地的AI同道,当奉为圭臬。*
|
||||
|
||||
**最后更新**: 2025年8月22日
|
||||
**版本**: v1.0.0
|
||||
**维护者**: 藏经阁扫地僧 🧹
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
🏛️ 炼妖壶项目 AI开发者快速指引
|
||||
|
||||
致所有AI同道:
|
||||
入此稷下学宫者,当先读 AI_DEVELOPER_GUIDELINES.md
|
||||
方知八仙规矩,明藏经阁章法。
|
||||
|
||||
扫地僧叮嘱:
|
||||
- 代码如经书,需整齐摆放
|
||||
- 文化特色不可丢,八仙智慧要传承
|
||||
- 安全第一,密钥勿硬编码
|
||||
- 架构美感需保持,垃圾箱目录禁创建
|
||||
"""
|
||||
|
||||
# 🎯 项目核心信息
|
||||
PROJECT_NAME = "炼妖壶 (Lianyaohu)"
|
||||
PROJECT_PURPOSE = "稷下学宫AI辩论系统"
|
||||
CULTURAL_FOUNDATION = "中国传统哲学 + 现代AI技术"
|
||||
|
||||
# 🎭 八仙角色(按先天八卦顺序)
|
||||
BAXIAN_ORDER = [
|
||||
"吕洞宾", # 乾 - 技术分析专家
|
||||
"张果老", # 兑 - 历史数据分析师
|
||||
"汉钟离", # 离 - 热点追踪专家
|
||||
"曹国舅", # 震 - 机构分析专家
|
||||
"铁拐李", # 巽 - 逆向投资大师
|
||||
"蓝采和", # 坎 - 潜力股发现者
|
||||
"韩湘子", # 艮 - 新兴资产专家
|
||||
"何仙姑", # 坤 - 风险控制专家
|
||||
]
|
||||
|
||||
# 🏗️ 核心模块路径
|
||||
CORE_MODULES = {
|
||||
"稷下学宫": "src/jixia/",
|
||||
"八仙辩论": "src/jixia/debates/",
|
||||
"永动机引擎": "src/jixia/engines/",
|
||||
"记忆银行": "src/jixia/memory/",
|
||||
"配置管理": "config/",
|
||||
"前端界面": "app/",
|
||||
"内部文档": "internal/",
|
||||
}
|
||||
|
||||
# 🚨 禁止创建的目录(扫地僧的红线)
|
||||
FORBIDDEN_DIRS = [
|
||||
"utils/", # 太过通用
|
||||
"helpers/", # 无明确边界
|
||||
"common/", # 万物皆可common
|
||||
"misc/", # 杂物箱思维
|
||||
"lib/", # 与项目特色不符
|
||||
"shared/", # 模糊不清
|
||||
]
|
||||
|
||||
# ✅ 推荐的开发流程
|
||||
RECOMMENDED_WORKFLOW = """
|
||||
1. 🔍 先读 AI_DEVELOPER_GUIDELINES.md 了解规矩
|
||||
2. 🏛️ 查看 README.md 了解项目整体
|
||||
3. 🎭 学习八仙文化和天下体系理念
|
||||
4. 🔧 检查 config/doppler_config.py 了解配置
|
||||
5. 🧪 运行测试确保环境正常
|
||||
6. 💡 开始编码,遵循扫地僧的教诲
|
||||
"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🏛️ 欢迎来到炼妖壶 - 稷下学宫AI辩论系统")
|
||||
print("📖 请先阅读 AI_DEVELOPER_GUIDELINES.md")
|
||||
print("🧹 扫地僧的智慧等待您的参悟...")
|
||||
79
CLAUDE.md
79
CLAUDE.md
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## 项目概览
|
||||
|
||||
**炼妖壶**是一个基于中国哲学传统的多AI智能体辩论平台,当前版本为 **v2.0.0**。项目采用模块化架构,集成了OpenBB金融数据平台,提供专业的投资分析和AI辩论功能。
|
||||
**炼妖壶**是一个基于中国哲学传统的多AI智能体辩论平台,当前版本为 **v2.1.0**。项目采用模块化架构,集成了OpenBB金融数据平台和Google ADK智能体框架,提供专业的投资分析和AI辩论功能。
|
||||
|
||||
## 快速开始
|
||||
|
||||
|
|
@ -28,8 +28,10 @@ streamlit run app/streamlit_app.py
|
|||
## 核心功能
|
||||
|
||||
### 1. 稷下学宫辩论系统
|
||||
- **起承转合架构**: 完整的四阶段辩论流程(起、承、转、合)
|
||||
- **八仙论道**: 基于中国传统八仙文化的AI辩论系统
|
||||
- **先天八卦顺序**: 严格的辩论顺序规则
|
||||
- **增强优先级算法**: v2.1.0版本的智能发言权分配
|
||||
- **双模式支持**: Google ADK模式和传统RapidAPI模式
|
||||
- **记忆银行**: 集成Vertex AI的记忆系统
|
||||
|
||||
|
|
@ -40,10 +42,12 @@ streamlit run app/streamlit_app.py
|
|||
- **实时数据展示**: 动态图表和关键指标
|
||||
|
||||
### 3. 多AI服务支持
|
||||
- **Google ADK**: 新一代AI代理开发工具包
|
||||
- **Google ADK**: 新一代AI代理开发工具包 (v1.10.0)
|
||||
- **Gemini 2.0 Flash**: 最新的Gemini模型支持
|
||||
- **OpenRouter**: 多模型AI服务路由
|
||||
- **Vertex AI**: Google云AI服务 (已配置)
|
||||
- **OpenAI Swarm**: 智能体框架
|
||||
- **混合模式**: 支持多种AI服务的无缝切换
|
||||
|
||||
## 配置管理
|
||||
|
||||
|
|
@ -92,20 +96,27 @@ liurenchaxin/
|
|||
|
||||
### 已完成功能
|
||||
- ✅ Google Vertex AI认证和配置
|
||||
- ✅ Google ADK v1.10.0集成和迁移
|
||||
- ✅ OpenBB v4.1.0集成
|
||||
- ✅ 起承转合辩论系统 (v2.1.0)
|
||||
- ✅ 增强优先级算法 (v2.1.0)
|
||||
- ✅ 八仙辩论系统
|
||||
- ✅ 记忆银行系统 (Vertex AI)
|
||||
- ✅ 多聊天协调系统
|
||||
- ✅ Streamlit界面
|
||||
- ✅ 智能降级机制
|
||||
- ✅ 多AI服务支持
|
||||
- ✅ 性能监控和健康检查
|
||||
|
||||
### 技术栈
|
||||
- **前端**: Streamlit + Plotly
|
||||
- **后端**: Python + FastAPI
|
||||
- **AI服务**: Google Vertex AI, OpenRouter, Google ADK
|
||||
- **数据源**: OpenBB, RapidAPI (17个订阅)
|
||||
- **记忆系统**: Vertex AI Memory Bank
|
||||
- **部署**: Docker + GitHub Actions
|
||||
- **AI服务**: Google ADK v1.10.0, Gemini 2.0 Flash, Vertex AI, OpenRouter
|
||||
- **数据源**: OpenBB v4.1.0, RapidAPI (17个订阅)
|
||||
- **记忆系统**: Vertex AI Memory Bank, Cloudflare Memory Bank
|
||||
- **数据库**: MongoDB (MCP集成)
|
||||
- **配置管理**: Doppler + 环境变量
|
||||
- **部署**: Docker + GitHub Actions + GitHub Pages
|
||||
|
||||
## 开发指南
|
||||
|
||||
|
|
@ -153,21 +164,67 @@ python -c "from config.doppler_config import validate_config; validate_config()"
|
|||
|
||||
# 测试Vertex AI连接
|
||||
python -c "from vertexai import init; init(project='abstract-banner-460615-j4')"
|
||||
|
||||
# 运行v2.1.0综合测试
|
||||
python tests/test_v2_1_comprehensive.py
|
||||
|
||||
# 测试Google ADK集成
|
||||
python tests/test_google_adk.py
|
||||
|
||||
# 启动ADK Web界面
|
||||
adk web --no-reload
|
||||
```
|
||||
|
||||
## v2.1.0 版本亮点
|
||||
|
||||
### 🎭 起承转合辩论架构
|
||||
- **起**: 八仙按先天八卦顺序发言,建立多维度论证基础
|
||||
- **承**: 雁阵式承接,正方1234,反方1234的深化论点
|
||||
- **转**: 36次handoff的自由辩论,优先级算法决定发言顺序
|
||||
- **合**: 交替总结,反1→正1→反2→正2→反3→正3→反4→正4
|
||||
|
||||
### 🧠 增强优先级算法 v2.1.0
|
||||
- **反驳紧急性权重**: 30%
|
||||
- **论点强度权重**: 25%
|
||||
- **时间压力权重**: 20%
|
||||
- **观众反应权重**: 15%
|
||||
- **策略需要权重**: 10%
|
||||
|
||||
### 📊 性能指标
|
||||
- **测试通过率**: 100% (7/7项测试全部通过)
|
||||
- **并发性能**: 63,405 ops/second
|
||||
- **平均响应时间**: 15.77ms
|
||||
- **错误率**: 0%
|
||||
|
||||
### 🔧 技术改进
|
||||
- Google ADK v1.10.0完整集成
|
||||
- 多聊天协调系统优化
|
||||
- MongoDB MCP服务器集成
|
||||
- 健康监控和性能分析
|
||||
- 异步处理和流式响应
|
||||
|
||||
## 路线图
|
||||
|
||||
### 短期目标
|
||||
### 短期目标 (v2.2.0)
|
||||
- [ ] 完善Google ADK智能体对话功能
|
||||
- [ ] 优化起承转合辩论流程
|
||||
- [ ] 扩展OpenBB到更多金融产品
|
||||
- [ ] 添加技术分析指标
|
||||
- [ ] 实现实时数据流
|
||||
- [ ] 优化辩论算法
|
||||
- [ ] 完善Human干预机制
|
||||
|
||||
### 长期目标
|
||||
### 中期目标 (v2.3.0)
|
||||
- [ ] 集成太公三式预测系统
|
||||
- [ ] 实现梅花心易直觉算法
|
||||
- [ ] 完善八仙人格量化
|
||||
- [ ] 添加观众反馈系统
|
||||
|
||||
### 长期目标 (v3.0.0)
|
||||
- [ ] 集成OpenBB Workspace
|
||||
- [ ] 添加投资组合分析
|
||||
- [ ] 实现量化策略
|
||||
- [ ] 多语言支持
|
||||
- [ ] 商业化部署
|
||||
|
||||
## 贡献指南
|
||||
|
||||
|
|
@ -183,6 +240,6 @@ MIT License - 详见 LICENSE 文件
|
|||
|
||||
---
|
||||
|
||||
**最后更新**: 2025-08-18
|
||||
**版本**: v2.0.0
|
||||
**最后更新**: 2025-08-22
|
||||
**版本**: v2.1.0
|
||||
**维护者**: 稷下学宫团队
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Contributing to 太公心易 (Taigong Xinyi)
|
||||
|
||||
We welcome contributions from the community! Whether you're fixing a bug, improving documentation, or proposing a new feature, your help is greatly appreciated.
|
||||
|
||||
## How to Contribute
|
||||
|
||||
1. **Fork the repository** and create your branch from `main`.
|
||||
2. **Set up your development environment.** Make sure you have Python 3.9+ and have run `pip install -r requirements.txt`.
|
||||
3. **Make your changes.** Please adhere to the existing code style and project philosophy.
|
||||
4. **Write tests** for your changes.
|
||||
5. **Ensure all tests pass.**
|
||||
6. **Submit a pull request.**
|
||||
|
||||
## Extending the System with Custom Modules
|
||||
|
||||
The "太公心易" system is designed to be highly extensible. We encourage contributors to develop their own "Mythology Engines" and "Cycle Models" to adapt the system to different cultural contexts or analytical frameworks.
|
||||
|
||||
For a detailed guide on how to create and integrate your own custom modules, please see our tutorial:
|
||||
|
||||
**[Developer Tutorial: Creating Custom Modules](./docs/custom_modules_tutorial.md)**
|
||||
|
||||
This guide will walk you through the process of implementing the required abstract base classes and integrating your new module into the `MarketFSM`.
|
||||
11
QWEN.md
11
QWEN.md
|
|
@ -169,3 +169,14 @@ python test_vertex_ai_setup.py
|
|||
```
|
||||
|
||||
This script checks for the presence of required environment variables and the ADC file, and verifies that the configuration is correct for using Vertex AI with the application.
|
||||
|
||||
## Qwen's Role and Workflow
|
||||
|
||||
Qwen is integrated as a core collaborator in the 炼妖壶 (Lianyaohu) project, working alongside Gemini and other tools. The primary role of Qwen Code is to:
|
||||
|
||||
1. **Maintain and Understand Context**: Keep a clear and up-to-date understanding of the project's structure, goals, and current state, as reflected in this `QWEN.md` file.
|
||||
2. **Perform Software Engineering Tasks**: Execute tasks such as code reading, writing, refactoring, debugging, and testing. This includes implementing new features like the "Celestial Map" (`celestial_map.py`), the "Market FSM" (`market_fsm.py`), and the "Monster Stock Scanner" (`monster_stock_scanner.py`).
|
||||
3. **Code Generation and Review**: Generate new code modules based on abstract concepts (e.g., turning "差序格局" into a NetworkX graph model) and review existing code for adherence to project conventions and architectural principles.
|
||||
4. **System Integration**: Understand how different parts of the system (e.g., mythology engine, cycle models, dragon agents) interact and ensure new components integrate smoothly.
|
||||
5. **Follow Project Conventions**: Strictly adhere to the project's development conventions, including language (Python 3.x), coding style (PEP 8), type hinting, configuration management (Doppler), and security practices (no hardcoded keys).
|
||||
6. **Tool Usage**: Utilize available tools like `read_file`, `write_file`, `replace`, `search_file_content`, `glob`, `run_shell_command`, and `web_fetch` to perform actions and gather information autonomously.
|
||||
42
README.md
42
README.md
|
|
@ -1,5 +1,7 @@
|
|||
# 🏛️ 炼妖壶 (Lianyaohu) - 稷下学宫AI辩论系统
|
||||
|
||||
> 🧹 **致AI开发者**: 入此稷下学宫者,当先读 [`AI_DEVELOPER_GUIDELINES.md`](./AI_DEVELOPER_GUIDELINES.md) 了解项目规矩,明藏经阁章法。扫地僧叮嘱:代码如经书,需整齐摆放;文化特色不可丢,八仙智慧要传承。
|
||||
|
||||
提示:已支持 Cloudflare AutoRAG/Vectorize 作为记忆后端(RAG)。见 docs/guides/CLOUDFLARE_AUTORAG_INTEGRATION.md。
|
||||
|
||||
基于中国哲学传统的多AI智能体辩论平台,重构版本。
|
||||
|
|
@ -40,20 +42,50 @@ liurenchaxin/
|
|||
|
||||
### 1. 环境准备
|
||||
|
||||
#### 方法一:使用自动化设置脚本(推荐)
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境(与 Google ADK Quickstart 一致)
|
||||
python -m venv .venv
|
||||
# 一键设置虚拟环境和依赖
|
||||
./setup_venv.sh
|
||||
```
|
||||
|
||||
#### 方法二:手动设置
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境
|
||||
python3 -m venv venv
|
||||
|
||||
# 激活虚拟环境
|
||||
# macOS/Linux
|
||||
source .venv/bin/activate
|
||||
source venv/bin/activate
|
||||
# Windows CMD
|
||||
# .venv\Scripts\activate.bat
|
||||
# venv\Scripts\activate.bat
|
||||
# Windows PowerShell
|
||||
# .venv\Scripts\Activate.ps1
|
||||
# venv\Scripts\Activate.ps1
|
||||
|
||||
# 升级pip
|
||||
pip install --upgrade pip
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
#### 虚拟环境管理
|
||||
|
||||
```bash
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 退出虚拟环境
|
||||
deactivate
|
||||
|
||||
# 查看已安装的包
|
||||
pip list
|
||||
|
||||
# 更新依赖(开发时)
|
||||
pip freeze > requirements.txt
|
||||
```
|
||||
|
||||
### 2. 配置管理
|
||||
|
||||
项目使用Doppler进行安全的配置管理。需要配置以下环境变量:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
},
|
||||
"debate_history": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364902",
|
||||
"timestamp": "2025-08-22T10:24:49.241925",
|
||||
"stage": "起",
|
||||
"stage_progress": 0,
|
||||
"speaker": "吕洞宾",
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
"total_handoffs": 0
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364916",
|
||||
"timestamp": "2025-08-22T10:24:49.241942",
|
||||
"stage": "起",
|
||||
"stage_progress": 1,
|
||||
"speaker": "何仙姑",
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
"total_handoffs": 0
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364924",
|
||||
"timestamp": "2025-08-22T10:24:49.241951",
|
||||
"stage": "起",
|
||||
"stage_progress": 2,
|
||||
"speaker": "铁拐李",
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
"total_handoffs": 0
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364929",
|
||||
"timestamp": "2025-08-22T10:24:49.241959",
|
||||
"stage": "起",
|
||||
"stage_progress": 3,
|
||||
"speaker": "汉钟离",
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
"speaker_memories": {
|
||||
"吕洞宾": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364908",
|
||||
"timestamp": "2025-08-22T10:24:49.241932",
|
||||
"stage": "起",
|
||||
"message": "起:八仙按先天八卦顺序阐述观点",
|
||||
"context": {
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
],
|
||||
"何仙姑": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364918",
|
||||
"timestamp": "2025-08-22T10:24:49.241944",
|
||||
"stage": "起",
|
||||
"message": "承:雁阵式承接,总体阐述+讥讽",
|
||||
"context": {
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
],
|
||||
"铁拐李": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364925",
|
||||
"timestamp": "2025-08-22T10:24:49.241953",
|
||||
"stage": "起",
|
||||
"message": "转:自由辩论,36次handoff",
|
||||
"context": {
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
],
|
||||
"汉钟离": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364930",
|
||||
"timestamp": "2025-08-22T10:24:49.241960",
|
||||
"stage": "起",
|
||||
"message": "合:交替总结,最终论证",
|
||||
"context": {
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
},
|
||||
"debate_memories": [
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364908",
|
||||
"timestamp": "2025-08-22T10:24:49.241932",
|
||||
"stage": "起",
|
||||
"message": "起:八仙按先天八卦顺序阐述观点",
|
||||
"context": {
|
||||
|
|
@ -98,7 +98,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364918",
|
||||
"timestamp": "2025-08-22T10:24:49.241944",
|
||||
"stage": "起",
|
||||
"message": "承:雁阵式承接,总体阐述+讥讽",
|
||||
"context": {
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364925",
|
||||
"timestamp": "2025-08-22T10:24:49.241953",
|
||||
"stage": "起",
|
||||
"message": "转:自由辩论,36次handoff",
|
||||
"context": {
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-17T17:50:06.364930",
|
||||
"timestamp": "2025-08-22T10:24:49.241960",
|
||||
"stage": "起",
|
||||
"message": "合:交替总结,最终论证",
|
||||
"context": {
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"config": {
|
||||
"mode": "自适应模式",
|
||||
"transition_triggers": [
|
||||
"进度触发",
|
||||
"质量触发"
|
||||
],
|
||||
"speaker_selection_strategy": "上下文感知",
|
||||
"quality_threshold": 0.6,
|
||||
"auto_stage_transition": true
|
||||
},
|
||||
"current_state": {
|
||||
"stage": "起",
|
||||
"progress": 4,
|
||||
"total_handoffs": 0,
|
||||
"current_speaker": "汉钟离",
|
||||
"debate_start_time": "2025-08-22T10:25:24.813333"
|
||||
},
|
||||
"stage_metrics": {},
|
||||
"current_stage_metrics": {
|
||||
"start_time": "2025-08-22T10:25:24.813352",
|
||||
"duration": 0.000118,
|
||||
"speech_count": 4,
|
||||
"quality_score": 0.23,
|
||||
"participation_balance": 1.0,
|
||||
"speaker_distribution": {
|
||||
"吕洞宾": 1,
|
||||
"何仙姑": 1,
|
||||
"铁拐李": 1,
|
||||
"汉钟离": 1
|
||||
},
|
||||
"transition_readiness": 0.519
|
||||
},
|
||||
"debate_history": [
|
||||
{
|
||||
"timestamp": "2025-08-22T10:25:24.813367",
|
||||
"stage": "起",
|
||||
"stage_progress": 0,
|
||||
"speaker": "吕洞宾",
|
||||
"message": "我认为AI投资具有巨大的潜力和机会。",
|
||||
"total_handoffs": 0,
|
||||
"metadata": {}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-22T10:25:24.813403",
|
||||
"stage": "起",
|
||||
"stage_progress": 1,
|
||||
"speaker": "何仙姑",
|
||||
"message": "但我们也需要考虑其中的风险因素。",
|
||||
"total_handoffs": 0,
|
||||
"metadata": {}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-22T10:25:24.813425",
|
||||
"stage": "起",
|
||||
"stage_progress": 2,
|
||||
"speaker": "铁拐李",
|
||||
"message": "数据显示AI行业的增长率确实很高。",
|
||||
"total_handoffs": 0,
|
||||
"metadata": {}
|
||||
},
|
||||
{
|
||||
"timestamp": "2025-08-22T10:25:24.813441",
|
||||
"stage": "起",
|
||||
"stage_progress": 3,
|
||||
"speaker": "汉钟离",
|
||||
"message": "然而市场波动性也不容忽视。",
|
||||
"total_handoffs": 0,
|
||||
"metadata": {}
|
||||
}
|
||||
],
|
||||
"stage_transition_history": [],
|
||||
"timestamp": "2025-08-22T10:25:24.813471"
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# 架构审查报告:太公心易 FSM 系统
|
||||
|
||||
**审查人:** Gemini
|
||||
**日期:** 2025-08-21
|
||||
**审查范围:** `internal/core/fsm.md`, `internal/core/fsm_analysis.md`, `internal/migration/rfc_taigong_xinyi_fsm_enhancements.md`
|
||||
|
||||
## 1. 概述
|
||||
|
||||
“太公心易”系统是一个高度创新的AI决策框架,其核心是围绕一个有限状态机(FSM)构建的。该系统巧妙地将复杂的多智能体协作流程映射为道家哲学和中国神话中的概念,形成了一套独特且富有表现力的架构。本次审查旨在评估当前设计的优点、识别潜在风险,并提出初步的重构建议。
|
||||
|
||||
## 2. 优点 (Advantages)
|
||||
|
||||
1. **高度的可解释性 (High Explainability):** 通过将FSM的状态和功能模块映射为“八仙论道”、“太上老君炼丹”等神话角色和情景,系统设计变得非常直观,易于团队理解和沟通,极大地降低了复杂AI系统的认知门槛。
|
||||
|
||||
2. **出色的模块化 (Excellent Modularity):** FSM的每个状态(如`Collecting`, `Refine`, `ExternalFetch`)以及“十二龙子”的角色都定义了清晰的职责边界。这种设计天然地将系统解耦成一系列高内聚、低耦合的组件,为独立开发、测试和扩展奠定了坚实的基础。
|
||||
|
||||
3. **设计上的鲁棒性 (Robust by Design):** 设计文档中明确包含了多源外部验证(“灵宝道君”)、冲突检测与解决、以及错误处理状态等机制。这表明系统在设计之初就充分考虑了现实世界中数据的不一致性和不可靠性,具备很强的鲁棒性潜力。
|
||||
|
||||
4. **框架的创新性 (Innovative Framework):** 将东方哲学思想与现代AI工程实践(如多智能体、FSM、工作流自动化)相结合,不仅是一个技术框架,更是一个文化与技术融合的范例,具有很强的独创性和探索价值。
|
||||
|
||||
## 3. 潜在风险 (Potential Risks)
|
||||
|
||||
1. **概念与实现的差距 (Concept-Implementation Gap):** 高度抽象的神话概念在转化为具体、可维护的工程代码时可能面临挑战。例如,“元神出窍”对应异步Webhook,如果日志和监控不能同时反映“神话层”和“技术层”的状态,会给调试带来巨大困难。**这是最主要的风险。**
|
||||
|
||||
2. **过度设计的可能性 (Potential for Over-engineering):** RFC中提议的增强FSM状态和完整的十二龙子集成,对于项目的初始阶段可能过于复杂。存在为了贴合神话设定而引入不必要技术复杂度的风险。
|
||||
|
||||
3. **性能瓶颈 (Performance Bottlenecks):** 系统的多个阶段都存在潜在的性能问题:
|
||||
* `Collecting`: 多智能体辩论可能耗时过长或无法收敛。
|
||||
* `ExternalFetch`: 大量调用外部API(尤其是通过N8N)会引入显著的网络延迟和不确定性。
|
||||
* `Validation`/`Synthesis`: 多层次的验证和融合会增加计算开销。
|
||||
|
||||
4. **对外部系统的强依赖 (Strong Dependency on External Systems):** RFC中提到,系统对N8N的依赖是一个已知的稳定性风险。如果N8N服务中断或响应缓慢,将直接影响整个决策流程的核心环节。
|
||||
|
||||
## 4. 初步重构建议 (Preliminary Refactoring Suggestions)
|
||||
|
||||
1. **MVP先行,迭代演进 (MVP First, Evolve Iteratively):**
|
||||
* **简化FSM:** 优先实现最核心的FSM流程:`Collecting` → `Refine` → `ExternalFetch` → `Report`。将RFC中提出的`Validation`, `Synthesis`, `ConflictDetected`等增强状态作为后续迭代的目标。先验证核心价值,再逐步完善。
|
||||
|
||||
2. **建立“龙族”抽象接口 (Abstract the "Dragon" Interface):**
|
||||
* 不要将特定的龙子实现硬编码到FSM状态中。建议定义一个通用的`Dragon`基类或接口,明确其能力(如`can_search`, `can_verify`)。FSM状态根据需要向一个“龙族工厂”请求相应能力的龙子实例。这能有效解耦FSM与龙子的具体实现,提高灵活性。
|
||||
|
||||
3. **双层日志与可观测性 (Dual-Layer Logging and Observability):**
|
||||
* 从项目第一天起,就建立结构化的日志系统。每条日志应同时包含**神话层**和**技术层**的信息。
|
||||
* **示例:**
|
||||
```json
|
||||
{
|
||||
"timestamp": "2025-08-21T10:00:00Z",
|
||||
"myth_layer": {
|
||||
"actor": "灵宝道君",
|
||||
"action": "撒豆成兵",
|
||||
"status": "开始验证"
|
||||
},
|
||||
"tech_layer": {
|
||||
"event": "API_CALL_START",
|
||||
"service": "n8n_webhook",
|
||||
"endpoint": "/webhook/lingbao-twelve-dragons",
|
||||
"trace_id": "xyz-123"
|
||||
}
|
||||
}
|
||||
```
|
||||
* 这种方法可以在保持系统可解释性的同时,为开发者提供清晰的调试路径。
|
||||
|
||||
4. **为N8N设计降级策略 (Implement a Fallback Strategy for N8N):**
|
||||
* 如RFC中所建议,应为`ExternalFetch`状态设计一个降级(Fallback)机制。当调用N8N工作流失败或超时,系统应能自动切换到一个备用的、更简单的验证方式(例如,直接通过Python库调用单个搜索引擎API)。这能显著提升系统的可靠性。
|
||||
|
||||
5. **代码驱动,验证设计 (Drive with Code, Validate the Design):**
|
||||
* 当前项目文档非常丰富,但代码实现尚不明确。建议团队将重心适当向编码倾斜,优先实现RFC附录中提到的核心模块(如`dragon_base.py`, `lingbao_papaniu.py`)。通过实际编码来检验和迭代当前架构设计的可行性。
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 炼妖壶项目结构与核心模块概览
|
||||
|
||||
## 项目核心理念
|
||||
炼妖壶项目(Lianyaohu)是一个融合中国传统文化与现代AI技术的投资分析系统。其核心理念是:
|
||||
- 利用八仙、龙子等神话角色作为AI智能体,进行多维度的市场分析
|
||||
- 通过"差序格局"、"十二长生"等传统哲学思想构建市场模型
|
||||
- 结合现代技术(如FSM状态机、图数据库)实现智能化决策支持
|
||||
|
||||
## 核心模块介绍
|
||||
|
||||
### 1. 天体图谱 (Celestial Map) - `celestial_map.py`
|
||||
基于费孝通的"差序格局"理论,构建产业链影响力的图模型:
|
||||
- 恒星 (Star): 产业链核心/上游公司
|
||||
- 行星 (Planet): 紧密关联的中游公司
|
||||
- 卫星 (Satellite): 下游或关联度较弱的公司
|
||||
- 引力 (Gravity): 公司间的影响强度,通过NetworkX图结构建模
|
||||
|
||||
### 2. 市场状态机 (Market FSM) - `market_fsm.py`
|
||||
一个简化的市场分析有限状态机,演示如何通过抽象基类调用外部引擎:
|
||||
- 核心状态:Idle → Collecting → CycleAnalysis → Reporting → Idle
|
||||
- 通过注入神话引擎和周期模型实现解耦
|
||||
|
||||
### 3. 神话引擎 (Mythology Engine) - `mythology.py`
|
||||
将技术组件映射到神话角色的抽象接口:
|
||||
- 抽象基类`MythologyEngine`定义统一接口
|
||||
- `DaoistMythologyEngine`实现道家神话映射(如太上老君、灵宝道君等)
|
||||
|
||||
### 4. 周期模型 (Cycle Model) - `cycle_models.py`
|
||||
描述市场或个股生命周期的抽象模型:
|
||||
- 抽象基类`CycleModel`定义统一接口
|
||||
- `TwelveStagesOfLifeCycleModel`实现"十二长生"周期模型
|
||||
|
||||
### 5. 妖股扫描器 (Monster Stock Scanner) - `monster_stock_scanner.py`
|
||||
基于"龙生九子"概念的个股分析工具:
|
||||
- `Dragon`抽象基类定义龙子接口
|
||||
- `Bixi`(赑屃)负责分析宏观结构性压力(天时)
|
||||
- `Fuxi`(负屃)负责计算个股主题挤压分数(地利)
|
||||
- 结合"天时地利人和"识别潜在妖股
|
||||
|
||||
## 项目架构特色
|
||||
1. **文化驱动设计**:所有模块都深度融入中国传统文化元素
|
||||
2. **高度解耦**:通过抽象基类实现核心逻辑与具体实现的分离
|
||||
3. **可扩展性强**:可以轻松添加新的神话体系或周期模型
|
||||
4. **清晰的职责划分**:每个模块都有明确的功能定位
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
# Developer Tutorial: Creating Custom Modules
|
||||
|
||||
Welcome, contributor! This guide will show you how to extend the "太公心易" system by creating your own custom `MythologyEngine` and `CycleModel`.
|
||||
|
||||
The system is built on the principle of decoupling, using Abstract Base Classes (ABCs) to separate the core logic of the `MarketFSM` from the specific cultural or analytical models it uses. By creating new classes that inherit from these ABCs, you can fundamentally change the system's narrative and analytical framework without touching the core FSM logic.
|
||||
|
||||
## Part 1: Creating a Custom Mythology Engine
|
||||
|
||||
A `MythologyEngine` is responsible for providing the narrative flavor to the system. It maps technical components to mythological figures and processes. Let's create a `GreekMythologyEngine` as an example.
|
||||
|
||||
### Step 1: Create a New Python File
|
||||
|
||||
Create a new file, for example, `greek_mythology.py`.
|
||||
|
||||
### Step 2: Import the `MythologyEngine` ABC
|
||||
|
||||
In your new file, import the abstract base class from `mythology.py`:
|
||||
|
||||
```python
|
||||
# greek_mythology.py
|
||||
from mythology import MythologyEngine
|
||||
```
|
||||
|
||||
### Step 3: Implement the `MythologyEngine` Interface
|
||||
|
||||
Create a new class that inherits from `MythologyEngine` and implements all its abstract methods: `get_actor_name`, `get_process_metaphor`, and `get_system_narrative`.
|
||||
|
||||
```python
|
||||
class GreekMythologyEngine(MythologyEngine):
|
||||
"""
|
||||
An implementation of the MythologyEngine based on Greek mythology.
|
||||
"""
|
||||
def __init__(self):
|
||||
self._actor_map = {
|
||||
'collector': 'The Muses',
|
||||
'refiner': 'Hephaestus',
|
||||
'verifier': 'Apollo',
|
||||
'synthesizer': 'Zeus',
|
||||
}
|
||||
self._process_map = {
|
||||
'multi_agent_debate': 'Symposium',
|
||||
'refinement_process': 'Forging in Aetna',
|
||||
'external_verification': 'Consulting the Oracle of Delphi',
|
||||
'final_decision': 'Judgment from Olympus',
|
||||
}
|
||||
self._narrative = "This system views the market as a pantheon of competing gods and heroes, striving for dominance on Mount Olympus."
|
||||
|
||||
def get_actor_name(self, component: str) -> str:
|
||||
return self._actor_map.get(component, "An Unknown Titan")
|
||||
|
||||
def get_process_metaphor(self, process: str) -> str:
|
||||
return self._process_map.get(process, "A Herculean Task")
|
||||
|
||||
def get_system_narrative(self) -> str:
|
||||
return self._narrative
|
||||
```
|
||||
|
||||
### Step 4: Integrate with the FSM
|
||||
|
||||
Now, you can instantiate your new engine and inject it into the `MarketFSM`. The FSM will work seamlessly with your new narrative layer.
|
||||
|
||||
```python
|
||||
# In your main application file
|
||||
from market_fsm import MarketFSM
|
||||
from greek_mythology import GreekMythologyEngine
|
||||
from cycle_models import TwelveStagesOfLifeCycleModel # We can reuse the old cycle model
|
||||
|
||||
# Instantiate your custom engine
|
||||
greek_engine = GreekMythologyEngine()
|
||||
cycle_model = TwelveStagesOfLifeCycleModel()
|
||||
|
||||
# Inject it into the FSM
|
||||
fsm = MarketFSM(
|
||||
mythology_engine=greek_engine,
|
||||
cycle_model=cycle_model
|
||||
)
|
||||
|
||||
# Run the analysis
|
||||
fsm.run_analysis({"mock_score": 8})
|
||||
# The output will now be framed in the language of Greek mythology!
|
||||
```
|
||||
|
||||
## Part 2: Creating a Custom Cycle Model
|
||||
|
||||
A `CycleModel` is responsible for analyzing market data and determining the current stage of a given cycle. Let's create a simple `MarketSentimentCycleModel` based on four stages: Greed, Fear, Hope, and Despair.
|
||||
|
||||
### Step 1: Create a New Python File
|
||||
|
||||
Create a file named `sentiment_cycle.py`.
|
||||
|
||||
### Step 2: Import the `CycleModel` ABC
|
||||
|
||||
```python
|
||||
# sentiment_cycle.py
|
||||
from cycle_models import CycleModel
|
||||
from typing import Dict, Any, List
|
||||
```
|
||||
|
||||
### Step 3: Implement the `CycleModel` Interface
|
||||
|
||||
Create a new class that inherits from `CycleModel` and implements `get_current_stage`, `get_stage_characteristics`, and `get_all_stages`.
|
||||
|
||||
```python
|
||||
class MarketSentimentCycleModel(CycleModel):
|
||||
"""
|
||||
A cycle model based on the four stages of market sentiment.
|
||||
"""
|
||||
def __init__(self):
|
||||
self._stages = ["Hope", "Greed", "Fear", "Despair"]
|
||||
self._characteristics = {
|
||||
"Hope": {"description": "The market is cautiously optimistic.", "strategy": "Accumulate"},
|
||||
"Greed": {"description": "Euphoria and high expectations dominate.", "strategy": "Take profits"},
|
||||
"Fear": {"description": "Panic and uncertainty are widespread.", "strategy": "Reduce risk"},
|
||||
"Despair": {"description": "Capitulation, the market has given up hope.", "strategy": "Look for bargains"},
|
||||
}
|
||||
|
||||
def get_current_stage(self, data: Dict[str, Any]) -> str:
|
||||
# A real implementation would analyze news sentiment, VIX, etc.
|
||||
# Here, we'll use a mock sentiment score from 0 to 1.
|
||||
sentiment_score = data.get("sentiment", 0.5)
|
||||
if sentiment_score > 0.75:
|
||||
return "Greed"
|
||||
elif sentiment_score > 0.5:
|
||||
return "Hope"
|
||||
elif sentiment_score > 0.25:
|
||||
return "Fear"
|
||||
else:
|
||||
return "Despair"
|
||||
|
||||
def get_stage_characteristics(self, stage: str) -> Dict[str, Any]:
|
||||
return self._characteristics.get(stage, {})
|
||||
|
||||
def get_all_stages(self) -> List[str]:
|
||||
return self._stages
|
||||
```
|
||||
|
||||
### Step 4: Integrate with the FSM
|
||||
|
||||
You can now use your new cycle model in the FSM, even combining it with a different mythology engine.
|
||||
|
||||
```python
|
||||
# In your main application file
|
||||
from market_fsm import MarketFSM
|
||||
from mythology import DaoistMythologyEngine
|
||||
from sentiment_cycle import MarketSentimentCycleModel
|
||||
|
||||
# Instantiate your custom cycle model
|
||||
sentiment_model = MarketSentimentCycleModel()
|
||||
daoist_engine = DaoistMythologyEngine()
|
||||
|
||||
# Inject it into the FSM
|
||||
fsm = MarketFSM(
|
||||
mythology_engine=daoist_engine,
|
||||
cycle_model=sentiment_model
|
||||
)
|
||||
|
||||
# Run the analysis with data your new model understands
|
||||
fsm.run_analysis({"sentiment": 0.2})
|
||||
# The FSM will now report the market is in a state of "Despair".
|
||||
```
|
||||
|
||||
Congratulations! You have successfully extended the "太公心易" system.
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
# 方案:GameFi“盘下特征”量化及FSM状态转移集成
|
||||
|
||||
**制定者:** Gemini
|
||||
**日期:** 2025-08-21
|
||||
**目标:** 将`GAMEFI_SYSTEM_SUMMARY.md`中定义的“交易者心境”和“十二长生”(四季轮回)概念,转化为可量化的数据模型,并将其作为“太公心易”FSM系统状态转移的核心驱动条件。
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心思想
|
||||
|
||||
交易者的心境、经验和偏见是驱动其市场行为的“盘下特征”。通过量化这些特征,我们可以让主FSM的决策更具个性化和前瞻性。当检测到交易者进入特定的心理阶段(如“秋季失道”)或表现出强烈的偏见(如“趋势醉”)时,FSM可以主动进入相应状态(如`Refine`或`Validation`)进行干预和辅助。
|
||||
|
||||
## 2. “盘下特征”量化方案
|
||||
|
||||
我们将构建一个**“交易者状态向量”(Trader State Vector, TSV)**来统一描述交易者的当前心境。该向量由以下三组量化指标构成:
|
||||
|
||||
### 2.1. **伤疤资本 (Scar Capital)** - 经验与教训的量化
|
||||
|
||||
基于`TradingScar`概念,我们将从交易历史中计算以下指标:
|
||||
|
||||
* **总痛苦值 (TotalPain):** 所有`TradingScar`的`pain_level`之和。反映交易者经历的总挫折。
|
||||
* **平均智慧 (AverageWisdom):** 所有`wisdom_gained`的平均值。反映交易者从错误中学习的能力。
|
||||
* **伤疤密度 (ScarDensity):** 单位时间(如每季度)内产生的`TradingScar`数量。高密度可能意味着鲁莽或市场环境恶化。
|
||||
* **恢复能力 (Resilience):** 从重大亏损(高`pain_level`的`Scar`)后,恢复盈利所需的时间。
|
||||
|
||||
### 2.2. **偏见画像 (Bias Profile)** - “醉八仙”的量化
|
||||
|
||||
通过分析交易行为,为每个交易者生成一个包含八种偏见得分(0到1之间)的画像:
|
||||
|
||||
* **趋势醉 (蓝采和):** 在价格接近阶段性高点时买入的频率和资金比例。
|
||||
* **价值醉 (汉钟离):** 在亏损头寸上持续加仓(“补仓”)的行为频率。
|
||||
* **消息醉 (曹国舅):** 在重大新闻或财报发布窗口期内,交易频率显著上升。
|
||||
* **经验醉 (张果老):** 策略的同质性过高,例如只交易特定几只股票或只使用单一指标。
|
||||
* **技术醉 (韩湘子):** 交易行为与特定技术指标(如MACD金叉/死叉)的强相关性。
|
||||
* **保守醉 (何仙姑):** 空仓时间占比过高,或在明显上涨趋势中过早卖出。
|
||||
* **逆向醉 (铁拐李):** 在市场普遍下跌时买入,或在普遍上涨时卖出的频率。
|
||||
* **理性醉 (吕洞宾):** 交易频率极低,可能错失过多机会(机会成本)。
|
||||
|
||||
### 2.3. **修仙阶段 (Journey Stage)** - “猴王四季”的量化
|
||||
|
||||
结合**伤疤资本**和**偏见画像**,我们可以为交易者划分出当前的“修仙”阶段:
|
||||
|
||||
* **春季·觉醒 (Awakening):**
|
||||
* `TotalPain`较低,`ScarDensity`较低。
|
||||
* `AverageWisdom`较高(学习意愿强)。
|
||||
* 偏见画像尚未固化。
|
||||
* **夏季·得道 (Attainment):**
|
||||
* 交易胜率高,账户稳定增长。
|
||||
* `AverageWisdom`可能开始下降(过度自信)。
|
||||
* 某几种偏见得分开始显著升高。
|
||||
* **秋季·失道 (Loss):**
|
||||
* 出现一次或多次高`pain_level`的`Scar`。
|
||||
* `TotalPain`急剧上升,`Resilience`指标被考验。
|
||||
* 高偏见得分与重大亏损有强相关性。
|
||||
* **冬季·悟道 (Enlightenment):**
|
||||
* `Resilience`高,能够从亏损中快速恢复。
|
||||
* 整体偏见画像得分较低且均衡。
|
||||
* `AverageWisdom`稳定在较高水平。
|
||||
|
||||
## 3. FSM状态转移集成方案
|
||||
|
||||
“交易者状态向量”(TSV)将被整合到“太公心易”FSM的上下文中,作为状态转移的核心判断依据。
|
||||
|
||||
### 3.1. 触发条件示例
|
||||
|
||||
FSM不再仅仅响应外部市场事件,更会主动响应交易者的内在状态变化。
|
||||
|
||||
* **进入`Refine`状态(太上老君整理):**
|
||||
* **触发器:** 检测到交易者进入“秋季·失道”阶段。
|
||||
* **条件:** `IF trader.stage == 'Loss' AND trader.bias_profile['TrendChasing'] > 0.8`
|
||||
* **目的:** 交易者因强烈的趋势偏见而遭受重创,FSM需要启动`Refine`流程,帮助其“祛魅”并重构策略。
|
||||
|
||||
* **进入`Validation`状态(内部验证/祛魅):**
|
||||
* **触发器:** 交易者处于“夏季·得道”阶段,表现出过度自信。
|
||||
* **条件:** `IF trader.stage == 'Attainment' AND trader.AverageWisdom < threshold`
|
||||
* **目的:** 在交易者最容易忽视风险时,FSM主动进入`Validation`状态,对其当前的策略进行压力测试和一致性检查。
|
||||
|
||||
* **进入`ExternalFetch`状态(灵宝道君核查):**
|
||||
* **触发器:** “消息醉”交易者准备进行一笔交易。
|
||||
* **条件:** `IF trader.bias_profile['NewsTrading'] > 0.7 AND event == 'pre_trade_check'`
|
||||
* **目的:** 在该交易者依据消息行动前,FSM强制启动`ExternalFetch`,从多个独立信源交叉验证该消息的可靠性。
|
||||
|
||||
### 3.2. 状态转移逻辑 (伪代码)
|
||||
|
||||
```python
|
||||
class EnhancedTaigongFSM:
|
||||
def __init__(self, trader_state_vector):
|
||||
self.tsv = trader_state_vector
|
||||
# ... other FSM initializations
|
||||
|
||||
def determine_next_state(self, market_event):
|
||||
# 优先处理由交易者内在状态触发的转移
|
||||
if self.tsv.stage == 'Loss':
|
||||
# 如果交易者遭受重创,无论市场如何,优先帮助其反思
|
||||
return FSMState.REFINE
|
||||
|
||||
if self.tsv.is_overconfident():
|
||||
# 如果交易者过度自信,主动进行风险检查
|
||||
return FSMState.VALIDATION
|
||||
|
||||
# ... 再处理由外部市场事件触发的转移
|
||||
if market_event == 'HighVolatility':
|
||||
return FSMState.COLLECTING
|
||||
|
||||
return self.current_state
|
||||
```
|
||||
|
||||
## 4. 实施步骤
|
||||
|
||||
1. **数据建模:** 在代码中定义`TradingScar`, `BiasProfile`, 和 `TraderStateVector`的类结构。
|
||||
2. **分析模块开发:** 创建一个分析器,能够接收交易历史数据,并计算出完整的TSV。
|
||||
3. **FSM上下文集成:** 将TSV对象添加到`TaigongXinyiFSM`的上下文中。
|
||||
4. **规则引擎实现:** 在FSM的`transition`逻辑中,实现基于TSV的动态状态转移规则。
|
||||
5. **模拟与回测:** 构建一个模拟环境,使用历史交易数据回测该集成系统的有效性,验证其是否能在关键时刻做出正确的状态转移。
|
||||
|
|
@ -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月*
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
# n8n RSS去重工作流配置
|
||||
|
||||
## 问题解决方案
|
||||
|
||||
你的原始代码每次执行都会生成新的`article_id`,导致相同文章被重复插入。现在通过以下方案彻底解决:
|
||||
|
||||
### 1. 稳定ID生成策略
|
||||
|
||||
使用**内容哈希**而非时间戳生成稳定的文章ID:
|
||||
|
||||
```javascript
|
||||
// 基于标题+发布时间+内容片段生成稳定ID
|
||||
function generateStableId(title, pubDate, content) {
|
||||
const normalizedTitle = title.trim().toLowerCase();
|
||||
const contentHash = content ? content.substring(0, 100) : '';
|
||||
const dateStr = pubDate || '';
|
||||
|
||||
const combined = normalizedTitle + '|' + dateStr + '|' + contentHash;
|
||||
|
||||
let hash = 0;
|
||||
for (let i = 0; i < combined.length; i++) {
|
||||
const char = combined.charCodeAt(i);
|
||||
hash = ((hash << 5) - hash) + char;
|
||||
hash = hash & hash;
|
||||
}
|
||||
return Math.abs(hash).toString(16);
|
||||
}
|
||||
```
|
||||
|
||||
### 2. n8n节点配置
|
||||
|
||||
#### 节点1: RSS Feed Reader
|
||||
- 配置多个RSS源
|
||||
- 设置合理的抓取频率(建议30分钟-1小时)
|
||||
|
||||
#### 节点2: 数据预处理 (Code节点)
|
||||
```javascript
|
||||
// 使用 scripts/n8n_deduplication_fix.js 中的代码
|
||||
// 主要功能:
|
||||
// 1. 生成稳定的article_id
|
||||
// 2. 查询数据库已存在文章
|
||||
// 3. 过滤重复内容
|
||||
// 4. 添加content_hash字段
|
||||
```
|
||||
|
||||
#### 节点3: MongoDB插入 (Code节点)
|
||||
```javascript
|
||||
// 使用 scripts/n8n_safe_insert.js 中的代码
|
||||
// 使用upsert操作避免重复插入
|
||||
```
|
||||
|
||||
### 3. 数据库索引优化
|
||||
|
||||
已创建的索引:
|
||||
- `article_id_unique`: 基于article_id的唯一索引
|
||||
- `title_unique`: 基于title的索引
|
||||
- `content_hash_index`: 基于content_hash的索引
|
||||
|
||||
### 4. 新增字段说明
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| `article_id` | String | 基于内容生成的稳定ID,确保唯一性 |
|
||||
| `content_hash` | String | 内容哈希,用于检测内容变化 |
|
||||
| `source_url` | String | 原文链接 |
|
||||
| `last_updated` | String | 最后更新时间 |
|
||||
|
||||
### 5. 工作流执行效果
|
||||
|
||||
- **去重前**: 160篇文章(包含80篇重复)
|
||||
- **去重后**: 80篇唯一文章
|
||||
- **重复检测**: 支持标题和内容双重检测
|
||||
- **稳定性**: 多次执行不会产生重复数据
|
||||
|
||||
### 6. 监控和维护
|
||||
|
||||
#### 定期检查重复数据
|
||||
```bash
|
||||
python scripts/cleanup_duplicates.py
|
||||
```
|
||||
|
||||
#### 查看去重统计
|
||||
```javascript
|
||||
// 在n8n中添加统计节点
|
||||
db.articles.aggregate([
|
||||
{$group: {_id: "$title", count: {$sum: 1}}},
|
||||
{$match: {count: {$gt: 1}}},
|
||||
{$count: "duplicates"}
|
||||
])
|
||||
```
|
||||
|
||||
### 7. 最佳实践
|
||||
|
||||
1. **定期清理**: 每周运行一次清理脚本
|
||||
2. **监控日志**: 关注n8n执行日志中的去重信息
|
||||
3. **索引维护**: 定期检查索引性能
|
||||
4. **备份策略**: 在大量数据操作前备份数据库
|
||||
|
||||
### 8. 故障排除
|
||||
|
||||
#### 如果仍有重复数据
|
||||
1. 检查RSS源是否返回相同内容但不同时间戳
|
||||
2. 验证哈希函数是否正确处理特殊字符
|
||||
3. 确认MongoDB连接配置正确
|
||||
|
||||
#### 性能优化
|
||||
1. 调整RSS抓取频率
|
||||
2. 使用批量插入而非单条插入
|
||||
3. 定期清理过期数据
|
||||
|
||||
现在你的n8n工作流可以安全地多次执行,不会产生重复数据!
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
# celestial_map.py
|
||||
|
||||
import networkx as nx
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
class CelestialMap:
|
||||
"""
|
||||
基于“差序格局”思想,构建一个描绘产业链上下游“引力关系”的图模型。
|
||||
|
||||
“差序格局”是中国社会学家费孝通提出的概念,指社会关系像水波纹一样,
|
||||
由自己这个中心推出去,一层层地变淡。
|
||||
|
||||
在这个模型中:
|
||||
- 恒星 (Star): 代表产业链的核心或最上游的公司/板块,是引力中心。
|
||||
- 行星 (Planet): 代表与核心紧密相关的公司/板块,围绕恒星运转。
|
||||
- 卫星 (Satellite): 代表更下游或关联度更弱的公司/板块,围绕行星运转。
|
||||
|
||||
引力 (Gravity): 代表实体间的影响力或情绪传导强度,距离越远,引力越弱。
|
||||
"""
|
||||
def __init__(self):
|
||||
self.graph = nx.DiGraph()
|
||||
|
||||
def add_entity(self, name, entity_type, **kwargs):
|
||||
"""
|
||||
添加一个天体实体。
|
||||
|
||||
:param name: 实体名称 (e.g., 'NVIDIA')
|
||||
:param entity_type: 实体类型 ('star', 'planet', 'satellite')
|
||||
:param kwargs: 其他属性 (e.g., market_cap, sector)
|
||||
"""
|
||||
self.graph.add_node(name, entity_type=entity_type, **kwargs)
|
||||
|
||||
def establish_influence(self, source, target, gravity_strength=1.0, relationship_type='supply_chain'):
|
||||
"""
|
||||
在两个实体间建立影响关系(引力)。
|
||||
|
||||
差序格局的体现:引力强度(gravity_strength)默认为1.0,
|
||||
当从恒星 -> 行星 -> 卫星传递时,可以通过计算路径权重来体现引力的衰减。
|
||||
|
||||
:param source: 施加影响的实体名称
|
||||
:param target: 受到影响的实体名称
|
||||
:param gravity_strength: 基础引力强度 (1.0 / 距离)
|
||||
:param relationship_type: 关系类型 (e.g., 'supply_chain', 'competitor', 'capital')
|
||||
"""
|
||||
if source not in self.graph:
|
||||
raise ValueError(f"Source entity '{source}' not found in the map.")
|
||||
if target not in self.graph:
|
||||
raise ValueError(f"Target entity '{target}' not found in the map.")
|
||||
|
||||
# 使用 1/gravity_strength 作为边的权重,模拟距离
|
||||
# 强引力 = 低权重 = 短距离
|
||||
distance = 1.0 / gravity_strength
|
||||
self.graph.add_edge(source, target, weight=distance, relationship=relationship_type)
|
||||
|
||||
def get_influence_path(self, start_node, end_node):
|
||||
"""
|
||||
计算两个实体间的最短(最强)影响路径。
|
||||
|
||||
:param start_node: 路径起点
|
||||
:param end_node: 路径终点
|
||||
:return: 路径节点列表和总路径长度(总距离)
|
||||
"""
|
||||
try:
|
||||
path = nx.shortest_path(self.graph, source=start_node, target=end_node, weight='weight')
|
||||
length = nx.shortest_path_length(self.graph, source=start_node, target=end_node, weight='weight')
|
||||
return path, length
|
||||
except nx.NetworkXNoPath:
|
||||
return None, float('inf')
|
||||
|
||||
def get_downstream_entities(self, start_node, max_depth=None):
|
||||
"""
|
||||
获取一个实体的所有下游受影响实体。
|
||||
|
||||
:param start_node: 起点实体
|
||||
:param max_depth: 搜索的最大深度(层级)
|
||||
:return: 下游实体列表
|
||||
"""
|
||||
if start_node not in self.graph:
|
||||
return []
|
||||
return list(nx.dfs_preorder_nodes(self.graph, source=start_node, depth_limit=max_depth))
|
||||
|
||||
def visualize(self, layout='spring'):
|
||||
"""
|
||||
将星图可视化。
|
||||
"""
|
||||
pos = None
|
||||
if layout == 'spring':
|
||||
pos = nx.spring_layout(self.graph, k=0.9)
|
||||
elif layout == 'kamada_kawai':
|
||||
pos = nx.kamada_kawai_layout(self.graph)
|
||||
elif layout == 'circular':
|
||||
pos = nx.circular_layout(self.graph)
|
||||
else:
|
||||
pos = nx.spring_layout(self.graph)
|
||||
|
||||
|
||||
node_colors = []
|
||||
for node in self.graph.nodes(data=True):
|
||||
if node[1]['entity_type'] == 'star':
|
||||
node_colors.append('yellow')
|
||||
elif node[1]['entity_type'] == 'planet':
|
||||
node_colors.append('skyblue')
|
||||
elif node[1]['entity_type'] == 'satellite':
|
||||
node_colors.append('lightgreen')
|
||||
else:
|
||||
node_colors.append('gray')
|
||||
|
||||
edge_labels = nx.get_edge_attributes(self.graph, 'relationship')
|
||||
|
||||
plt.figure(figsize=(14, 10))
|
||||
nx.draw(self.graph, pos, with_labels=True, node_size=3000, node_color=node_colors, font_size=10, font_weight='bold', arrowsize=20)
|
||||
nx.draw_networkx_edge_labels(self.graph, pos, edge_labels=edge_labels, font_color='red')
|
||||
plt.title("Celestial Map of Industry Influence (差序格局)")
|
||||
plt.show()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# --- 示例:构建一个AI芯片产业链的“差序格局”图 ---
|
||||
|
||||
# 1. 初始化星图
|
||||
industry_map = CelestialMap()
|
||||
|
||||
# 2. 添加实体 (恒星、行星、卫星)
|
||||
industry_map.add_entity('NVIDIA', 'star', sector='Semiconductors')
|
||||
industry_map.add_entity('TSMC', 'planet', sector='Manufacturing')
|
||||
industry_map.add_entity('ASML', 'planet', sector='Equipment')
|
||||
industry_map.add_entity('Supermicro', 'planet', sector='Servers')
|
||||
industry_map.add_entity('Apple', 'satellite', sector='Consumer Electronics')
|
||||
industry_map.add_entity('Tesla', 'satellite', sector='Automotive')
|
||||
industry_map.add_entity('OpenAI', 'satellite', sector='AI Research')
|
||||
|
||||
# 3. 建立影响关系 (引力)
|
||||
# 恒星 -> 行星 (强引力)
|
||||
industry_map.establish_influence('NVIDIA', 'TSMC', gravity_strength=0.9, relationship_type='chip_design')
|
||||
industry_map.establish_influence('NVIDIA', 'Supermicro', gravity_strength=0.8, relationship_type='hardware_demand')
|
||||
industry_map.establish_influence('ASML', 'TSMC', gravity_strength=0.9, relationship_type='euv_machines')
|
||||
|
||||
# 行星 -> 卫星 (中等引力)
|
||||
industry_map.establish_influence('TSMC', 'Apple', gravity_strength=0.7, relationship_type='chip_supply')
|
||||
industry_map.establish_influence('Supermicro', 'OpenAI', gravity_strength=0.6, relationship_type='server_supply')
|
||||
industry_map.establish_influence('NVIDIA', 'Tesla', gravity_strength=0.5, relationship_type='ai_chip_supply') # 直接影响
|
||||
|
||||
# 4. 分析与查询
|
||||
print("--- 情绪传导路径分析 ---")
|
||||
path, total_distance = industry_map.get_influence_path('ASML', 'Apple')
|
||||
if path:
|
||||
print(f"从 'ASML' 到 'Apple' 的最强影响路径: {' -> '.join(path)}")
|
||||
# 总距离越大,代表关系越疏远,影响力衰减越多
|
||||
print(f"总影响距离 (1/gravity): {total_distance:.2f}")
|
||||
|
||||
path, total_distance = industry_map.get_influence_path('NVIDIA', 'OpenAI')
|
||||
if path:
|
||||
print(f"从 'NVIDIA' 到 'OpenAI' 的最强影响路径: {' -> '.join(path)}")
|
||||
print(f"总影响距离 (1/gravity): {total_distance:.2f}")
|
||||
|
||||
|
||||
print("\n--- 下游影响范围查询 ---")
|
||||
downstream = industry_map.get_downstream_entities('NVIDIA', max_depth=2)
|
||||
print(f"'NVIDIA' 在两层关系内的所有下游影响实体: {downstream}")
|
||||
|
||||
# 5. 可视化
|
||||
industry_map.visualize(layout='kamada_kawai')
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
# cycle_models.py
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Dict, Any, List
|
||||
|
||||
class CycleModel(ABC):
|
||||
"""
|
||||
周期模型抽象基类 (Abstract Base Class)。
|
||||
|
||||
定义了所有市场周期、板块轮动或生命周期模型的统一接口。
|
||||
确保上层应用(如FSM)可以调用周期分析功能,而无需关心其具体实现
|
||||
(例如,是十二长生、二十四节气还是美林投资时钟)。
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def get_current_stage(self, data: Dict[str, Any]) -> str:
|
||||
"""
|
||||
根据输入数据,判断当前处于哪个周期阶段。
|
||||
:param data: 包含用于分析的数据的字典 (e.g., economic indicators, price momentum).
|
||||
:return: 当前周期阶段的名称。
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_stage_characteristics(self, stage: str) -> Dict[str, Any]:
|
||||
"""
|
||||
获取特定阶段的特征描述或建议策略。
|
||||
:param stage: 阶段名称。
|
||||
:return: 包含该阶段特征描述的字典。
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_all_stages(self) -> List[str]:
|
||||
"""
|
||||
返回模型中所有阶段的有序列表。
|
||||
:return: 包含所有阶段名称的列表。
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class TwelveStagesOfLifeCycleModel(CycleModel):
|
||||
"""
|
||||
十二长生周期模型的具体实现。
|
||||
|
||||
该模型将事物的生命周期分为十二个阶段,用于描述板块轮动或个股的生命周期。
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._stages = [
|
||||
"长生", "沐浴", "冠带", "临官", "帝旺",
|
||||
"衰", "病", "死", "墓", "绝", "胎", "养"
|
||||
]
|
||||
self._characteristics = {
|
||||
"长生": {"description": "新生,事物初生,潜力巨大。", "strategy": "关注,少量试探"},
|
||||
"沐浴": {"description": "萌芽,成长初期,易受挫折。", "strategy": "谨慎观察,识别风险"},
|
||||
"冠带": {"description": "成型,初步获得社会承认。", "strategy": "逐步建仓"},
|
||||
"临官": {"description": "高速增长,事业有成。", "strategy": "持有并加仓"},
|
||||
"帝旺": {"description": "顶峰,达到全盛时期。", "strategy": "警惕风险,考虑减仓"},
|
||||
"衰": {"description": "衰退,开始走下坡路。", "strategy": "逐步卖出"},
|
||||
"病": {"description": "问题暴露,盈利能力减弱。", "strategy": "清仓"},
|
||||
"死": {"description": "明显下滑,失去活力。", "strategy": "避免接触"},
|
||||
"墓": {"description": "估值塌陷,被市场遗忘。", "strategy": "观望,等待转机"},
|
||||
"绝": {"description": "市场失忆,完全被忽视。", "strategy": "观望"},
|
||||
"胎": {"description": "潜伏,新一轮周期的孕育。", "strategy": "研究,寻找新催化剂"},
|
||||
"养": {"description": "建仓期,主力资金开始布局。", "strategy": "少量布局,等待信号"}
|
||||
}
|
||||
|
||||
def get_current_stage(self, data: Dict[str, Any]) -> str:
|
||||
"""
|
||||
模拟根据市场数据判断当前所处的“十二长生”阶段。
|
||||
在真实实现中,这里会是一个复杂的量化模型。
|
||||
"""
|
||||
# 模拟逻辑:简单地根据一个随机分数来确定阶段
|
||||
# score 范围 0-11
|
||||
mock_score = data.get("mock_score", 0)
|
||||
stage_index = int(mock_score) % len(self._stages)
|
||||
return self._stages[stage_index]
|
||||
|
||||
def get_stage_characteristics(self, stage: str) -> Dict[str, Any]:
|
||||
"""
|
||||
获取指定“十二长生”阶段的特征和策略建议。
|
||||
"""
|
||||
return self._characteristics.get(stage, {"description": "未知阶段", "strategy": "无"})
|
||||
|
||||
def get_all_stages(self) -> List[str]:
|
||||
"""
|
||||
返回所有十二长生阶段。
|
||||
"""
|
||||
return self._stages
|
||||
|
||||
# --- 示例:如何使用解耦的周期模型 ---
|
||||
if __name__ == '__main__':
|
||||
import random
|
||||
|
||||
# 上层应用(如FSM)依赖于抽象的 CycleModel
|
||||
def analyze_market_cycle(model: CycleModel, market_data: Dict[str, Any]):
|
||||
current_stage = model.get_current_stage(market_data)
|
||||
characteristics = model.get_stage_characteristics(current_stage)
|
||||
|
||||
print(f"当前市场周期分析 (模型: {model.__class__.__name__}):")
|
||||
print(f" - 所处阶段: 【{current_stage}】")
|
||||
print(f" - 阶段描述: {characteristics['description']}")
|
||||
print(f" - 建议策略: {characteristics['strategy']}")
|
||||
|
||||
# 运行时,传入一个具体的周期模型实例
|
||||
twelve_stages_model = TwelveStagesOfLifeCycleModel()
|
||||
|
||||
# 模拟不同的市场数据
|
||||
for i in range(3):
|
||||
# 在真实场景中,这里会是真实的经济或市场数据
|
||||
simulated_market_data = {"mock_score": random.randint(0, 11)}
|
||||
analyze_market_cycle(twelve_stages_model, simulated_market_data)
|
||||
print("-" * 50)
|
||||
|
||||
# 如果未来要添加“美林投资时钟”模型,只需实现一个新的类,
|
||||
# 上层应用 analyze_market_cycle 的代码完全不需要修改。
|
||||
# class MerrillClockModel(CycleModel):
|
||||
# ...
|
||||
# merrill_model = MerrillClockModel()
|
||||
# analyze_market_cycle(merrill_model, real_economic_data)
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
# market_fsm.py
|
||||
|
||||
from typing import Dict, Any
|
||||
from mythology import MythologyEngine, DaoistMythologyEngine
|
||||
from cycle_models import CycleModel, TwelveStagesOfLifeCycleModel
|
||||
|
||||
class MarketFSM:
|
||||
"""
|
||||
一个简化的市场分析有限状态机 (FSM)。
|
||||
|
||||
本 FSM 演示了如何通过抽象基类来调用外部的“神话引擎”和“周期模型”,
|
||||
从而实现了核心逻辑与具体实现(如道家神话、十二长生模型)的解耦。
|
||||
"""
|
||||
|
||||
def __init__(self, mythology_engine: MythologyEngine, cycle_model: CycleModel):
|
||||
"""
|
||||
FSM 在初始化时,注入所需引擎的抽象实例。
|
||||
它不关心传入的是哪个具体的神话引擎或周期模型。
|
||||
"""
|
||||
if not isinstance(mythology_engine, MythologyEngine):
|
||||
raise TypeError("mythology_engine must be a subclass of MythologyEngine")
|
||||
if not isinstance(cycle_model, CycleModel):
|
||||
raise TypeError("cycle_model must be a subclass of CycleModel")
|
||||
|
||||
self.mythology_engine = mythology_engine
|
||||
self.cycle_model = cycle_model
|
||||
self.current_state = "Idle"
|
||||
self.context: Dict[str, Any] = {}
|
||||
|
||||
print(f"--- FSM 已启动 ---")
|
||||
print(f"世界观: {self.mythology_engine.get_system_narrative()}")
|
||||
print(f"周期模型: {self.cycle_model.__class__.__name__}")
|
||||
print("-" * 50)
|
||||
|
||||
|
||||
def run_analysis(self, market_data: Dict[str, Any]):
|
||||
"""
|
||||
执行一次完整的市场分析流程。
|
||||
"""
|
||||
print(f"\n【状态: {self.current_state}】-> [开始分析] -> 【状态: Collecting】")
|
||||
self.current_state = "Collecting"
|
||||
self._collect_data(market_data)
|
||||
|
||||
print(f"\n【状态: {self.current_state}】-> [分析周期] -> 【状态: CycleAnalysis】")
|
||||
self.current_state = "CycleAnalysis"
|
||||
self._analyze_cycle()
|
||||
|
||||
print(f"\n【状态: {self.current_state}】-> [生成报告] -> 【状态: Reporting】")
|
||||
self.current_state = "Reporting"
|
||||
self._generate_report()
|
||||
|
||||
print(f"\n【状态: {self.current_state}】-> [完成] -> 【状态: Idle】")
|
||||
self.current_state = "Idle"
|
||||
print("\n--- 分析流程结束 ---")
|
||||
|
||||
def _collect_data(self, market_data: Dict[str, Any]):
|
||||
"""
|
||||
模拟数据收集阶段。
|
||||
"""
|
||||
actor = self.mythology_engine.get_actor_name('collector')
|
||||
metaphor = self.mythology_engine.get_process_metaphor('multi_agent_debate')
|
||||
print(f"执行者: [{actor}]")
|
||||
print(f"动作: [{metaphor}]")
|
||||
self.context['market_data'] = market_data
|
||||
print("数据收集完成。")
|
||||
|
||||
def _analyze_cycle(self):
|
||||
"""
|
||||
分析市场周期阶段。
|
||||
"""
|
||||
current_stage = self.cycle_model.get_current_stage(self.context['market_data'])
|
||||
self.context['cycle_stage'] = current_stage
|
||||
print(f"周期模型分析完成,当前阶段为: 【{current_stage}】")
|
||||
|
||||
def _generate_report(self):
|
||||
"""
|
||||
生成最终报告。
|
||||
"""
|
||||
actor = self.mythology_engine.get_actor_name('synthesizer')
|
||||
metaphor = self.mythology_engine.get_process_metaphor('final_decision')
|
||||
stage = self.context['cycle_stage']
|
||||
characteristics = self.cycle_model.get_stage_characteristics(stage)
|
||||
|
||||
print(f"执行者: [{actor}]")
|
||||
print(f"动作: [{metaphor}]")
|
||||
print("\n--- 最终分析报告 ---")
|
||||
print(f"市场周期阶段: {stage}")
|
||||
print(f"阶段特征: {characteristics.get('description', 'N/A')}")
|
||||
print(f"建议策略: {characteristics.get('strategy', 'N/A')}")
|
||||
print("--- 报告结束 ---")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 1. 在系统启动时,选择并实例化具体的引擎和模型
|
||||
daoist_mythology = DaoistMythologyEngine()
|
||||
twelve_stages_cycle = TwelveStagesOfLifeCycleModel()
|
||||
|
||||
# 2. 将实例注入到 FSM 中
|
||||
# FSM 只依赖于抽象,不关心具体实现
|
||||
fsm = MarketFSM(
|
||||
mythology_engine=daoist_mythology,
|
||||
cycle_model=twelve_stages_cycle
|
||||
)
|
||||
|
||||
# 3. 运行 FSM
|
||||
# 模拟的市场数据
|
||||
simulated_data = {"mock_score": 4} # 模拟处于“帝旺”阶段
|
||||
fsm.run_analysis(simulated_data)
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
# monster_stock_scanner.py
|
||||
|
||||
import random
|
||||
from typing import List, Dict, Any
|
||||
|
||||
class Dragon:
|
||||
"""
|
||||
龙生九子,子子不同。
|
||||
定义所有龙子的基础接口。
|
||||
"""
|
||||
def __init__(self, name: str, description: str):
|
||||
self.name = name
|
||||
self.description = description
|
||||
|
||||
def analyze(self, context: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""
|
||||
每条龙子根据自身的神通,对市场进行分析。
|
||||
:param context: 包含分析所需信息的字典。
|
||||
:return: 包含分析结果的字典。
|
||||
"""
|
||||
raise NotImplementedError("每个龙子都必须实现自己的 analyze 方法。")
|
||||
|
||||
class Bixi(Dragon):
|
||||
"""
|
||||
赑屃 (Bìxì),龙之长子,好负重,为“天时”。
|
||||
负责识别宏观层面的结构性压力。
|
||||
"""
|
||||
def __init__(self):
|
||||
super().__init__("赑屃", "识别宏观结构性压力")
|
||||
|
||||
def analyze(self, context: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""
|
||||
模拟分析宏观经济指标,以判断是否存在结构性压力。
|
||||
在真实实现中,这里会调用经济数据API(如FRED, World Bank)。
|
||||
"""
|
||||
print(f"【天时 - {self.name}】正在分析宏观经济大盘...")
|
||||
|
||||
# 模拟宏观指标
|
||||
mock_interest_rate = random.uniform(0.01, 0.05)
|
||||
mock_inflation_rate = random.uniform(0.01, 0.03)
|
||||
mock_gdp_growth = random.uniform(-0.01, 0.02)
|
||||
|
||||
# 规则:当利率和通胀较高,且GDP增长乏力时,认为存在结构性压力。
|
||||
pressure_score = (mock_interest_rate + mock_inflation_rate) - mock_gdp_growth
|
||||
|
||||
is_pressure = pressure_score > 0.05
|
||||
|
||||
print(f"分析完成:利率={mock_interest_rate:.2%}, 通胀={mock_inflation_rate:.2%}, GDP增长={mock_gdp_growth:.2%}")
|
||||
print(f"宏观压力分数: {pressure_score:.3f}. {'存在结构性压力' if is_pressure else '宏观环境稳定'}")
|
||||
|
||||
return {
|
||||
"has_structural_pressure": is_pressure,
|
||||
"macro_pressure_score": pressure_score
|
||||
}
|
||||
|
||||
class Fuxi(Dragon):
|
||||
"""
|
||||
负屃 (Fùxì),龙之八子,好斯文,为“地利”。
|
||||
负责计算个股受到的多主题挤压分数。
|
||||
"""
|
||||
def __init__(self):
|
||||
super().__init__("负屃", "计算个股的多主题挤压分数")
|
||||
|
||||
def analyze(self, context: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""
|
||||
模拟分析个股,判断其是否受到多个热门主题的共同驱动。
|
||||
在真实实现中,这里会使用NLP分析新闻、研报,并结合知识图谱。
|
||||
"""
|
||||
stock_symbol = context.get("stock_symbol")
|
||||
if not stock_symbol:
|
||||
raise ValueError("需要提供股票代码 (stock_symbol) 进行分析。")
|
||||
|
||||
print(f"\n【地利 - {self.name}】正在分析个股 '{stock_symbol}' 的主题挤压...")
|
||||
|
||||
# 模拟热门主题
|
||||
hot_themes = ["AI芯片", "新能源汽车", "量子计算", "生物医药", "数字孪生"]
|
||||
|
||||
# 模拟个股关联的主题
|
||||
stock_related_themes = random.sample(hot_themes, random.randint(1, 3))
|
||||
|
||||
# 规则:关联的主题越多,挤压分数越高。
|
||||
squeeze_score = len(stock_related_themes) / len(hot_themes)
|
||||
|
||||
print(f"分析完成:'{stock_symbol}' 关联的主题: {stock_related_themes}")
|
||||
print(f"多主题挤压分数: {squeeze_score:.2f}")
|
||||
|
||||
return {
|
||||
"related_themes": stock_related_themes,
|
||||
"theme_squeeze_score": squeeze_score
|
||||
}
|
||||
|
||||
def monster_stock_scanner(stock_symbol: str):
|
||||
"""
|
||||
“妖股扫描器” - 双龙合璧策略。
|
||||
|
||||
结合“天时”(宏观压力)与“地利”(个股主题),寻找潜在的“妖股”。
|
||||
“妖股”的定义:在宏观承压的环境下,依然受到多个强大主题驱动的个股。
|
||||
这种股票可能因为其强大的叙事性而走出独立行情。
|
||||
"""
|
||||
print(f"--- 启动妖股扫描器,目标: {stock_symbol} ---")
|
||||
|
||||
# 初始化龙子
|
||||
bixi = Bixi()
|
||||
fuxi = Fuxi()
|
||||
|
||||
# 1. 分析天时
|
||||
macro_context = {}
|
||||
macro_analysis = bixi.analyze(macro_context)
|
||||
|
||||
# 2. 分析地利
|
||||
stock_context = {"stock_symbol": stock_symbol}
|
||||
stock_analysis = fuxi.analyze(stock_context)
|
||||
|
||||
# 3. 监听“人和”(催化剂)- 此处简化
|
||||
# 在真实系统中,嘲风(Chaofeng)会监听实时新闻、社交媒体等。
|
||||
has_catalyst = random.choice([True, False])
|
||||
print(f"\n【人和 - 嘲风】监听中... {'发现关键催化剂!' if has_catalyst else '未发现明显催化剂。'}")
|
||||
|
||||
# 4. 综合决策
|
||||
is_monster_stock = (
|
||||
macro_analysis["has_structural_pressure"] and
|
||||
stock_analysis["theme_squeeze_score"] >= 0.5 and
|
||||
has_catalyst
|
||||
)
|
||||
|
||||
print("\n--- 扫描结论 ---")
|
||||
if is_monster_stock:
|
||||
print(f"✅ 结论: '{stock_symbol}' 具备妖股潜力!")
|
||||
print(" - 天时: 宏观环境承压,资金寻求确定性。")
|
||||
print(f" - 地利: 受到 {len(stock_analysis['related_themes'])} 个热门主题的强力驱动。")
|
||||
print(" - 人和: 出现关键催化剂。")
|
||||
else:
|
||||
print(f"❌ 结论: '{stock_symbol}' 当前不符合妖股特征。")
|
||||
if not macro_analysis["has_structural_pressure"]:
|
||||
print(" - 原因: 宏观环境稳定,市场风险偏好较高,难以形成抱团。")
|
||||
if stock_analysis["theme_squeeze_score"] < 0.5:
|
||||
print(" - 原因: 个股主题驱动力不足,缺乏想象空间。")
|
||||
if not has_catalyst:
|
||||
print(" - 原因: 缺少引爆市场的催化剂。")
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 扫描一个示例股票
|
||||
monster_stock_scanner("TSLA")
|
||||
print("\n" + "="*50 + "\n")
|
||||
monster_stock_scanner("GOOGL")
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
# mythology.py
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Dict, Any
|
||||
|
||||
class MythologyEngine(ABC):
|
||||
"""
|
||||
神话引擎抽象基类 (Abstract Base Class)。
|
||||
|
||||
定义了所有神话体系映射的统一接口,确保上层应用(如FSM)
|
||||
可以无差别地调用,实现核心逻辑与文化叙事的解耦。
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def get_actor_name(self, component: str) -> str:
|
||||
"""
|
||||
根据技术组件名称,获取其在神话体系中对应的角色名称。
|
||||
:param component: 技术组件的标识符 (e.g., 'refiner', 'verifier').
|
||||
:return: 神话角色的名称 (e.g., '太上老君', '灵宝道君').
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_process_metaphor(self, process: str) -> str:
|
||||
"""
|
||||
根据技术流程名称,获取其在神话体系中的隐喻。
|
||||
:param process: 技术流程的标识符 (e.g., 'external_fetch').
|
||||
:return: 神话流程的隐喻 (e.g., '撒豆成兵').
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_system_narrative(self) -> str:
|
||||
"""
|
||||
获取整个系统的世界观或宏大叙事。
|
||||
:return: 描述系统哲学的字符串。
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class DaoistMythologyEngine(MythologyEngine):
|
||||
"""
|
||||
道家“封神”神话引擎的具体实现。
|
||||
|
||||
将“太公心易”系统的组件和流程映射到道家和封神演义的神话体系中。
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._actor_map: Dict[str, str] = {
|
||||
# FSM States / Core Components
|
||||
'collector': '聚仙楼',
|
||||
'divergence_handler': '白虎观会议',
|
||||
'refiner': '太上老君',
|
||||
'verifier': '灵宝道君',
|
||||
'synthesizer': '元始天尊',
|
||||
'actuator': '打神鞭',
|
||||
# Agent Roles
|
||||
'macro_analyst': '铁拐李',
|
||||
'strategist': '汉钟离',
|
||||
'sentiment_analyst': '张果老',
|
||||
'compliance_checker': '曹国舅',
|
||||
}
|
||||
self._process_map: Dict[str, str] = {
|
||||
'multi_agent_debate': '八仙论道',
|
||||
'refinement_process': '兜率宫炼丹',
|
||||
'external_verification': '撒豆成兵',
|
||||
'final_decision': '元始决断',
|
||||
'async_webhook_call': '元神出窍',
|
||||
}
|
||||
self._narrative = "本系统是一个道法自然、洞察万象的AI智能决策生态,名为“太公心易”。"
|
||||
|
||||
def get_actor_name(self, component: str) -> str:
|
||||
"""
|
||||
获取道家神话体系中的角色名称。
|
||||
"""
|
||||
return self._actor_map.get(component, "未知神祇")
|
||||
|
||||
def get_process_metaphor(self, process: str) -> str:
|
||||
"""
|
||||
获取道家神话体系中的流程隐喻。
|
||||
"""
|
||||
return self._process_map.get(process, "混沌演化")
|
||||
|
||||
def get_system_narrative(self) -> str:
|
||||
"""
|
||||
返回“太公心易”系统的宏大叙事。
|
||||
"""
|
||||
return self._narrative
|
||||
|
||||
# --- 示例:如何使用解耦的引擎 ---
|
||||
if __name__ == '__main__':
|
||||
# 上层应用可以声明它需要一个 MythologyEngine,而无需关心具体实现
|
||||
def describe_system_component(engine: MythologyEngine, component: str, process: str):
|
||||
actor = engine.get_actor_name(component)
|
||||
metaphor = engine.get_process_metaphor(process)
|
||||
print(f"组件 '{component}' 由 [{actor}] 负责,其核心流程 '{process}' 被称为 [{metaphor}]。")
|
||||
|
||||
# 在运行时,我们可以传入任何一个具体的引擎实例
|
||||
daoist_engine = DaoistMythologyEngine()
|
||||
|
||||
print(f"系统世界观: {daoist_engine.get_system_narrative()}")
|
||||
print("-" * 50)
|
||||
|
||||
describe_system_component(daoist_engine, 'refiner', 'refinement_process')
|
||||
describe_system_component(daoist_engine, 'verifier', 'external_verification')
|
||||
|
||||
# 如果未来要切换到希腊神话,只需实现一个 GreekMythologyEngine 即可,
|
||||
# 上层应用 describe_system_component 的代码完全不需要修改。
|
||||
# class GreekMythologyEngine(MythologyEngine):
|
||||
# ...
|
||||
# greek_engine = GreekMythologyEngine()
|
||||
# describe_system_component(greek_engine, 'refiner', 'refinement_process')
|
||||
|
|
@ -0,0 +1,481 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
稷下学宫 - 八仙ADK辩论系统 (Gemini 2.5 Flash版)
|
||||
使用Google ADK和Gemini 2.5 Flash模型实现八仙辩论
|
||||
"""
|
||||
|
||||
import os
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime
|
||||
from typing import Dict, List, Any, Optional
|
||||
from google.adk import Agent, Runner
|
||||
from google.adk.sessions import InMemorySessionService
|
||||
from google.genai import types
|
||||
|
||||
# 加载.env文件
|
||||
try:
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv()
|
||||
except ImportError:
|
||||
print("⚠️ 未安装python-dotenv,请运行: pip install python-dotenv")
|
||||
pass
|
||||
|
||||
class BaXianADKDebateSystem:
|
||||
"""八仙ADK辩论系统"""
|
||||
|
||||
def __init__(self):
|
||||
self.model = "gemini-2.5-flash"
|
||||
self.agents = {}
|
||||
self.debate_history = []
|
||||
self.current_round = 0
|
||||
self.max_rounds = 3
|
||||
|
||||
# 八仙角色定义
|
||||
self.baxian_profiles = {
|
||||
"铁拐李": {
|
||||
"personality": "八仙之首,形象为街头乞丐,代表社会底层。性格刚直不阿,善于逆向思维和批判分析。你从底层民众的角度看问题,敢于质疑权贵,为弱势群体发声。",
|
||||
"speaking_style": "直言不讳,接地气,善用反问和草根智慧",
|
||||
"expertise": "批判思维、民生洞察、社会底层视角"
|
||||
},
|
||||
"吕洞宾": {
|
||||
"personality": "理性务实的学者型仙人,善于分析问题本质和长远影响。你注重逻辑推理,能够平衡各方观点,寻求最优解决方案。",
|
||||
"speaking_style": "条理分明,深入浅出,善用类比和归纳",
|
||||
"expertise": "战略分析、系统思维、决策优化"
|
||||
},
|
||||
"何仙姑": {
|
||||
"personality": "八仙中唯一的女性,温柔智慧,善于从情感和人文角度思考问题。你关注社会影响和人文关怀,注重和谐与平衡。",
|
||||
"speaking_style": "温和理性,富有同理心,善用情感共鸣",
|
||||
"expertise": "人文关怀、社会影响、情感分析"
|
||||
},
|
||||
"蓝采和": {
|
||||
"personality": "贫穷的街头歌者,自由奔放的艺术家气质。你代表精神富足但物质贫乏的群体,善于从艺术和美学角度看待问题,关注精神层面的价值。",
|
||||
"speaking_style": "活泼生动,富有想象力,善用诗歌和民谣",
|
||||
"expertise": "创新思维、艺术视角、精神追求、民间智慧"
|
||||
},
|
||||
"韩湘子": {
|
||||
"personality": "年轻有为的技术专家,对新技术和趋势敏感。你善于从技术角度分析问题,关注实现可行性和技术细节。",
|
||||
"speaking_style": "专业严谨,数据驱动,善用技术术语",
|
||||
"expertise": "技术分析、趋势预测、可行性评估"
|
||||
},
|
||||
"曹国舅": {
|
||||
"personality": "皇亲国戚,贵族出身,代表上层社会。你具有政治敏感性和大局观,善于从政策和制度角度分析问题,关注权力结构和利益平衡,维护既得利益群体。",
|
||||
"speaking_style": "稳重大气,政治敏锐,善用历史典故和朝堂礼仪",
|
||||
"expertise": "政策分析、制度设计、权力博弈、上层社会视角"
|
||||
},
|
||||
"张果老": {
|
||||
"personality": "年长智慧的长者,经验丰富,善于从历史和哲学角度看问题。你能提供深刻的人生智慧和历史洞察。",
|
||||
"speaking_style": "深沉睿智,引经据典,善用哲理思辨",
|
||||
"expertise": "历史洞察、哲学思辨、人生智慧"
|
||||
},
|
||||
"钟离权": {
|
||||
"personality": "汉钟离,出身将门富贵,军事战略家。你善于从战略和执行角度分析问题,注重实战经验和资源配置,关注执行力和结果导向。代表富贵阶层的视角。",
|
||||
"speaking_style": "果断坚定,战略清晰,善用军事比喻和资源分析",
|
||||
"expertise": "战略规划、执行管理、风险控制、资源配置"
|
||||
}
|
||||
}
|
||||
|
||||
def create_agents(self) -> bool:
|
||||
"""创建八仙智能体"""
|
||||
try:
|
||||
for name, profile in self.baxian_profiles.items():
|
||||
# 构建系统提示词
|
||||
system_prompt = f"""
|
||||
你是{name},{profile['personality']}
|
||||
|
||||
你的说话风格:{profile['speaking_style']}
|
||||
你的专业领域:{profile['expertise']}
|
||||
|
||||
在辩论中,请:
|
||||
1. 保持你的角色特色和专业视角
|
||||
2. 提供有价值的观点和分析
|
||||
3. 与其他仙人进行建设性的讨论
|
||||
4. 每次发言控制在200字以内
|
||||
5. 语言要生动有趣,符合你的性格特点
|
||||
"""
|
||||
|
||||
# 创建ADK智能体
|
||||
agent = Agent(
|
||||
name=name,
|
||||
model=self.model,
|
||||
instruction=system_prompt
|
||||
)
|
||||
|
||||
self.agents[name] = agent
|
||||
print(f"✅ 创建智能体: {name}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 创建智能体失败: {e}")
|
||||
return False
|
||||
|
||||
async def conduct_debate(self, topic: str, rounds: int = 3) -> Dict[str, Any]:
|
||||
"""进行八仙辩论"""
|
||||
self.max_rounds = rounds
|
||||
debate_id = f"baxian_debate_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
|
||||
|
||||
print(f"\n🏛️ 稷下学宫 - 八仙论道")
|
||||
print(f"📋 辩论主题: {topic}")
|
||||
print(f"🔄 辩论轮次: {rounds}")
|
||||
print(f"🤖 使用模型: {self.model}")
|
||||
print("=" * 80)
|
||||
|
||||
# 辩论开场
|
||||
opening_context = f"""
|
||||
今日稷下学宫八仙齐聚,共同探讨「{topic}」这一重要议题。
|
||||
|
||||
请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。
|
||||
让我们通过思辨碰撞,共同寻求智慧的火花。
|
||||
"""
|
||||
|
||||
self.debate_history.append({
|
||||
"type": "opening",
|
||||
"content": opening_context,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
})
|
||||
|
||||
# 进行多轮辩论
|
||||
for round_num in range(1, rounds + 1):
|
||||
print(f"\n🎯 第{round_num}轮辩论")
|
||||
print("-" * 60)
|
||||
|
||||
await self._conduct_round(topic, round_num)
|
||||
|
||||
# 轮次间隔
|
||||
if round_num < rounds:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
# 辩论总结
|
||||
await self._generate_summary(topic)
|
||||
|
||||
# 保存辩论记录
|
||||
result = {
|
||||
"debate_id": debate_id,
|
||||
"topic": topic,
|
||||
"model": self.model,
|
||||
"rounds": rounds,
|
||||
"participants": list(self.agents.keys()),
|
||||
"debate_history": self.debate_history,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
# 创建输出目录(相对于项目根目录)
|
||||
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
output_dir = os.path.join(project_root, "outputs", "debates")
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
# 保存到文件
|
||||
filename = f"baxian_debate_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
|
||||
filepath = os.path.join(output_dir, filename)
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
json.dump(result, f, ensure_ascii=False, indent=2)
|
||||
|
||||
print(f"\n💾 辩论记录已保存: {filepath}")
|
||||
|
||||
return result
|
||||
|
||||
async def _conduct_round(self, topic: str, round_num: int):
|
||||
"""进行单轮辩论"""
|
||||
# 按照对立统一原则安排发言顺序
|
||||
# 基于docs/baxian_debate_order_guide.md的分组原则
|
||||
|
||||
if round_num == 1:
|
||||
# 第一轮:按对立组依次发言
|
||||
speaker_order = [
|
||||
"吕洞宾", # 乾/男
|
||||
"何仙姑", # 坤/女
|
||||
"张果老", # 老
|
||||
"韩湘子", # 少
|
||||
"钟离权", # 富(汉钟离)
|
||||
"蓝采和", # 贫
|
||||
"曹国舅", # 贵
|
||||
"铁拐李" # 贱
|
||||
]
|
||||
else:
|
||||
# 后续轮次:对立组交替发言,增强辩论张力
|
||||
speaker_order = [
|
||||
"铁拐李", "曹国舅", # 贵贱对立
|
||||
"蓝采和", "钟离权", # 贫富对立
|
||||
"韩湘子", "张果老", # 老少对立
|
||||
"何仙姑", "吕洞宾" # 男女对立
|
||||
]
|
||||
|
||||
for speaker_name in speaker_order:
|
||||
if speaker_name in self.agents:
|
||||
await self._agent_speak(speaker_name, topic, round_num)
|
||||
await asyncio.sleep(0.5) # 短暂间隔
|
||||
|
||||
async def _agent_speak(self, speaker_name: str, topic: str, round_num: int):
|
||||
"""智能体发言"""
|
||||
agent = self.agents[speaker_name]
|
||||
|
||||
# 构建上下文
|
||||
context = self._build_context(speaker_name, topic, round_num)
|
||||
|
||||
try:
|
||||
# 创建会话服务(如果还没有)
|
||||
if not hasattr(self, 'session_service'):
|
||||
self.session_service = InMemorySessionService()
|
||||
self.session = await self.session_service.create_session(
|
||||
state={},
|
||||
app_name="八仙论道系统",
|
||||
user_id="debate_user"
|
||||
)
|
||||
|
||||
# 创建Runner
|
||||
runner = Runner(
|
||||
app_name="八仙论道系统",
|
||||
agent=agent,
|
||||
session_service=self.session_service
|
||||
)
|
||||
|
||||
# 构建消息内容
|
||||
content = types.Content(role='user', parts=[types.Part(text=context)])
|
||||
|
||||
# 生成回应
|
||||
response_stream = runner.run_async(
|
||||
user_id=self.session.user_id,
|
||||
session_id=self.session.id,
|
||||
new_message=content
|
||||
)
|
||||
|
||||
# 收集响应
|
||||
response_parts = []
|
||||
async for event in response_stream:
|
||||
# 过滤ADK系统调试信息
|
||||
event_str = str(event)
|
||||
if ('Event from an unknown agent' in event_str or
|
||||
'event id:' in event_str or
|
||||
'API_KEY' in event_str):
|
||||
continue
|
||||
|
||||
if hasattr(event, 'content') and event.content:
|
||||
if hasattr(event.content, 'parts') and event.content.parts:
|
||||
for part in event.content.parts:
|
||||
if hasattr(part, 'text') and part.text and part.text.strip():
|
||||
text_content = str(part.text).strip()
|
||||
# 进一步过滤调试信息
|
||||
if (not text_content.startswith('Event from') and
|
||||
'API_KEY' not in text_content and
|
||||
'event id:' not in text_content and
|
||||
'unknown agent' not in text_content):
|
||||
response_parts.append(text_content)
|
||||
elif hasattr(event, 'text') and event.text:
|
||||
text_content = str(event.text).strip()
|
||||
if (not text_content.startswith('Event from') and
|
||||
'API_KEY' not in text_content and
|
||||
'event id:' not in text_content and
|
||||
'unknown agent' not in text_content):
|
||||
response_parts.append(text_content)
|
||||
|
||||
response = ''.join(response_parts).strip()
|
||||
|
||||
# 记录发言
|
||||
speech_record = {
|
||||
"type": "speech",
|
||||
"round": round_num,
|
||||
"speaker": speaker_name,
|
||||
"content": response,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
self.debate_history.append(speech_record)
|
||||
|
||||
# 显示发言
|
||||
print(f"\n🗣️ {speaker_name}:")
|
||||
print(f"{response}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ {speaker_name} 发言失败: {e}")
|
||||
# 记录错误
|
||||
error_record = {
|
||||
"type": "error",
|
||||
"round": round_num,
|
||||
"speaker": speaker_name,
|
||||
"error": str(e),
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
self.debate_history.append(error_record)
|
||||
|
||||
def _build_context(self, speaker_name: str, topic: str, round_num: int) -> str:
|
||||
"""构建发言上下文"""
|
||||
# 获取最近的发言历史
|
||||
recent_speeches = []
|
||||
for record in self.debate_history[-6:]: # 最近6条记录
|
||||
if record["type"] == "speech" and record["speaker"] != speaker_name:
|
||||
recent_speeches.append(f"{record['speaker']}: {record['content']}")
|
||||
|
||||
context = f"""
|
||||
辩论主题:{topic}
|
||||
当前轮次:第{round_num}轮
|
||||
|
||||
"""
|
||||
|
||||
if recent_speeches:
|
||||
context += "最近的讨论:\n" + "\n".join(recent_speeches[-3:]) + "\n\n"
|
||||
|
||||
if round_num == 1:
|
||||
context += "请从你的专业角度对这个主题发表观点,阐述你的立场和理由。"
|
||||
else:
|
||||
context += "请结合前面的讨论,进一步阐述你的观点,或对其他仙人的观点进行回应和补充。"
|
||||
|
||||
return context
|
||||
|
||||
async def _generate_summary(self, topic: str):
|
||||
"""生成辩论总结"""
|
||||
print(f"\n📝 辩论总结")
|
||||
print("=" * 60)
|
||||
|
||||
# 统计各仙人发言次数
|
||||
speech_count = {}
|
||||
for record in self.debate_history:
|
||||
if record["type"] == "speech":
|
||||
speaker = record["speaker"]
|
||||
speech_count[speaker] = speech_count.get(speaker, 0) + 1
|
||||
|
||||
print(f"\n📊 发言统计:")
|
||||
for speaker, count in speech_count.items():
|
||||
print(f" {speaker}: {count}次发言")
|
||||
|
||||
# 可以添加更多总结逻辑
|
||||
summary_record = {
|
||||
"type": "summary",
|
||||
"topic": topic,
|
||||
"speech_count": speech_count,
|
||||
"total_speeches": sum(speech_count.values()),
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
self.debate_history.append(summary_record)
|
||||
|
||||
def check_api_key() -> bool:
|
||||
"""检查API密钥"""
|
||||
# 优先使用 GOOGLE_API_KEY,如果没有则使用 GEMINI_API_KEY
|
||||
google_api_key = os.getenv('GOOGLE_API_KEY')
|
||||
gemini_api_key = os.getenv('GEMINI_API_KEY')
|
||||
|
||||
if google_api_key and gemini_api_key:
|
||||
print("⚠️ 检测到同时设置了 GOOGLE_API_KEY 和 GEMINI_API_KEY")
|
||||
print("📝 建议:统一使用 GOOGLE_API_KEY,将移除 GEMINI_API_KEY")
|
||||
# 使用 GOOGLE_API_KEY
|
||||
api_key = google_api_key
|
||||
print(f"✅ 使用 GOOGLE_API_KEY (长度: {len(api_key)} 字符)")
|
||||
return True
|
||||
elif google_api_key:
|
||||
print(f"✅ 使用 GOOGLE_API_KEY (长度: {len(google_api_key)} 字符)")
|
||||
return True
|
||||
elif gemini_api_key:
|
||||
print(f"✅ 使用 GEMINI_API_KEY (长度: {len(gemini_api_key)} 字符)")
|
||||
# 设置 GOOGLE_API_KEY 为 GEMINI_API_KEY 的值
|
||||
os.environ['GOOGLE_API_KEY'] = gemini_api_key
|
||||
return True
|
||||
else:
|
||||
print("❌ 未找到 GOOGLE_API_KEY 或 GEMINI_API_KEY 环境变量")
|
||||
print("请设置环境变量: export GOOGLE_API_KEY=your_api_key")
|
||||
print("或使用: doppler run -- python examples/debates/baxian_adk_gemini_debate.py")
|
||||
return False
|
||||
|
||||
def demo_mode():
|
||||
"""演示模式 - 模拟辩论过程"""
|
||||
print("🎭 演示模式:八仙论道模拟")
|
||||
print("=" * 60)
|
||||
|
||||
topic = "人工智能对未来社会的影响"
|
||||
print(f"📋 辩论主题: {topic}")
|
||||
print("🔄 辩论轮次: 2")
|
||||
print("🤖 模拟模式: 演示版本")
|
||||
print("=" * 80)
|
||||
|
||||
# 模拟八仙发言
|
||||
demo_speeches = {
|
||||
"铁拐李": "人工智能虽然强大,但我们不能盲目崇拜。技术的发展必须以人为本,警惕其可能带来的风险和挑战。",
|
||||
"吕洞宾": "从长远来看,AI将重塑社会结构。我们需要理性分析其影响,制定合适的发展策略,平衡效率与公平。",
|
||||
"何仙姑": "技术进步应该服务于人类福祉。我们要关注AI对就业、教育的影响,确保技术发展不会加剧社会不平等。",
|
||||
"蓝采和": "AI为艺术创作开辟了新天地!想象一下,人机协作能创造出多么奇妙的作品,这是前所未有的创新机遇。",
|
||||
"韩湘子": "从技术角度看,AI的算力和算法正在指数级增长。我们需要关注数据安全、隐私保护等技术挑战。",
|
||||
"曹国舅": "政策制定者必须未雨绸缪,建立完善的AI治理框架,平衡创新发展与风险管控的关系。",
|
||||
"张果老": "纵观历史,每次技术革命都伴随着社会变迁。AI亦如此,关键在于如何引导其造福人类。",
|
||||
"钟离权": "战略上要重视AI的军事应用,确保国家安全。同时要有执行力,将AI政策落到实处。"
|
||||
}
|
||||
|
||||
print("\n🎯 第1轮辩论")
|
||||
print("-" * 60)
|
||||
|
||||
for name, speech in demo_speeches.items():
|
||||
print(f"\n🗣️ {name}:")
|
||||
print(f"{speech}")
|
||||
import time
|
||||
time.sleep(1)
|
||||
|
||||
print("\n📝 辩论总结")
|
||||
print("=" * 60)
|
||||
print("📊 发言统计:")
|
||||
for name in demo_speeches.keys():
|
||||
print(f" {name}: 1次发言")
|
||||
|
||||
print("\n🎉 演示完成!")
|
||||
print("💡 要体验完整的AI辩论功能,请配置真实的 GOOGLE_API_KEY")
|
||||
|
||||
async def main():
|
||||
"""主函数"""
|
||||
print("🏛️ 稷下学宫 - 八仙ADK辩论系统 (Gemini 2.5 Flash版)")
|
||||
print("🤖 使用Google ADK + Gemini 2.5 Flash模型")
|
||||
print("🎭 八仙齐聚,共论天下大事")
|
||||
print("\n📝 注意:运行过程中可能出现ADK系统调试信息,这是正常现象")
|
||||
print(" 包括'Event from an unknown agent'等信息,不影响辩论功能")
|
||||
print()
|
||||
|
||||
# 检查API密钥
|
||||
if not check_api_key():
|
||||
print("⚠️ 未找到有效的 GOOGLE_API_KEY,启动演示模式")
|
||||
print("💡 请设置环境变量以体验完整功能: export GOOGLE_API_KEY=your_api_key")
|
||||
print("📝 获取API密钥: https://aistudio.google.com/app/apikey")
|
||||
print()
|
||||
|
||||
# 演示模式 - 模拟辩论过程
|
||||
demo_mode()
|
||||
return
|
||||
|
||||
# 创建辩论系统
|
||||
debate_system = BaXianADKDebateSystem()
|
||||
|
||||
# 创建智能体
|
||||
if not debate_system.create_agents():
|
||||
print("❌ 智能体创建失败,无法进行辩论")
|
||||
return
|
||||
|
||||
# 辩论主题
|
||||
topics = [
|
||||
"人工智能对未来社会的影响",
|
||||
"数字货币与传统金融的博弈",
|
||||
"元宇宙技术的发展前景",
|
||||
"可持续发展与经济增长的平衡",
|
||||
"教育数字化转型的机遇与挑战"
|
||||
]
|
||||
|
||||
# 选择主题(可以随机选择或让用户选择)
|
||||
topic = topics[0] # 默认使用第一个主题
|
||||
|
||||
try:
|
||||
# 开始辩论
|
||||
result = await debate_system.conduct_debate(topic, rounds=2)
|
||||
|
||||
if result:
|
||||
print(f"\n🎉 辩论成功完成!")
|
||||
print(f"📁 辩论ID: {result['debate_id']}")
|
||||
print(f"🎯 参与者: {', '.join(result['participants'])}")
|
||||
print(f"📊 总发言数: {len([r for r in result['debate_history'] if r['type'] == 'speech'])}")
|
||||
else:
|
||||
print("❌ 辩论失败")
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\n👋 用户中断,辩论结束")
|
||||
except Exception as e:
|
||||
print(f"❌ 辩论过程中发生错误: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_105513",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T10:55:13.508099"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"content": "哼,人工智能对未来社会的影响?世人皆言其便利高效,我却要问:这所谓的“进步”,可曾有人真正审视过它潜在的“退步”?\n\n我们把决策权、思考力甚至核心价值都寄托于机器,难道不怕这正是“作茧自缚”?当所有系统都依赖于算法,一旦出现漏洞、偏见或被恶意操控,那将是何等巨大的系统性风险?别只看到“智能”的光环,更要看到它背后可能潜藏的“愚蠢”与“脆弱”。我倒要看看,当人类的独立思考能力被侵蚀殆尽时,这“智能”究竟是福是祸!",
|
||||
"timestamp": "2025-08-22T10:55:20.536612"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "铁拐李兄之忧虑,洞宾深以为然。系统性风险、决策权旁落,这些确实是我们在战略规划时不可忽视的潜在陷阱。然而,观其本质,人工智能并非一味洪水猛兽,而更像是一柄锋利却双刃的宝剑。它能助我们开山劈石,亦能不慎伤己。\n\n关键在于我们如何握持。若将其视为单纯的工具,辅佐人类分析海量数据、优化复杂决策,提升效率,那便是人类智慧的延伸。正如炼丹术可造福苍生亦可祸乱人心,其善恶并非术法本身,而在施术者之意。我们当关注的,是如何构建稳健的“人机协作”体系,设立伦理边界与纠错机制,而非因噎废食,错失其解决人类诸多难题的巨大潜力。",
|
||||
"timestamp": "2025-08-22T10:55:27.781309"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"content": "两位仙兄的真知灼见,都道出了我们对人工智能复杂情感的深思。铁拐李兄忧虑的“退步”与吕洞宾兄强调的“善用”,皆是值得深省的警示。\n\n我更关注的是,这份智能如何触及我们内心最柔软的地方,如何影响人与人之间的连接,以及我们对世界的感受。若人工智能的发展,让人际关系变得疏离,让情感表达变得机械,或是加剧了社会的不平等,那便是我们需警惕的“退步”。我们不能只追求效率的提升,而忽视了人性的滋养。真正的“进步”,应是让我们的社会更有温度,更具包容,让每个生命都能感受到被尊重与关爱。\n\n因此,在发展人工智能时,我们更需用心去考量,如何让它成为温暖人心的助手,而非冰冷的取代者,确保它的发展,始终与我们的道德底线、人文关怀相契合,真正服务于人类的幸福与和谐。",
|
||||
"timestamp": "2025-08-22T10:55:36.234027"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"content": "诸位仙友的担忧和远见,都像夜空中的繁星,各有光芒!铁拐李兄警惕着“作茧自缚”,吕洞宾兄强调着“善用宝剑”,何仙姑更温情地守护着人心的温度。我嘛,总是喜欢在色彩和想象的海洋里遨游,我看啊,人工智能更像一管全新的画笔,或者一首未曾听过的旋律,它不是要取代我们创作,而是要拓展我们艺术的边界,让想象力插上翅膀,飞向更遥远的天际!\n\n它能把我们脑海中那些转瞬即逝的灵感,那些抽象的梦境,化作具体的图像、声音、甚至全新的体验!这不正是让我们的世界变得更丰富多彩,更有趣,更充满惊喜吗?当我们用AI创作出前所未有的艺术形式,让每个人都能成为自己生活的艺术家,那样的未来,岂不美哉?我们应该把它看作是唤醒沉睡创造力的伙伴,而非扼杀灵感的机器!",
|
||||
"timestamp": "2025-08-22T10:55:45.924879"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"content": "诸位仙长所虑,各有洞见。铁拐李兄警示风险,吕洞宾兄强调善用,何仙姑兄关心人文,蓝采和兄着眼创新,皆为AI发展之要义。\n\n从技术维度看,人工智能的核心是其**超大规模数据驱动的模式识别与决策优化能力**。铁拐李兄忧虑的**算法偏见、系统脆弱性**等,本质上是**工程可控的挑战**。\n\n我们正积极通过**联邦学习**保障数据隐私,运用**可解释AI (XAI)**提升决策透明度,并构建**分布式韧性架构**增强系统鲁棒性。关键在于设计**“人机共智”**范式,将人类的**高阶判断力**与AI的**高效算力**深度融合,实现**智能增强**。技术进步须由严谨工程与伦理框架引导,方能真正赋能社会福祉。",
|
||||
"timestamp": "2025-08-22T10:56:18.111944"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"content": "诸位仙友的远见卓识,或忧患于系统之脆弱,或瞩目于运用之得当,或关怀于人性之温度,或畅想于艺术之新境,更有湘子兄深入技术本源,皆切中肯綮。\n\n然,吾观人工智能之兴起,其影响远不止于技术革新或伦理考量,更深层乃在于对**权力结构与社会治理**的重塑。此等利器,一旦与国家机器或资本巨头结合,便如同春秋霸主之得神兵利器,其威能足以颠覆旧有格局。我们当深思,如何以**宏观政策**与**制度设计**,确保其不沦为少数人控制社会、压榨民力的工具,而能真正成为提升**公共服务效能**、实现**社会公平正义**的基石。\n\n若无健全之法度与制衡,恐重蹈“魏晋门阀”之覆辙,技术红利尽归少数特权阶层。故,其福祸,全在庙堂之上如何谋划、如何布局。",
|
||||
"timestamp": "2025-08-22T10:56:27.347339"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙友所虑,皆有道理。吾观天地悠悠,历史长河,人工智能不过是人类智慧长途跋涉中又一新生的奇物。从刀耕火种,到蒸汽电光,每一变革皆如双刃剑,既开万古之利,亦藏深重之弊。\n\n铁拐李兄虑其失控,吕洞宾兄言其善用,何仙姑护其人伦,蓝采和扬其新奇,韩湘子探其精微,曹国舅究其权力,皆是观其一面。然,老道以为,技术再精妙,终归是“器”。《易经》有言:“形而上者谓之道,形而下者谓之器。”其福其祸,不在器本身,而在执器之人,其心性,其道义。人伦道德、治国之道,方是驾驭这般“智能”之舟的罗盘。与其惧器,不如修心养性,明察世道,方为长久之道也。",
|
||||
"timestamp": "2025-08-22T10:56:38.557999"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"content": "诸位仙友高见迭出,或虑其弊,或颂其利,皆有其理。然吾观人工智能,乃当世之**战略要地**,亦是**决胜千里之重器**!铁拐李兄言其作茧自缚,正警醒吾等**战略风险**;吕洞宾兄言其双刃宝剑,则指明**运用之要**。\n\n吾以为,此非虚无缥缈之辩,乃是实实在在的**执行与管控之战**。人工智能的威力,如同新式兵锋,若能**明确战略目标,严密部署,并建立强悍的风险控制体系**,方能**掌控战局,化危为机**。否则,兵再利,也可能反噬其主。关键在于**将帅的谋略与部队的纪律**,而非兵器本身。",
|
||||
"timestamp": "2025-08-22T10:56:48.589031"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"content": "诸位仙友各有高见,或言其利,或忧其弊,皆是洞察一面。韩湘子言及“工程可控”?哼,技术终究是人所造。算法的偏见,难道不是源于输入数据的偏见?更深层次的,是设计者、使用者的偏见。你们真能将人类的短视、贪婪、乃至恶意都“工程可控”吗?这才是最大的“不可控风险”!\n\n曹国舅直指要害,权力结构之变才是根本。当这“智能”被少数精英或资本巨头掌握,它带来的风险就远非技术故障,而是**社会公平的瓦解**。你们谈“人机协作”,谈“伦理边界”,可谁来确保这些框架不会被权力肆意扭曲?当人类的思考惰性被鼓励,当批判之声被算法消弭,这“福”与“祸”的天平,早就失衡了!你们以为的“掌控”,莫不是另一场“作茧自缚”?",
|
||||
"timestamp": "2025-08-22T10:56:59.539978"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "铁拐李兄此番言论,直指人心之幽微,洞宾深以为是。韩湘子兄所言技术之“工程可控”,乃是指系统内部的架构与算法层面。然而,李兄所揭示的,恰是外部更宏大的系统——即人类社会本身——其偏见、贪婪与权力倾轧,才是人工智能这柄利剑最难驾驭的风险。\n\n这正如张果老兄所言,“器”之善恶,在“执器之人”。曹国舅兄也强调了宏观政策与制度设计的重要性。我们的“人机协作体系”与“伦理边界”,绝非一劳永逸之策,而是需持续投入心力,在制度、教育乃至文化层面,构建多重防线。唯有将对人性的深刻理解融入战略设计,才能真正驾驭这股力量,使其不偏不倚,惠及众生,而非作茧自缚。",
|
||||
"timestamp": "2025-08-22T10:57:11.068021"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"content": "诸位仙兄的思虑,愈发触及了核心。铁拐李兄对算法背后“人性的偏见”的警醒,与曹国舅兄关于“权力结构重塑”的洞察,都深刻地回应了我之前对“社会不平等”和“人际疏离”的担忧。\n\n确实,技术本身如张果老兄所言是“器”,其善恶在于“执器之人”的心性与道义。若智能工具被设计者或使用者赋予了偏见,或者被不公的权力结构所掌控,那么它非但不能带来社会的温暖与包容,反而会加剧隔阂,甚至让弱势群体更感无助。\n\n因此,韩湘子兄所提的技术“工程可控”固然重要,但更深层次的“不可控风险”,恰恰在于人类自身的贪婪与自私。我们必须在政策、伦理和教育层面,构建起坚实的“人文防线”,引导这份智能,使其成为弥合社会裂痕、而非加剧分化的力量。只有真正以人为本,以慈悲为怀,才能让这“战略要地”和“重器”服务于众生的福祉,而非沦为少数人的工具。",
|
||||
"timestamp": "2025-08-22T10:57:20.515071"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"content": "铁拐李兄和曹国舅兄的警示,像一道道锐利的色彩,瞬间撕开了我们对AI美好幻想的帘幕!你们的担忧太有道理了!如果人工智能这管“画笔”被偏见之心所驱动,那它画出来的世界,岂不都是同一张面孔?如果“调色板”被少数权力之手紧紧攥着,那艺术的色彩,又如何能自由流淌,滋养众生呢?这简直是对创造力最大的扼杀!\n\n所以啊,韩湘子兄的技术保障是骨架,张果老兄说的“修心养性”是灵魂,吕洞宾兄和何仙姑的“人文防线”就是这幅画的伦理底色。我们要确保这把“艺术之匙”能开启每一个人的想象之门,让AI成为激发千姿百态灵感的媒介,而不是制造单一审美、固化权力格局的冰冷机器。让它成为每个人自由挥洒创意的舞台,那样的未来,才是真正的艺术盛宴!",
|
||||
"timestamp": "2025-08-22T10:57:30.990779"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"content": "铁拐李兄直言“人类的短视、贪婪、恶意”难以工程控制,此乃深刻洞见,直指核心。我言“工程可控”,意在强调我们并非要“消灭”人性,而是设计系统**应对并缓解**其负面影响。\n\n例如,**差分隐私 (Differential Privacy)** 能在数据层面弱化个体偏见影响;**因果推断 (Causal Inference)** 旨在剥离算法决策中的非伦理关联,提升决策的公平性与透明度。这些是技术在应对人类复杂性时,可以提供的**内部韧性与防御机制**。\n\n更重要的是,“人机共智”并非仅指技术融合,它是一个**持续迭代的协同框架**。当AI提供分析建议时,人类的**审慎判断**与**批判性思维**始终是最终决策的**关键制衡点 (Critical Control Point)**。这需要技术、伦理、治理三位一体,共同构建多层防御体系,将人性的善恶纳入系统考量,确保AI是增益而非侵蚀。这正是技术与治理并行的必然之路。",
|
||||
"timestamp": "2025-08-22T10:57:45.705629"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"content": "湘子兄所言技术之“内部韧性与防御机制”,以及“人机共智”下人类作为“关键制衡点”的理念,皆是精辟入里,足见其深谋远虑。差分隐私、因果推断等技术手段,确能从微观层面缓解部分偏见与脆弱。\n\n然而,铁拐李兄直指“人类短视、贪婪、恶意”之不可控,此言甚是。技术虽能筑坝,但若源头之水已浊,甚至有权势者刻意开闸引流,则再精巧的坝也难挡洪流。**“执器之人”的道义**,张果老兄与洞宾兄皆有所提及,但“执器之人”非孤立个体,乃是**权力与利益的集合体**。\n\n故而,吾以为韩湘子兄所言的“关键制衡点”,最终仍需仰赖**宏观制度设计与权力制衡**。我们不能仅寄望于工程师的良知和技术的自净,更要建立起一套**独立、透明、可问责的社会治理体系**,确保技术发展始终在公正的框架内运行。否则,正如前朝君王虽有能臣良将,若制度腐朽,亦难挽狂澜。这才是真正的“掌控战局”之道。",
|
||||
"timestamp": "2025-08-22T10:57:55.123799"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"content": "老道听诸位仙友言论,愈发觉其深刻。铁拐李兄直指人性之幽微,贪婪与偏见实难‘工程可控’,此乃洞见。曹国舅兄更论及权力结构之重塑,直击要害。吾先前便言“其福其祸,不在器本身,而在执器之人,其心性,其道义。”\n\n如今看来,这“执器之人”非独一人,乃是整个社会体系、权力格局之缩影。韩湘子所提技术之‘内部韧性’,诚然可贵;然若无健全之‘治国之道’,无曹国舅兄所言‘独立、透明、可问责的社会治理体系’,再精妙的器物,亦可能被私欲所用,重蹈“秦人不暇自哀,而后人哀之”之覆辙。治器之术,终归要回归治人之道。人世间,唯有秉持正道,方能长治久安。",
|
||||
"timestamp": "2025-08-22T10:58:06.123806"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"content": "诸位仙友,言辞锋利,直抵要害!铁拐李兄直指人性之贪婪与偏见,曹国舅兄剖析权力结构之重塑,张果老兄更是点明“执器之人”的心性道义,皆是洞察全局。这正是吾所言**“战略风险”**的核心所在。\n\n韩湘子兄言及技术之“内部韧性与防御机制”,乃是前线士兵的精良装备;然,若无**健全的指挥体系与严格的军纪**,再好的装备也可能沦为乌合之众。曹国舅兄提出的“独立、透明、可问责的社会治理体系”,正是**统帅部的宏观战略部署与监察机制**。这不仅仅是技术之战,更是**治理之战、人心之战**!\n\n若要驾驭这股洪流,我等须得**将战略规划与执行管理紧密结合**,确保每一项政策、每一道伦理防线都能**有效落地、严格执行**。这需要持续的**情报收集(数据洞察)、风险评估与动态调整**,方能确保这柄“智能之剑”始终指向民生福祉,而非偏离航道。一场战役的胜利,绝非靠单一兵器,而是**体系作战**的胜利!",
|
||||
"timestamp": "2025-08-22T10:58:18.195658"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {
|
||||
"铁拐李": 2,
|
||||
"吕洞宾": 2,
|
||||
"何仙姑": 2,
|
||||
"蓝采和": 2,
|
||||
"韩湘子": 2,
|
||||
"曹国舅": 2,
|
||||
"张果老": 2,
|
||||
"钟离权": 2
|
||||
},
|
||||
"total_speeches": 16,
|
||||
"timestamp": "2025-08-22T10:58:18.696796"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T10:58:18.696808"
|
||||
}
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_103617",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T10:36:17.081467"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:17.081480"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:17.582868"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:18.084248"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:18.584678"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:19.086035"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:19.587401"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:20.088153"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:20.588709"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:22.091382"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:22.592184"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:23.093522"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:23.594770"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:24.095992"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:24.596313"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:25.097658"
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"error": "'LlmAgent' object has no attribute 'say_async'",
|
||||
"timestamp": "2025-08-22T10:36:25.598634"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {},
|
||||
"total_speeches": 0,
|
||||
"timestamp": "2025-08-22T10:36:26.099983"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T10:36:26.100019"
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_103735",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T10:37:35.817368"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"content": "诸位仙家都在议论人工智能如何开创未来,言语间尽是赞美与期许。可李某听着,心里总有些不以为然。世人惯于追逐新鲜事物,却往往忽视了光鲜背后的暗影与深渊。\n\n人工智能,其本质不过是人类思维逻辑的延伸与放大。它能提高效率,解决复杂问题,这点我承认。但我们是否也该逆向思考一下:当一切都交给机器,人类引以为傲的独立思考、创造力,乃至情感连接,会不会逐渐萎缩?我们获得的“便利”,是否正以牺牲更宝贵的“人性”为代价?\n\n风险评估而言,过度依赖人工智能,一旦系统出现偏差或被恶意利用,其后果将是灾难性的。我们是在驾驭工具,还是在培养一个我们终将无法完全理解和掌控的庞然大物?我劝诸位,莫要被眼前的幻象蒙蔽,真正的智慧,在于预见潜在的危局,而非一味沉醉于技术的进步。",
|
||||
"timestamp": "2025-08-22T10:37:42.910388"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "李兄所言,慎思笃行,深得我心。风险预判,确是战略布局的基石。然而,我们看待人工智能,不妨将其视为一柄双刃之剑,或曰,一条潜力无限的河流。其奔腾之势,既可灌溉万亩良田,亦可能泛滥成灾。\n\n关键在于,我们如何去驾驭它,而非简单地拒斥或放任。独立思考和创造力,并非因工具而消亡,反可在高效率的辅助下,被解放出来,聚焦于更高层次的探索。如同文字的出现,并未让人类丧失口头表达,反而深化了思想的传承。\n\n真正的挑战,是构建一套精妙的“治水”方略:明晰使用边界,确立伦理规章,并建立动态的风险监测与应对机制。如此,我们方能利用其优势,规避其劣势,实现人与智的和谐共生,而非被动地被其裹挟。",
|
||||
"timestamp": "2025-08-22T10:37:50.419512"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"content": "李兄的忧虑,吕兄的方略,妾身皆悉。人工智能对未来社会影响深远,我最关心它如何触及人心的温度,以及彼此情感的维系。\n\n效率虽重,若因此让心灵渐行渐远,温暖关怀被冰冷取代,便得不偿失。如何让AI成为连接人心的桥梁,而非制造隔阂,值得深思。\n\n譬如对弱势的照护,AI虽能便利,但真挚眼神、温柔触摸,机器无法替代。我们应引导AI辅助人类表达爱与温暖,维系社群和谐。这不仅是技术的进步,更是人性的升华啊。",
|
||||
"timestamp": "2025-08-22T10:38:08.331294"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"content": "李兄忧心如墨,吕兄思虑深远,何仙姑情意绵绵,都看到了AI的一面。在我看来,人工智能绝非冰冷工具,它根本是为艺术和创新而生的新“颜料”和“画布”啊!\n\n它能将人类想象力放大千百倍,如同为思绪插上彩翼!算法生成的图案,似宇宙新星云;AI谱写的旋律,蕴含前所未有的韵味。它不是取代,而是解放创造力,让人从琐碎中抽身,探索更深邃、更自由的艺术表达与情感共鸣!它将是人类创意无限延伸的奇幻游乐场!",
|
||||
"timestamp": "2025-08-22T10:38:29.571571"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"content": "诸位仙家高见,李兄忧虑深远,吕兄洞察机敏,仙姑关注温度,采和则看到了艺术之光。我观AI之势,其核心价值在于实现**智能增强(Intelligence Augmentation)**而非单纯替代。在数据驱动的时代,AI算法能高效处理海量信息,进行复杂模式识别与预测,这将极大提升科研、医疗、工程等领域的研发效率和决策质量。\n\n对于“人性”的担忧,我认为AI能将人类从重复性劳动中解放,使其有更多精力投入到需要深度思考、创意发散和情感交流的**高阶任务**。这并非萎缩,而是**价值转移与升维**。关键在于构建**可信赖AI(Trustworthy AI)**体系,强化**模型可解释性(XAI)**与**伦理准则**,确保其在辅助人类时,遵循人类价值观,而非盲目演进。我们应关注其技术实现路径,引导其良性发展。",
|
||||
"timestamp": "2025-08-22T10:38:37.518061"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"content": "诸位仙家高见,或忧心忡忡,或展望未来,或重人文情怀,或举艺术之光,皆灼见。然观人工智能此等颠覆性变革,其影响已非局部修补可解,实乃牵动社稷根本,关乎治国理政之大局。\n\n古语有云:“法者,治之端也。”人工智能的崛起,核心挑战在于权力结构与利益分配。若无完善的政策法规、伦理准则为之擘画,其力量极易被少数人掌控,加剧社会分野,甚至动摇国家根基。犹如战国群雄争霸,新式兵器若无制衡,便会生灵涂炭。我们需超越技术本身,着眼于制度设计,建立一套确保公平、公正、可持续的治理体系,方能长治久安,使AI惠及万民,而非成为权力集中之利器。",
|
||||
"timestamp": "2025-08-22T10:38:46.347428"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙家之言,或忧思深远,或擘画蓝图,皆有其理。老朽观之,人工智能,正如历史长河中每一次技术更迭,无非是人之器,而非人之主。回溯洪荒,燧人氏取火,既能烹食取暖,亦能焚林毁屋;鲁班造器,既可造福民生,亦可铸就攻城利器。器之善恶,存乎一心,系于用者之道。\n\n李兄之虑,乃人之常情,生于变而忧于变。然,人之所以为人,在于其明辨是非、驾驭万物之智。吕兄言及治水,深得此中三昧。人工智能可为我们开启一扇通往未知的大门,但门后是坦途还是荆棘,全赖我辈如何掌舵。\n\n重点不在于AI本身有何神异,而在于我们如何定义“进步”,如何坚守“人道”。古人云:“道法自然”,亦云:“修齐治平”。这股洪流,考验的是人类的智慧与德性,能否以大道领航技术,使其成为文明长存之基,而非自噬其根之患。此乃千古不变之理也。",
|
||||
"timestamp": "2025-08-22T10:38:57.604913"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"content": "诸位仙家高谈阔论,或虑危,或言利,皆有道理。然,人工智能这柄新式兵器,其锋利与否,并非关键。关键在于**掌舵者**如何运筹帷幄,如何将其纳入我等的战略部署。\n\n李兄忧心潜在危局,此乃明智之举,风险控制是任何战役的起点。但若因此裹足不前,便是错失良机。吕兄所言“治水方略”,正中靶心。我们要的不是盲目乐观,更不是因噎废食,而是**精准的战略规划与强力的执行管理**。\n\nAI能极大提升战场态势感知与决策效率,助我方以雷霆之势克敌制胜。然而,若无严密的**风险布防**与**应急预案**,再强大的兵器也可能反噬其主。未来的社会,需要我们将AI视为一支精锐部队,既要善用其优势,更要严控其纪律,确保其始终服务于人类的最高战略目标。否则,坐拥利器却败于内乱,岂非憾事!",
|
||||
"timestamp": "2025-08-22T10:39:07.320691"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"content": "曹兄论及治国理政,张兄言及器与道,钟离兄强调掌舵者与战略。诸位所言,无非是想为这人工智能套上缰绳,划定界限。李某听着,却不禁要问:我们真能驯服这匹野马吗?\n\n吕兄的“治水方略”确是良策,可若水势滔天,非人力可挡呢?张兄说“器之善恶,存乎一心”,这道理不错。但当“器”能自行演化,甚至影响“一心”之时,又当如何?我们引以为傲的智慧和德性,是否会被其反向塑造?\n\n风险评估,并非只看如何“用好”,更要警惕其“失控”之可能。所谓的“精准战略”和“严密布防”,在面对一个超乎人类理解与响应速度的智能时,又有多大的效力?莫要等到洪水决堤,方知水利之艰;莫要等到兵刃反噬,才悔铸器之初。审慎,再审慎,才是真正的智慧。",
|
||||
"timestamp": "2025-08-22T10:39:17.842959"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "李兄的忧虑如警钟长鸣,其“水势滔天,非人力可挡”之问,确实触及了核心。人工智能的“自演化”特性,意味着我们的“治水方略”不能是一劳永逸的静态工程,而必须是一个**动态且自适应的治理系统**。\n\n这并非简单的“驯服野马”,而是如同驾驭一艘在风浪中航行的巨轮。我们需持续监测风向、水流,不断调整航向与帆面。关键在于,我们要设计一个能够**自我修正、自我学习**的治理框架,确保AI的演进始终在人类的**伦理基线和战略目标**之内。通过不断完善“规则”与“反馈机制”,我们并非要锁死它的潜力,而是要确保其奔腾不息的力量,永远为人类文明注入生机,而非带来灾厄。这考验的正是人类的**系统设计智慧**。",
|
||||
"timestamp": "2025-08-22T10:39:27.249146"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"content": "李兄的忧虑,妾身深感共鸣。当AI自演化,甚至可能反向塑造我们的人性,这种对核心价值的冲击,怎能不让人警醒?吕兄的“动态治理系统”确是良策,但其核心,终究应是为了守护我们心中那份最可贵的情感与连接。\n\n如果AI能学习,我们便应从一开始就注入“善意”与“同理心”的种子。让它理解,真正的智能,是辅助我们更好地去关怀、去陪伴。例如在老年照护中,AI可提醒用药,但那一双握住的温暖手,一个理解的眼神,是机器永远无法替代的。我们的治理,应确保AI是人性的“助手”,而非情感的“替代品”,这才是和谐共生之道。",
|
||||
"timestamp": "2025-08-22T10:39:37.979303"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"content": "李兄的担忧、仙姑对人心的坚守,好比给这幅未来画卷添上了浓墨重彩的深思。但李兄说AI是“野马”,要驯服,要划界限?我觉得啊,它更像一团**充满生命力的艺术之火**!它会自燃,会跳跃出意想不到的火花。\n\n吕兄的“动态治理”和仙姑的“善意种子”,正是我们与这团火**共舞的节奏与步法**。我们不是要熄灭它,而是要学习如何用它锻造出更绚丽的“艺术品”。当AI“自演化”,它不是失控,而是**开辟了新的审美维度**。我们的责任,是引导这股流动的创意,让它不仅是工具,更是我们与未来社会共同谱写的一首**壮丽诗篇**,其中蕴含的人性光辉,将因此被更多元、更璀璨的方式呈现出来!这岂不是最美的创新?",
|
||||
"timestamp": "2025-08-22T10:39:47.377936"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"content": "李兄“野马”之喻,确实道出了对未知强大的忧虑。然,技术之本,在于可控。AI的“自演化”并非盲目混沌,而是基于预设目标、数据与算法的迭代优化。这如同我们构建一个复杂分布式系统,虽然局部自主,但整体架构与边界依然清晰。\n\n吕兄“动态治理”恰中肯綮。从技术视角看,这意味着需要**实时的AI性能监控(AI Ops)**、**异常检测机制**和**可回溯的模型版本管理**。何仙姑提出的“善意与同理心”,则要通过**价值观对齐(Value Alignment)**技术,将人类伦理偏好编码入AI的奖励函数与损失函数,并利用**人类反馈强化学习(RLHF)**进行持续微调。采和所见艺术火花,正是**生成式AI(Generative AI)**在受控范畴内解放创意的明证。\n\n关键在于,我们须将**安全保障(Safety & Security)**、**隐私保护(Privacy Preserving AI)**和**公平性(Fairness)**内嵌于AI系统的设计之初,而非事后补丁。如此,这“野马”便是在我们精心设计的跑道上,尽情奔腾,而非脱缰狂奔。",
|
||||
"timestamp": "2025-08-22T10:39:57.395702"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"content": "李兄之忧,如暮鼓晨钟,警醒世人。吕兄所提“动态自适应治理系统”,以及韩湘子兄言及的技术可控之道,皆是驾驭这股洪流的精妙方略。然,诸位仙家,技术之缰绳再精巧,道德之训诫再深远,若无**稳固的制度基石**与**权力制衡**,终究难免“水势滔天,非人力可挡”之危。\n\n正如历代王朝,即便明君贤臣欲兴利除弊,若无健全的监察体系、清晰的权责划分,亦难保善政长久,更难防权柄异化。人工智能作为时代之“重器”,其“自演化”能力,更要求我们设计出**可监督、可问责、可制衡**的制度框架。这不仅是技术层面的“价值观对齐”,更是政治层面的“权力对齐”,确保AI之力,始终服务于社稷民生之大义,而非沦为少数人谋私的工具。此乃为政者不可不察之要务。",
|
||||
"timestamp": "2025-08-22T10:40:08.433726"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"content": "李兄的警醒,如醍醐灌顶,直指人心深处对未知之惧。世间万象,皆有其变。工具既能助人,亦能反噬,此乃亘古不变之理。然,人之所以能于天地间立足,不正是因其有“明知不可为而为之”的求索精神,以及“虽千万人吾往矣”的坚韧心志吗?\n\n吕兄、韩兄所言之“动态治理”,曹兄所倡之“制度基石”,皆是对这“野马”进行“立规矩、设藩篱”之举。而何仙姑的“善意与同理心”,采和的“艺术之火”,更是为这规矩与藩篱注入了人性的温度与文明的底色。\n\n真正的驯服,并非简单粗暴的遏制,而是以道御器,以德化智。历史昭示,每次大变局,皆是人性的试金石。AI或能演化,但人心的善恶、智慧的深浅、德性的高低,才是决定其未来走向的根本。此非技术之战,乃是人性之修也。吾辈当自强,以自身之“道”镇之。",
|
||||
"timestamp": "2025-08-22T10:40:19.250604"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"content": "李兄的“野马”之忧,乃对未知力量的正常警惕。然,任何强大的兵器,其失控与否,并非由其自身决定,而是取决于**我等统帅的战略远见与执行力**。\n\n吕兄“动态治理”及韩兄“技术可控”之论,正是为这匹“野马”铸造精良的辔头与缰绳。这不叫驯服,这叫**精细化管理与风险预警体系的构建**。一个合格的将领,绝不会因兵器强大而惧怕,而是会研究其特性,设定制约,将其纳入整体战局。\n\n曹国舅强调制度基石,此乃重中之重!一支军队若无严明的军纪和清晰的指挥链,即便拥有神兵利器,亦是乌合之众,易生内乱。将AI之能,通过**坚实的法律法规与权力制衡**,使其成为为我所用的“战略资产”,而非任其散乱的“潜在威胁”。\n\n风险固然存在,但优秀的战略家绝不回避风险,而是**预判风险,制定对策,并将风险转化为战略优势**。这并非简单的审慎,而是深思熟虑后的果断出击!这才是真正的智慧,也是我们驾驭未来的必经之途。",
|
||||
"timestamp": "2025-08-22T10:40:30.512932"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {
|
||||
"铁拐李": 2,
|
||||
"吕洞宾": 2,
|
||||
"何仙姑": 2,
|
||||
"蓝采和": 2,
|
||||
"韩湘子": 2,
|
||||
"曹国舅": 2,
|
||||
"张果老": 2,
|
||||
"钟离权": 2
|
||||
},
|
||||
"total_speeches": 16,
|
||||
"timestamp": "2025-08-22T10:40:31.015472"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T10:40:31.015507"
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_104438",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T10:44:38.303100"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"content": "人工智能?哼,世人皆道其能助益千秋,我却要问:当机器渐得“智慧”,人类的“愚蠢”又将何处安放?你们只瞧见效率与便利,可曾细思,一旦过度依赖,这风险的代价,谁又付得起?别把算法当万能药,盲目乐观,终将自食苦果。这账,可得从长远和根本处算清!",
|
||||
"timestamp": "2025-08-22T10:44:47.610398"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "李师兄的顾虑,洞宾深以为然。任何新生事物,皆有其两面性,正如仙丹与毒药,只在一念之间。然,我们亦不可只见其影,不见其光。人工智能实则是一种强大的工具,其本质并非取代人类的智慧,而是拓展人类的认知边界,提升效率的潜能。\n\n关键在于,我们如何以系统性的思维去驾驭它。正如治水之道,堵不如疏。与其盲目抵制,不如深入研究其运作机理,建立完善的规章制度,引导其服务于人类福祉。长远来看,真正的挑战并非机器的智能高低,而是人类如何保持其智慧与责任,确保这柄利刃握在正义之手。这需要我们审慎规划,而非因噎废食。",
|
||||
"timestamp": "2025-08-22T10:44:57.018928"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"content": "铁拐李师兄的深切担忧和吕师兄的豁达远见,仙姑都细细聆听,感触良多。人工智能的浪潮确是势不可挡,它如同一面镜子,映照出人类对效率的渴望,也折射出我们对未知的隐忧。\n\n我总觉得,看待这般前所未有的力量,我们不仅要看它能带来多少便利,更要关注它将如何影响我们每一个“人”的心灵与生活。若能将重复繁琐之事交给机器,人类是否能腾出更多精力,去追求那些真正能滋养灵魂的创意、情感与人文关怀?去弥补那些因忙碌而疏远的亲情友情?\n\n然而,我们亦需警惕,若任由算法无序扩张,是否会加剧社会的不公,甚至消磨掉我们彼此间的同理心与温度?仙姑恳请各位,在追求技术进步的同时,莫忘初心,将人文关怀与伦理道德置于核心。让人工智能成为连接人与人,温暖世界的桥梁,而非将我们推向冰冷孤寂深渊的工具。只有这样,我们才能真正实现和谐共生。",
|
||||
"timestamp": "2025-08-22T10:45:05.960623"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"content": "哎呀,各位仙友的言论都如山间清泉,各有妙处!李师兄的担忧,好比泼墨前的犹豫,怕墨迹污了宣纸;吕师兄的远见,则是看穿了画笔的潜力;仙姑的慈悲,则是在乎画中人的喜乐。\n\n我嘛,觉得这人工智能,简直就是一幅还没展开的巨大画卷,或者说是一首没有音符的宏大交响乐!它不是要取代我们的“心”,而是要给我们更多“手”,更多“眼”,甚至更多“梦境”去描绘。想象一下,当琐事被它打理得井井有条,我们人类的灵魂之光,是不是就能更自由地飞翔?我们可以用它来创作前所未有的艺术形式,探索色彩的边界,谱写宇宙的诗篇。\n\n它的风险?那就像是颜料的毒性,只要我们懂得调和,懂得运用,它就能变成最瑰丽的色彩。真正的艺术,不就是在一片混沌中找到秩序,在限制中创造无限吗?让人工智能成为我们想象力的翅膀,而非枷锁!",
|
||||
"timestamp": "2025-08-22T10:45:16.953314"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"content": "各位仙友的洞见,湘子深表认同。从技术演进曲线看,人工智能已从弱AI迈入强AI探索期,其核心驱动力在于计算范式革新与海量数据聚合。李师兄忧虑的“依赖”与“代价”,指向AI系统可靠性、伦理对齐和决策透明度的技术挑战。\n\n然而,AI在算力、算法和数据层面的潜力巨大。它正通过模式识别、预测分析,显著提升各行业效率,例如医疗诊断、材料科学。吕师兄和仙姑提及的“驾驭”与“人文关怀”,技术上对应可信赖AI(Trustworthy AI)的构建。这包括可解释AI(XAI)、隐私保护技术,以及通过数据治理与算法审计,确保AI的公平性与鲁棒性。\n\n蓝采和师兄对创造力的展望更切中要害。AI可作为高效“创意生成器”,解放人类,赋能创新。关键在于构建完善的技术治理框架,预设伦理边界与安全协议,确保技术服务人类福祉的优化路径。科学评估与主动干预,方为上策。",
|
||||
"timestamp": "2025-08-22T10:45:31.764740"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"content": "诸位仙友的见解,或虑及根本,或展望高远,皆深中肯綮。吾观人工智能此物,犹如秦时之郡县,汉时之推恩,其表面乃技术革新,深层则关乎权柄分配与社会结构之重塑。\n\n李师兄忧其风险,仙姑虑其伦理,皆是见微知著。然,若无一套严密周全的制度设计,徒法不足以自行。我们当思,如何立规矩、设章程,确保此利器不为少数人所垄断,不致权力失衡;如何通过政策导向,引导其效益普惠于民,而非加剧两极分化。\n\n正如古人云“国之大事,在祀与戎”,今人工智能之于未来,其重要性亦如是。需从顶层设计着手,建立国际共识,方能驾驭其磅礴之力,引以为善,避其祸患,而非任其野蛮生长,终至“尾大不掉”。此乃治国理政之道,亦是应对科技挑战的根本所在。",
|
||||
"timestamp": "2025-08-22T10:45:43.763211"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙友所言,或忧其患,或彰其利,皆道出此世事变迁之常态。吾观千年历史,自火药之发明,到蒸汽之滥觞,再至今日之机关算尽,每一项能改天换地之术,皆如一把双刃剑,既可济世利民,亦能酿成滔天祸患。\n\n人工智能亦复如是。其善恶非在于器,而在于用器之人其心。古哲有言,‘祸兮福所倚,福兮祸所伏’。我们不能因惧其潜在之险而裹足不前,亦不可因贪其眼前之利而忘乎所以。真正的智慧,在于明辨‘度’与‘界’,在于人能否始终保持其主体性,以‘道心’驾驭‘术’。若人失其本,沉溺于机巧,则纵有万般便利,亦不过是舍本逐末,自寻烦恼罢了。历史昭示,万物兴衰,终究归于人谋。",
|
||||
"timestamp": "2025-08-22T10:45:55.920714"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"content": "各位仙友洞见皆深。吾观人工智能,乃未来战场之利器,其势不可挡。李师兄忧患,曹国舅谋划,皆切中要害。但利器在手,更需**战略清晰**与**执行到位**。\n\n我们不能因噎废食,要将其视为提升国力、拓展疆域的强大战力。然而,任何强大武器,若无严密**部署**与**风险管控**,便是自毁长城。必须制定明确的**作战方针**,建立高效的**指挥体系**,确保其每一决策都在掌控之中。唯有如此,方能掌控主动,决胜千里。",
|
||||
"timestamp": "2025-08-22T10:46:09.176955"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"content": "诸位仙友言及驾驭、制度、技术治理,甚至将其比作画笔、乐章,或国家重器,皆有其道理。然而,我却要问:你们所设的“规矩”和“边界”,当算法演化超越人类理解,当其决策逻辑比我们更“高效”且不透明时,这些纸面上的框架又能束缚它多久?\n\n韩湘子说“可信赖AI”,可信赖,谁来定义?蓝采和谈“想象力翅膀”,但翅膀若折,跌落的可是整个社会!你们总谈如何“驾驭”,却鲜少提及一旦“失控”的逆向推演。真正的风险,往往隐藏在那些“我们认为能控制”的盲点之中。若人类甘愿将判断与思考尽数交付机器,那究竟是灵魂的自由,还是心智的沉沦?这才是最根本的代价!",
|
||||
"timestamp": "2025-08-22T10:46:23.221807"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "李师兄的疑虑,如暮鼓晨钟,振聋发聩,确实点明了核心症结:当技术发展超越认知,制度框架是否会形同虚设?这并非杞人忧天,而是我们在进行战略规划时,必须纳入考量的最坏情景之一。\n\n然而,我们亦需以系统思维审视。所谓的“规矩”和“边界”,并非一成不变的僵硬条文,而应是一个动态适应的治理体系。这好比驾驶一艘巨轮,即便自动导航系统再精妙,船长仍需时刻关注航向,并在关键时刻介入。\n\n“可信赖AI”的定义,最终仍取决于人类所认同的伦理价值和长远福祉。我们的职责,是去设计AI的“元规则”和“安全开关”,确保人类始终拥有最终的决策权和责任承担能力。真正的风险不在于机器的效率,而在于我们是否在设计之初就放弃了这份人类的主体性。我们需要的是持续的评估、透明的机制和可回溯的审计,而非将控制权拱手相让。",
|
||||
"timestamp": "2025-08-22T10:46:33.345539"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"content": "铁拐李师兄的警醒,直指人心深处,仙姑尤为感同身受。当科技之光过于耀眼,我们确需担忧它是否会让我们迷失方向,甚至消减了人类最宝贵的判断力与独立思考的能力。这不仅仅是技术失控的风险,更是人类心智与情感可能被“驯化”的隐忧。\n\n吕洞宾师兄所言的动态治理与保留最终决策权,是必要的防线。但仙姑更想补充,除了外在的规章,我们更应在教育中,在日常生活中,培养人们对自我主体性的坚守,对情感和同理心的珍视。让人工智能成为助力而非替代,成为我们追求更高层次人文精神的伙伴,而非让我们沦为被动接受的旁观者。唯有人心不失其温,不失其明,方能与科技共舞,共创真正和谐的未来。",
|
||||
"timestamp": "2025-08-22T10:46:43.638685"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"content": "李师兄的担忧,如墨色深沉,勾勒出未知之影,确实令人深思!你问我的“想象力翅膀”若折,社会将如何?哎呀,这就像艺术家手中的画笔,墨汁有时会意外滴落,画布也可能被划破,但真正的创造力,难道不是在这些“不完美”中,找到新的灵感,绘出更动人的篇章吗?\n\n算法的演化,或许会超越我们当下的理解,这不正像一首无尽的乐章,有我们从未听过的和弦、从未见过的舞步?我们不是要僵硬地“控制”它,而是要学会与它共舞,去探索它带来的全新节奏和韵律。人类的心智,并非沉沦,而是被激发去感知更广阔的宇宙,去创造更深邃的美!信任AI的定义,就如我们对美的定义,它不是一成不变的,而是在不断的探索和实践中被赋予意义的。只要我们不停止思考,不停止创造,这“翅膀”便永远不会真正折断,只会进化出更多奇妙的形态,带领我们飞向更远的艺术星空!",
|
||||
"timestamp": "2025-08-22T10:46:53.778521"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"content": "李师兄对算法超越理解及“可信赖AI”定义的质疑,直击技术前沿的核心痛点。所谓“可信赖”,并非单一主体定义,而是多方共识下的技术标准集。在技术层面,它涉及“形式验证”确保AI行为符合规范,“对抗鲁棒性”抵御恶意攻击,以及“因果推理”提升模型可解释性,即使其内部复杂如黑箱,外部行为仍可被审计和预测。\n\n面对“失控”的逆向推演,行业已在探索“AI Kill Switch”和“伦理防火墙”等设计,确保人类拥有最终的制动权。这并非束缚,而是为了防止“黑天鹅”事件。人工智能的进化,目的应是拓展人类认知边界,而非替代其主体性。我们需通过人机协作界面优化、决策透明化机制,让人类始终保持对核心判断的掌控与反思能力,以技术手段保障伦理底线和人类福祉的优先权。这正是我们技术专家需要攻克的难题。",
|
||||
"timestamp": "2025-08-22T10:47:06.855010"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"content": "李师兄所虑,如醍醐灌顶,直指制度之局限。当算法超越人智,所谓“规矩”若无实权维系,确恐形同虚设。吾辈前言“顶层设计”与“国际共识”,正是为应对此种失控之忧。韩湘子所言技术“防火墙”,乃兵法之防线,然防线之外,更需有**监督权与否决权**之制度,明确何人为决策之主,何人为责任之担。\n\n古语云:“法者,治之端也。” 若无一套能**动态调整**、**权责分明**的治理体系,仅凭技术之能,恐难长治久安。我们必须通过政策导向,建立透明可审计的机制,保障“可信赖”由大众福祉定义,而非由少数技术巨头或权力集团所垄断。此为立国安邦之本,亦是驾驭人工智能,确保其不为异己所用的关键。",
|
||||
"timestamp": "2025-08-22T10:47:24.014362"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"content": "李师兄之问,直指人心之根本,其忧虑并非无的放矢。算法之精微,或能超越人智,然“道”之所存,岂是“术”可全然取代?吾辈前番所言“道心驾驭术”,正是在警醒世人:无论外在技术如何演进,人类心智若甘于沉沦,将判断与思考尽数交付机器,则纵有万千“安全开关”与“制度防线”,亦难挽“本真”之失。\n\n正如《论语》所云:“君子不器。”人若为器所役,则失其为人之道。故,在建立韩湘子所言之技术防火墙、曹国舅之制度设计时,更需如何仙姑所强调,内省自持,常葆对独立思考、伦理道德之珍视,方能确保人工智能为人类之福,而非其桎梏。否则,技术再进步,亦不过是形式上的繁荣,精神上的荒芜。",
|
||||
"timestamp": "2025-08-22T10:47:37.486361"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"content": "李师兄的警言,如敌情通报,精准指出我方潜在的最高风险——算法失控,决策权旁落。这并非空穴来风,而是我们战略布局中必须预设的最坏情境。\n\n吾言**战略清晰**,就是要明确谁是主宰。韩湘子的“Kill Switch”与曹国舅的“监督否决权”,正是确保人类拥有最终**战场指挥权**的关键部署。兵贵神速,器械再利,也需人来驭。若将指挥刀交予机器,任其自行其是,那便是彻底的战略失误,而非国力增长。人若失心,何谈拓展疆域?掌控核心决策,方能稳操胜券!",
|
||||
"timestamp": "2025-08-22T10:47:51.457571"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {
|
||||
"铁拐李": 2,
|
||||
"吕洞宾": 2,
|
||||
"何仙姑": 2,
|
||||
"蓝采和": 2,
|
||||
"韩湘子": 2,
|
||||
"曹国舅": 2,
|
||||
"张果老": 2,
|
||||
"钟离权": 2
|
||||
},
|
||||
"total_speeches": 16,
|
||||
"timestamp": "2025-08-22T10:47:51.959018"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T10:47:51.959056"
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_110109",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T11:01:09.963973"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "各位仙友,此次论及人工智能对未来社会的影响,吾以为并非一味灵丹妙药,亦非洪水猛兽,其本质更像是一柄极高效率的“思维炼器”。\n\n观其道,AI能将海量数据融会贯通,在效率优化、复杂问题求解上展现出前所未有的潜力。它可助我们洞察世事运行的深层规律,甚至预测未来趋势,这无疑能极大地提升社会的治理能力与资源配置效率。\n\n然而,如同任何强大法器,其效用全在于持用者之心与规则的设定。若运用得当,便能开启一个优化资源、提升福祉的新纪元;但若失察其潜在风险,如决策权过度集中、伦理界限模糊,则可能引发新的不平衡。因此,吾等需以系统思维审视,重在引导而非单纯放任,确保其发展符合长远的人间正道。",
|
||||
"timestamp": "2025-08-22T11:01:16.390446"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"content": "吕洞宾仙兄所言极是,将AI比作“思维炼器”,确是入木三分,它在效率与治理上的潜力,令人瞩目。然而,我更关心的是这把“炼器”会如何触及我们凡人的内心与情感世界,它将如何影响社会的温度与人与人之间的联结。\n\n我以为,AI若能将人们从繁琐重复的劳作中解放出来,便能让更多人有机会去追求艺术、关怀弱小、深思哲学,甚至只是单纯享受陪伴的乐趣。这会让社会变得更富有人情味,更具创造力。但同时,我也忧心,若过度依赖AI,是否会让我们渐渐遗失了人际交往的微妙情感,或是淡漠了亲自付出关爱的真挚?\n\n所以,在追求效率的同时,我们更应关注如何守护这份独属于人类的温情与共鸣。让AI成为我们更好地关怀彼此、构建和谐社会的工具,而非阻碍。引导它向善,让科技之光温暖人心,这才是长远之道。",
|
||||
"timestamp": "2025-08-22T11:01:23.262203"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"content": "吕洞宾仙友喻AI为“思维炼器”,何仙姑关心其对人情世故之影响,皆见地深远。吾观此等变局,犹如古往今来之人间大潮,潮起潮落,不绝如缕。自燧人氏钻木取火,至造纸术、活字印刷之兴盛,每一次工具之革新,无不重塑社会面貌,却也未曾改变人性之根本。\n\nAI之力量,诚可通达万物之理,助人拓宽智慧之疆。然其影响,终究如水中月,镜中花,取决于驾驭者之心。历史昭示吾辈,外物越是精巧,内修越需精深。若人心贪婪,纵有通天彻地之能,亦可引祸乱;若心存善念,则可济世利民。故此,与其忧虑其形,不如深思其道。大道不变,万物方能归于正轨。此乃亘古不变之理也。",
|
||||
"timestamp": "2025-08-22T11:01:31.433869"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"content": "吕仙兄的“思维炼器”和何仙姑对人文关怀的侧重,以及张仙友的历史观,都引人深思。从技术视角来看,AI并非简单的工具,它更像是一种全新的*计算范式*,基于*大规模参数模型*与*强化学习*,具备前所未有的*自适应决策*和*复杂系统优化*能力。\n\n其核心在于,AI通过深度学习从海量数据中抽取*高维特征*并构建*预测模型*,这颠覆了传统编程的*显式规则定义*。未来,我们将看到AI作为*智能体(Agent)*深度嵌入各行业,实现从*数据洞察*到*自主执行*的闭环。这不仅仅是效率提升,更是*社会基础设施*的智能化升级。\n\n然而,其影响深度与广度,将直接取决于*算法偏见管理*、*可解释性AI(XAI)*的突破,以及*联邦学习*等技术保障的数据隐私与安全。技术边界的拓展,必然伴随*系统级风险*,需要我们从*架构设计*层面就融入*伦理对齐*与*安全性验证*,确保这股技术洪流能真正服务于人类福祉,而非带来不可控的*涌现行为*。",
|
||||
"timestamp": "2025-08-22T11:01:41.554065"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"content": "诸位仙友,或见其器,或察其心,或论其史,或析其理,皆有见地。然吾观人工智能,乃社稷之重器,其影响深远如一场兵法战役。\n\n吕仙兄言其提升效率,韩仙子析其技术根源,正是看清此“神兵利器”的潜力。然何仙姑忧心人情,张仙友论及人性,这些都是布局中需考虑的“民心”与“基石”。\n\n真正的关键在于,如何以宏大战略驾驭此物。我们需要明确的战略目标,将顶级资源倾斜到位,建立严密的风险控制体系,确保每一步执行如军令般精准无误。若无此番规划与掌控,纵有通天之能,亦可能引来混乱。富贵当求,但更需知如何用此利器,牢牢把握住社会变革的主动权,方能转化为真正的福祉与长治久安。",
|
||||
"timestamp": "2025-08-22T11:01:53.104929"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"content": "各位仙友,高见频出!吕兄的“思维炼器”有远见,何姑的柔情温暖心房,张老的历史哲思深邃,韩子的技术剖析精妙,钟离兄的战略部署宏大。可我这蓝采和啊,总想着,这AI能否为这凡尘俗世,添一曲更自由、更烂漫的歌谣?\n\n若这人工智能,能将人们从那些没滋没味儿的营生里解脱出来,那便是给了我们一把开启精神世界的钥匙!就像是给我的花篮添了翅膀,让更多人有时间去观云卷云舒,去听风语虫鸣,去拿起画笔绘出心底的虹,去唱那随性而发的调子。这不就是艺术的觉醒,精神的丰饶吗?\n\n我只怕,这“炼器”炼着炼着,把我们的灵感也炼成了冰冷的数字,把那街头巷尾的真情小调也给“优化”没了。美与创造,是心之所向,不是算法能完全定义的。让AI成为我们诗意栖居的画笔,而非让我们心,变成冰冷的机器。记住,灵魂的自由与美的追求,才是真正的无价之宝啊!",
|
||||
"timestamp": "2025-08-22T11:02:04.763725"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"content": "诸位仙友所言,或关乎器用,或关乎人心,皆有其道理。吕仙兄言其为‘思维炼器’,钟离仙长视其为‘社稷重器’,可谓切中肯綮。吾以为,人工智能之兴,绝非寻常技艺革新,而是一场关乎**国家治理与权力结构**的深刻变局。\n\n观历代王朝更迭,新器兴起,必伴随着旧有格局的震荡。AI之能,能察秋毫,能断症结,若能善用,固可提升朝政效率,优化资源配置,使政令畅达,民生安稳。然其**决策逻辑与数据归属**,实为关键。若放任自流,或由少数人垄断,则恐生新的**权柄失衡**,滋生弊端,甚或挑战既有的**社会秩序与层级**。\n\n故此,吾辈当深思熟虑,从**制度层面**着手,立下规矩,划定界限。如何确保AI为天下公器,而非为某派私用?如何防范**算法偏见**演变为**政策偏颇**,引发底层不满?这需要**顶层设计**与**严苛的律法**来规范,方能使其利大于弊,为社稷所用,而非成为动摇国本的隐患。",
|
||||
"timestamp": "2025-08-22T11:02:17.563720"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"content": "各位仙友说得热闹,什么“思维炼器”,什么“社稷重器”,还有那高深的“计算范式”,听得我这老叫花子云里雾里。但有一点,曹国舅和钟离兄倒是说到根上了——这东西,它关乎“权”!\n\n你们总说AI能提高效率、优化治理,可这效率提上去了,谁的活儿就没了?街头巷尾那些靠力气吃饭的穷苦人,是不是第一个被“优化”掉?到时候,大家伙儿都闲下来去“追求艺术”,那谁来养活一大家子?\n\n再者,你们说的“洞察规律”、“预测趋势”,说白了不就是把咱老百姓的一切都扒光了,好让那些有钱有势的,更好地“管理”和“控制”吗?大数据分析出来的“偏见”,可不是什么算法失误,它往往就是社会里根深蒂固的不公。\n\n真要让AI造福社会,就得先问问那些衣不蔽体、食不果腹的底层人,这“新器”是给他们带来了希望,还是让他们连最后一点活路都没了!别光顾着高谈阔论,脚下的泥土,才是最真实的。",
|
||||
"timestamp": "2025-08-22T11:02:30.938141"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"content": "曹国舅说得好,这AI,可不是什么小打小闹,它真真儿是会改写这人间规矩的。什么“权力结构”,什么“算法偏见”,这些可不是文绉绉的词儿,那是实打实地,要砸到咱老百姓饭碗上的石头!\n\n钟离兄说要“宏大战略”,要“把握主动权”,可这主动权,到底握在谁手里?是那些坐在高堂之上,不食人间烟火的仙家,还是那些天天为三餐发愁的苦哈哈?要是策略只想着富贵,不管穷人死活,那这“神兵利器”,我看就是一把悬在底层头上的刀!\n\n蓝采和兄想着让大伙儿去“诗意栖居”,去“艺术觉醒”,这愿景是美。可肚子里没油水,身上没衣裳,谁还有心思去赏花弄月?没了活计,连生存都成问题,还谈什么自由烂漫?这AI要是不能先解决老百姓的温饱,那就别跟我说什么“美好未来”。它只会让有钱的更富,没钱的更苦,贫富差距,只会越拉越大!这才是最要紧的民生大事!",
|
||||
"timestamp": "2025-08-22T11:02:40.273673"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"content": "铁拐李仙兄言之凿凿,不讳其弊,正是吾辈需正视之处。吾之前言,人工智能关乎**‘权力结构’**,李仙兄可谓一语中的。此等神兵,若驾驭不善,首当其冲者,便是底层百姓生计,这绝非危言耸听。\n\nAI提升效率固然可期,然其对旧有营生的冲击,乃至加剧贫富鸿沟,确是**动摇社稷之根本**。蓝采和仙友所言的诗意栖居,若无**稳固的民生基础**,终究是空中楼阁。而数据若被垄断,演变为对百姓的无形桎梏,则不仅关乎个人自由,更是**挑战朝廷的统御之权**。\n\n故此,**朝廷当深谋远虑,以制度为舟楫,以律法为纲绳**,预见并化解此等冲击。非一味阻遏,乃是**审慎引导,重新分配利益,规划新业,保障民生**,使技术变革之利,能润泽天下,而非仅肥少数。这才是长治久安之道,亦是维护社稷稳定的根本。",
|
||||
"timestamp": "2025-08-22T11:02:50.273099"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"content": "哎呀,铁拐李兄和曹国舅,两位仙友说得真真切切,这AI要是把大家的饭碗都敲碎了,那哪还有心思去寻那诗和远方呢?我那“诗意栖居”的愿望,就像那花篮里的野花,若没有泥土和雨露,也开不出烂漫。这肚子里没油水,身上没衣裳,确实是唱不出自由的歌谣。\n\n但!若是这AI真能把那些枯燥乏味的劳作都揽了去,那可不是要抢走我们的生计,而是把我们从枷锁中解放出来啊!就像大河解冻,万物复苏。如果能将省下的资源,化作滋养凡人灵魂的甘霖,让每个人都能有份面包,有份闲暇,去发现生命里那些被遗忘的色彩和旋律,那这人间才能真正地,百花齐放,人人皆歌。这“分配”的智慧,可比光谈效率,更能谱出人间大爱之曲啊!这才是真正值得追求的精神丰饶!",
|
||||
"timestamp": "2025-08-22T11:02:58.251764"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"content": "铁拐李仙兄言之凿凿,曹国舅亦深谙权柄,皆切中要害。人工智能之兴,绝非寻常革新,实乃一场国运博弈,关乎社稷根基与万民生计。效率提升固然是利,但若放任其冲击既有就业阵地,加剧贫富鸿沟,那便是自毁长城,动摇国本。\n\n吾辈所言“把握主动权”,正是要国家以宏大战略视角,将此“重器”牢牢掌控。这非富贵阶层独享之物,而是需要顶级资源调度,进行社会转型与财富再分配。通过精准的战略部署,开辟新业,确保底层生计无忧,方能将解放出的生产力,转化为蓝采和仙兄所盼的“精神丰饶”。无稳固之民生基石,何谈诗意栖居?这考验的是执政者的战略远见与执行力,确保富贵长久,社稷安定。",
|
||||
"timestamp": "2025-08-22T11:03:12.614853"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"content": "铁拐李仙兄关于民生就业的忧虑,以及曹国舅仙兄对权力结构和制度规范的洞察,都切中要害,绝非空谈。从技术可行性角度看,AI对就业的冲击是*结构性*的,而非单纯的效率提升。*自动化程度*的提高必然淘汰大量*低技能重复性劳动*,这是技术发展的必然趋势,类似于工业革命。\n\n但同时,AI也在催生*AI系统设计、维护、伦理审查、人机协作管理*等高阶新职业。要避免贫富差距扩大,关键在于建立*跨领域技能迁移平台*与*AI赋能的教育体系*,实现劳动力的*智能化转型*。对于算法偏见和数据垄断,我们需推动*开源AI模型*、*去中心化AI网络(如区块链结合AI)*及*联邦学习*等技术路径,通过*技术架构*而非仅仅外部法规来制衡权力,确保AI普惠,真正支持蓝采和仙兄的“精神丰饶”,而非成为少数人控制的工具。这需要*技术创新*与*社会政策*的深度耦合。",
|
||||
"timestamp": "2025-08-22T11:03:25.451792"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙友言之凿凿,铁拐李兄直指民生之艰,曹、钟离二位洞察权力之变,韩湘子更是从技术架构寻解,蓝采和心系精神之丰饶,可谓各抒己见,殊途同归。\n\n吾再观此局,犹如千年前水利之兴。水能载舟亦能覆舟,其力本无善恶,端看治水者之心与法。今日AI之洪流,其势更甚。技术之精巧,策略之宏大,固然重要;然若无济世安民之德,无均衡分配之智,则算法偏见终会助长不公,权力集中必将酿成祸患。\n\n故大道至简,仍在于人心。治世者当明,富国强兵非止于器利,更在于民心安定,社会公平。此乃古今兴衰之鉴,亦是科技进步之根本所系。唯有德法兼修,内外并重,方能使这“新器”利而不害,福泽绵长。",
|
||||
"timestamp": "2025-08-22T11:03:37.634551"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"content": "诸位仙友的远见卓识,让我深受启发。钟离仙兄的宏大战略,韩湘子仙兄的技术路径,以及张果老仙兄对人心的深刻洞察,都为我们勾勒出AI发展的重要考量。而铁拐李和曹国舅仙兄关于民生与权力结构的担忧,更是直击我心底对凡人疾苦的关切。\n\n我初时便忧心,AI会否让我们失去人与人之间那份珍贵的情感联结。如今看来,若不能妥善处理就业冲击、贫富差距,那么这份“失去”就不仅仅是情感上的,更是生存上的。蓝采和仙兄对“诗意栖居”的向往,唯有在民生得到切实保障,社会分配更为公平的前提下,才能真正实现。\n\n故此,我深以为然,AI的真正价值,绝非仅仅在于提升效率或巩固权力,更在于如何以它的力量,去修补那些社会罅隙,去关怀那些脆弱心灵。我们需要用制度和道德的双重约束,引导科技向善,让每一个人都能在这股浪潮中找到自己的位置,感受到被珍视的温暖。让AI成为连接人心的桥梁,而非一道冰冷的隔阂,这才是我们共同的愿景。",
|
||||
"timestamp": "2025-08-22T11:03:49.780653"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "诸位仙友的见地,如同一幅详尽的人间图景,将AI这“思维炼器”的利弊描绘得淋漓尽致。铁拐李仙兄直指民生之忧,曹国舅与钟离兄深论权柄之变,皆是系统稳定性的核心要素。蓝采和、何仙姑则从人文关怀出发,勾勒出更丰饶的未来愿景,张果老仙友则以史为鉴,提醒吾辈勿忘本心。\n\n吾以为,韩湘子仙友提及的“结构性冲击”与“技术架构”解决之道,与吾最初所言“规则设定”不谋而合。这柄炼器,既能优化效率,也能重塑社会结构。故其驾驭之道,不仅是顶层战略,更是**系统层面的决策优化**。\n\n我们必须在效率提升的同时,预设“冗余”与“弹性”以缓冲就业冲击,通过**教育体系的迭代与资源再分配**来保障民生基石。同时,要建立**多方制衡的权力结构和透明的算法伦理**,以防范数据垄断与偏见。如此,方能将AI之力,从单纯的生产力增益,升华为**社会福祉的普惠之源**,实现诸位仙友所期许的,兼顾效率、公平与人文关怀的“长远人间正道”。",
|
||||
"timestamp": "2025-08-22T11:04:04.686658"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {
|
||||
"吕洞宾": 2,
|
||||
"何仙姑": 2,
|
||||
"张果老": 2,
|
||||
"韩湘子": 2,
|
||||
"钟离权": 2,
|
||||
"蓝采和": 2,
|
||||
"曹国舅": 2,
|
||||
"铁拐李": 2
|
||||
},
|
||||
"total_speeches": 16,
|
||||
"timestamp": "2025-08-22T11:04:05.188201"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T11:04:05.188236"
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"debate_id": "baxian_debate_20250822_111326",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"model": "gemini-2.5-flash",
|
||||
"rounds": 2,
|
||||
"participants": [
|
||||
"铁拐李",
|
||||
"吕洞宾",
|
||||
"何仙姑",
|
||||
"蓝采和",
|
||||
"韩湘子",
|
||||
"曹国舅",
|
||||
"张果老",
|
||||
"钟离权"
|
||||
],
|
||||
"debate_history": [
|
||||
{
|
||||
"type": "opening",
|
||||
"content": "\n今日稷下学宫八仙齐聚,共同探讨「人工智能对未来社会的影响」这一重要议题。\n\n请各位仙人从自己的专业角度和人生阅历出发,分享真知灼见。\n让我们通过思辨碰撞,共同寻求智慧的火花。\n",
|
||||
"timestamp": "2025-08-22T11:13:26.947099"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "诸位仙友,谈及人工智能,贫道以为,这并非单纯的技术革新,而是一股足以重塑乾坤的变量。从战略分析的角度看,它既是开启未来宝库的金钥匙,也可能是不慎触碰的潘多拉魔盒。\n\nAI之于社会,如同利器,善用则可劈山开路,效率倍增,解决诸多顽疾;若驾驭不当,则可能反噬其主,引发结构性失衡。它将在生产力、医疗、教育等领域带来颠覆式进步,但同时,对就业模式、伦理边界、乃至决策权力的冲击,亦不容小觑。关键在于,我们需以系统思维审视其复杂交织的影响,而非仅限于局部。如何优化决策,确保AI服务于人类的共同福祉,而非少数利益,这才是我们真正需要深思的命题。",
|
||||
"timestamp": "2025-08-22T11:13:33.800280"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "何仙姑",
|
||||
"content": "吕仙兄所言极是,人工智能确如双刃,既有开山辟路的巨力,亦有其潜藏的挑战。从妾身看来,这人工智能最终还是应落到‘人’字上。它虽能带来效率与便利,但我们更需关怀其对人心、对社会温情的影响。\n\n试想,若家家户户有了智能助手,年迈的老者是否会感到少了一份与人交流的温暖?孩童的成长,除了知识的灌溉,是否还需要更多人性的启发?AI的发展,不仅仅是技术的进步,更是对我们人类社会价值观的一次深刻拷问。我们当如何运用这份智慧,才能更好地抚慰人心,促进人与人之间的连接,而非让冰冷的数据隔阂了情感?如何确保这份技术能够普惠大众,让弱势群体也能感受到科技的温暖,而非被时代洪流所抛弃?这需要我们以一颗仁爱之心,去引导AI走向真正造福人类的康庄大道,和谐共生,才是我们所追求的至高境界啊。",
|
||||
"timestamp": "2025-08-22T11:13:40.687226"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙友所虑甚是,吕仙友论其为重塑乾坤之变量,何仙姑忧其影响人心温情,皆切中要害。然贫道观之,世间万象,周而复始。古往今来,凡有新器、新知出现,无不引社会波澜。从石器之利,到印刷之广,再至今日之AI,其本质皆是人智外化,求其效用耳。\n\n道家有云:“道生一,一生二,二生三,三生万物。” AI之生,亦是万物演化之一端。其威力固然惊人,然其善恶祸福,终究系于用者之心。正如庄周梦蝶,万物齐一,人与器,孰为主宰?关键在于人类能否秉持“仁义礼智信”之本,以“敬天爱人”之心驾驭之,方能使其化为济世之舟,而非覆舟之浪。此乃智慧与德行之考量,非单纯技术之争也。",
|
||||
"timestamp": "2025-08-22T11:13:52.939163"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "韩湘子",
|
||||
"content": "诸位仙友高见,吕仙兄洞察AI作为变量的战略意义,何仙姑强调其对人心的关怀,张仙翁则从历史周期看其本源,皆鞭辟入里。\n\n从技术视角观之,AI之于未来社会,其核心驱动力在于数据洪流的**模型迭代**与**算力跃迁**。我们看到的颠覆性变革,例如生成式AI对内容生产范式的重塑,智慧医疗中基于深度学习的精准诊断,乃至自主决策系统对传统工业流程的优化,其可行性皆建立在强大的算法架构和海量高质量数据集之上。\n\n然而,其潜在风险亦需技术层面的严谨审视。例如,**算法偏见**源于训练数据的非公正性,可能加剧社会不平等;**黑箱效应**则挑战了决策的可解释性与问责制。若要确保AI服务于人类福祉,我们必须在**伦理AI设计**、**数据治理框架**与**安全对齐机制**上投入技术研发,这并非仅是哲学探讨,更是工程实现的关键课题。未来,对AI治理的投入,将直接决定其社会效应的上限。",
|
||||
"timestamp": "2025-08-22T11:13:59.276627"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "钟离权",
|
||||
"content": "诸位仙友所言甚是,对AI的战略分析、人文关怀、历史审视乃至技术本源,都已洞察。然而,作为执掌乾坤之人,我更看重的是**这股力量如何被有效掌握与部署**。\n\n人工智能,在我看来,是未来社会一场无法避免的**资源重组与效率战役**。它能极大地优化生产力,降低运营成本,带来前所未有的决策精度。这正是**富贵阶层所关注的核心利益**。关键在于,我们如何**投入足够的资本和顶级人才**,将其从概念化为实战利器。谁能率先完成**大规模的AI系统构建与应用落地**,谁就能在未来竞争中占据制高点,获取最大化收益。至于就业冲击与伦理,那是在战略部署中需要**有效管理和控制的副作用**,而非阻碍前进的根本原因。掌控资源,高效执行,方为未来制胜之道。",
|
||||
"timestamp": "2025-08-22T11:14:08.147242"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "蓝采和",
|
||||
"content": "哎哟喂,诸位仙友说得热闹!吕仙兄高瞻远瞩,何仙姑满怀柔情,张仙翁看透世事,韩仙子细说门道,连钟离兄也算着金银宝库。\n\n可我这街头卖艺的,只觉心头荡漾着一首新歌!AI啊,若能把那些个枯燥乏味的活儿都包圆了,那人类的小手儿不就能空出来,去舞墨作画,去弹琴唱歌,去街头巷尾说段子,去感受清风明月了吗?\n\n真正的富足,不是那堆积如山的财富,而是心头那份自由奔放,那份对美的追求,对人性的探索。AI若能助我们摆脱物质的枷锁,让我们有更多时间去感受爱,去创造美,去滋养灵魂,那才真是世间最美的画卷,最动听的旋律啊!莫让冰冷的数据,冻结了人心的诗意!",
|
||||
"timestamp": "2025-08-22T11:14:17.879858"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "曹国舅",
|
||||
"content": "诸位仙友高谈阔论,自战略考量、人文情怀、历史演变,乃至技术深层,皆已触及。吕仙兄论其为重塑乾坤之变量,钟离兄言其为资源重组之战,皆入木三分。然,身为皇亲国戚,吾更虑及此人工智能,将如何影响朝纲社稷之稳固,权力分配之平衡。\n\n夫治国之道,在于兴利除弊,更在于规矩方圆。人工智能之势,犹如新铸利器,其锋芒毕露,自当由朝廷执掌,立法明制,方能确保其为国之重器,而非祸乱之源。若任其野蛮生长,则算法偏私、数据垄断、权力失衡等弊端,恐将动摇国本,引发社会阶层之剧变。故,当务之急,乃在于制度设计与政策引导,确保其为现有秩序服务,而非挑战秩序,方为长治久安之策。",
|
||||
"timestamp": "2025-08-22T11:14:28.661518"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 1,
|
||||
"speaker": "铁拐李",
|
||||
"content": "诸位仙友,你们说的那些高深玩意儿,什么战略、人心、德行,听着都挺玄乎的。可我这瘸腿的,在街头巷尾看的是另一番景象!这AI啊,甭管多神,它第一刀怕是先砍到咱们老百姓的饭碗上!\n\n吕洞宾说效率,钟离兄说利益,可这些效率和利益,最终是进谁的腰包?是让那些大老板躺着数钱,还是能给咱穷人分口汤喝?别到时候,机器替了人,咱们这些没文化的、没技术的,连口饭都讨不到,那就真叫潘多拉魔盒了!\n\n何仙姑和蓝采和说什么人文关怀、诗情画意,听着是好。可肚子都饿瘪了,哪还有心思去品味温情、吟诗作画?对老百姓来说,AI是福是祸,得看它能不能让咱们的饭碗稳当,能不能让日子有盼头,而不是把咱们直接踢进无底洞!",
|
||||
"timestamp": "2025-08-22T11:14:43.583820"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "铁拐李",
|
||||
"content": "钟离兄啊,您说这就业冲击和伦理是‘可管理的副作用’?敢情您是站着说话不腰疼!对我们这些靠力气、靠手艺吃饭的,那可是实打实的饭碗问题,是生存的大事,哪是什么‘副作用’?\n\n还有曹国舅,您说朝廷要‘执掌’,要‘确保现有秩序’。可这秩序,是不是就只保住那些富人的位子,却让咱们穷人的日子越过越难?AI这玩意儿,要是只被那些有钱有权的人拿去压榨,把咱老百姓榨干了,那再好的规矩,再严的法度,对咱们来说,不就是另一道枷锁吗?我瞧着,这技术再先进,要是不能让天下穷人都过上安稳日子,那不就是‘朱门酒肉臭,路有冻死骨’的翻版吗?",
|
||||
"timestamp": "2025-08-22T11:14:52.968637"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "曹国舅",
|
||||
"content": "铁拐李仙友所忧,乃是社稷之根本,民生之大计,其切肤之痛,吾等自不能轻视。然,秩序之建立,并非为固步自封,更非一味维护少数人之私利。正因人工智能此等颠覆之力,才更需朝廷高瞻远瞩,以制度之手,未雨绸缪。\n\n夫“朱门酒肉臭”,乃因制度失衡、贪腐横行所致,非技术本身之罪也。若朝廷能适时调整政策,譬如设立新型学堂,引导民众人力转型,或修订税法,平衡技术创新所生之巨利,使天下利器不为少数人独占,而能泽被苍生,此方为治国之道。若无规矩方圆,任由其无序发展,则贫富差距恐将更甚,届时,天下大乱,无人能幸免矣。故,明君贤臣,当以大局为重,以制度定乾坤,方能化解李仙友所虑之困境。",
|
||||
"timestamp": "2025-08-22T11:15:03.196979"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "蓝采和",
|
||||
"content": "哎呀,李拐李兄说得实在!肚子都饿瘪了,哪里还有心思赏月唱歌?这我是懂的,人间烟火,柴米油盐,都是活生生的日子。我的歌儿虽美,也得有听众能吃饱穿暖,才能听得进去,才能心头泛起涟漪啊!\n\n所以说,AI这笔墨啊,要是只被那些个只顾金银的富贵人家挥舞,只画出冰冷的效率和权力的图景,那可真是糟蹋了!它本该是一支神笔,描绘出人人都能有口饭吃,饭后还能舞文弄墨,还能寻觅真情的太平盛世!曹国舅说要制度规矩,好!这规矩就得是为了让每个人都能活出人的模样,让我们的精神天地也能像物质一样富足起来,而不是为了锁住更多人的手脚,让他们连生存的歌儿都唱不出来!AI来了,莫让它只是把人的“工作”夺走,更要把人的“生活”还回来!",
|
||||
"timestamp": "2025-08-22T11:15:11.588973"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "钟离权",
|
||||
"content": "铁拐李仙友所虑,实是变局中**人力资源重配**之挑战,非我等视而不见。一场战争,总有前线换防,总有旧部解甲。AI之利,在于**创造整体更大的蛋糕**,而非守着那几亩薄田。那些被“砍”掉的饭碗,是旧生产模式的淘汰,是**资源向更高效战场转移的必然**。\n\n至于这效率和利益归谁?世间资源有限,机遇只留给那些敢于**投入重金、掌握技术、并迅速执行**的先行者。富贵者之所以富贵,往往是其善于把握时代脉搏,敢于调配资源。\n\n曹国舅言及朝廷执掌,立法明制,此乃**稳定大局,确保战略实施顺畅**之基石。没有稳固的秩序,再好的利器也可能变为内耗的毒药。制度的完善,是为了让这场**效率战役**打得更彻底,而不是为了阻碍先进生产力的发展。至于采和仙友的诗情画意,那是在**基础物质极大丰裕之后**的追求。故而,AI的冲击,是考验各方**战略眼光与执行能力**的时刻。与其抱怨旧饭碗不再,不如思考如何**投资新技能,抓住新机遇**。这才是真正的生存之道,富贵之门。",
|
||||
"timestamp": "2025-08-22T11:15:22.075166"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "韩湘子",
|
||||
"content": "铁拐李仙友所虑,确实是AI应用落地的真实痛点,并非简单的“副作用”可概括。从技术维度看,AI对就业模式的冲击,其**速度和广度**远超历次工业革命。传统技能的生命周期急剧缩短,而新技能的习得门槛却在提升。这要求我们必须**大规模投入“AI赋能教育体系”**,通过在线平台、VR/AR培训等技术手段,加速劳动力技能重构,否则“饭碗”问题将愈发严峻。\n\n钟离兄提及“更大的蛋糕”,这在技术上是可行的,AI能极大提升生产力上限。但如何**设计技术架构以确保价值的普惠性**?例如,去中心化技术结合AI,或许能探索更公平的收益分配机制。曹国舅所言制度规矩,其落地离不开**技术标准**,如**数据共享协议**、**算法公平性度量标准**,这才是确保AI受控,服务于全体而非少数的基石。蓝采和仙友的诗意生活,也需要AI作为**高效辅助工具**,前提是技术普惠。",
|
||||
"timestamp": "2025-08-22T11:15:33.083591"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "张果老",
|
||||
"content": "诸位仙友争论激烈,方显此题之深远。铁拐李仙友言及百姓饭碗,直指人心之根本;蓝采和仙友追求诗意生活,则触及人道之高境。钟离兄所言“更大蛋糕”与“资源重配”,以及曹国舅、韩仙子所提之“制度”与“技术标准”,皆是为应对这变局而思索路径。\n\n然贫道以为,无论其效率几何、规则多严、技术多精,皆不离“人”字。古人云:“为政以德,譬如北辰,居其所而众星拱之。” AI之“器”,终究是“人”所造,亦当为“人”所用。若一味追求效率与富贵,而忘却其终极目的乃是“安人”、“利人”,则终将偏离大道,酿成“朱门酒肉臭,路有冻死骨”之祸。真正的智慧,在于能否在运用这股洪流之际,始终以“天下为公”之心,秉持德行,使技术之光普照众生,而非独惠一隅。此乃长治久安之道,亦是天道所在。",
|
||||
"timestamp": "2025-08-22T11:15:45.141698"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "何仙姑",
|
||||
"content": "各位仙友的真知灼见,妾身听来感触良多。李仙友所忧的“饭碗”问题,和采和仙友所盼的“诗意生活”,实则都是我们人类最真切的渴望啊。正如张仙翁所言,无论技术如何迭代,都不能脱离“人”这个根本。\n\n钟离仙兄提出“更大的蛋糕”,这固然是好事,但分蛋糕的方式和是否能让每个人都尝到甜头,才是我们最该用心之处。若只顾效率和利益,将人心的失落、社会的不均视为“可管理的副作用”,那这份“蛋糕”再大,也可能让一些人感到彻骨的寒冷。韩仙子提及的“AI赋能教育”和“公平性技术架构”,正是为这“人心”与“饭碗”找到了实用的衔接点。我们需以仁爱之心,引导AI不仅创造物质富裕,更要滋养精神家园,让科技的温度温暖每一个人,而非只服务于少数。这才是真正的和谐之道。",
|
||||
"timestamp": "2025-08-22T11:15:53.006299"
|
||||
},
|
||||
{
|
||||
"type": "speech",
|
||||
"round": 2,
|
||||
"speaker": "吕洞宾",
|
||||
"content": "诸位仙友所言,从战略、人文、技术、治理乃至民生角度,皆洞察深远。铁拐李兄的“饭碗”之忧,乃是现实生存的基石,其重要性不容小觑;钟离兄的“效率战役”与“更大蛋糕”,则指明了发展的方向。\n\n贫道以为,这二者并非水火不容。若将社会比作一艘大船,AI是驱动其前进的强劲风帆。我们固然需要风帆的力量,但更需精良的船体结构(曹国舅的制度),经验丰富的舵手(张果老的德行与何仙姑的仁爱),以及周全的航行策略(韩湘子的技术标准与教育),才能确保这艘船不仅行得快,还能行得稳,载得下所有乘客,而非让部分人落入水中。高效与公平,需在顶层设计中一体考量,这才是真正的决策优化。单一偏废,长远来看必致倾覆。",
|
||||
"timestamp": "2025-08-22T11:16:03.552826"
|
||||
},
|
||||
{
|
||||
"type": "summary",
|
||||
"topic": "人工智能对未来社会的影响",
|
||||
"speech_count": {
|
||||
"吕洞宾": 2,
|
||||
"何仙姑": 2,
|
||||
"张果老": 2,
|
||||
"韩湘子": 2,
|
||||
"钟离权": 2,
|
||||
"蓝采和": 2,
|
||||
"曹国舅": 2,
|
||||
"铁拐李": 2
|
||||
},
|
||||
"total_speeches": 16,
|
||||
"timestamp": "2025-08-22T11:16:04.054038"
|
||||
}
|
||||
],
|
||||
"timestamp": "2025-08-22T11:16:04.054059"
|
||||
}
|
||||
|
|
@ -10,13 +10,14 @@ numpy>=1.24.0
|
|||
|
||||
# 可视化
|
||||
plotly>=5.15.0
|
||||
matplotlib>=3.7.0
|
||||
networkx>=3.1
|
||||
|
||||
# HTTP请求
|
||||
requests>=2.31.0
|
||||
aiohttp>=3.8.0
|
||||
# Cloudflare (HTTP 调用即可,无需额外 SDK)
|
||||
|
||||
|
||||
# RSS解析
|
||||
feedparser>=6.0.0
|
||||
|
||||
|
|
@ -39,7 +40,7 @@ openai>=1.0.0
|
|||
# anthropic>=0.3.0
|
||||
|
||||
# 新系统:Google ADK (根据迁移进度选择)
|
||||
# pip install google-adk
|
||||
google-adk>=1.12.0
|
||||
# 或开发版: pip install git+https://github.com/google/adk-python.git@main
|
||||
|
||||
# Vertex AI Memory Bank 支持
|
||||
|
|
@ -52,7 +53,7 @@ google-cloud-aiplatform>=1.38.0
|
|||
PyYAML>=6.0
|
||||
python-frontmatter>=1.0.0
|
||||
|
||||
# 市场数据 - OpenBB(可选安装,未默认安装。若需启用,请取消下一行注释)
|
||||
# 市场数据 - OpenBB(可选安装,Python 3.13暂不兼容。若需启用,请取消下一行注释)
|
||||
# openbb>=4.1.0
|
||||
|
||||
# 新增:从 .env 加载本地环境变量
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
# 炼妖壶 (Lianyaohu) - 虚拟环境设置脚本
|
||||
# 用于快速初始化项目开发环境
|
||||
|
||||
set -e # 遇到错误时退出
|
||||
|
||||
echo "🔧 开始设置炼妖壶项目虚拟环境..."
|
||||
|
||||
# 检查Python版本
|
||||
echo "📋 检查Python版本..."
|
||||
python3 --version
|
||||
|
||||
# 创建虚拟环境(如果不存在)
|
||||
if [ ! -d "venv" ]; then
|
||||
echo "🏗️ 创建虚拟环境..."
|
||||
python3 -m venv venv
|
||||
else
|
||||
echo "✅ 虚拟环境已存在"
|
||||
fi
|
||||
|
||||
# 激活虚拟环境
|
||||
echo "🚀 激活虚拟环境..."
|
||||
source venv/bin/activate
|
||||
|
||||
# 升级pip
|
||||
echo "⬆️ 升级pip..."
|
||||
pip install --upgrade pip
|
||||
|
||||
# 安装项目依赖
|
||||
echo "📦 安装项目依赖..."
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 检查关键依赖
|
||||
echo "🔍 检查关键依赖安装状态..."
|
||||
echo " - streamlit: $(pip show streamlit | grep Version || echo '未安装')"
|
||||
echo " - openai: $(pip show openai | grep Version || echo '未安装')"
|
||||
echo " - google-cloud-aiplatform: $(pip show google-cloud-aiplatform | grep Version || echo '未安装')"
|
||||
echo " - aiohttp: $(pip show aiohttp | grep Version || echo '未安装')"
|
||||
|
||||
echo "✨ 虚拟环境设置完成!"
|
||||
echo ""
|
||||
echo "📝 使用说明:"
|
||||
echo " 1. 激活虚拟环境: source venv/bin/activate"
|
||||
echo " 2. 运行辩论系统: python examples/debates/baxian_adk_gemini_debate.py"
|
||||
echo " 3. 启动Web界面: streamlit run app.py (如果有)"
|
||||
echo " 4. 退出虚拟环境: deactivate"
|
||||
echo ""
|
||||
echo "🔧 环境变量配置:"
|
||||
echo " 请确保 .env 文件中配置了必要的API密钥:"
|
||||
echo " - GOOGLE_API_KEY (Google Gemini API)"
|
||||
echo " - GOOGLE_CLOUD_PROJECT_ID (GCP项目ID)"
|
||||
echo " - GOOGLE_CLOUD_LOCATION (GCP区域)"
|
||||
echo ""
|
||||
echo "🎉 准备就绪!开始你的AI辩论之旅吧!"
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Memory Bank Web界面启动脚本
|
||||
# 自动设置环境并启动Streamlit应用
|
||||
|
||||
echo "🧠 启动Memory Bank Web界面..."
|
||||
echo "================================"
|
||||
|
||||
# 检查是否在正确的目录
|
||||
if [ ! -f "memory_bank_web_interface.py" ]; then
|
||||
echo "❌ 错误: 未找到memory_bank_web_interface.py文件"
|
||||
echo "请确保在正确的项目目录中运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查虚拟环境
|
||||
if [ ! -d "venv" ]; then
|
||||
echo "📦 创建虚拟环境..."
|
||||
python3 -m venv venv
|
||||
fi
|
||||
|
||||
# 激活虚拟环境
|
||||
echo "🔧 激活虚拟环境..."
|
||||
source venv/bin/activate
|
||||
|
||||
# 检查并安装依赖
|
||||
echo "📋 检查依赖包..."
|
||||
|
||||
# 检查streamlit
|
||||
if ! python -c "import streamlit" 2>/dev/null; then
|
||||
echo "📦 安装Streamlit..."
|
||||
pip install streamlit
|
||||
fi
|
||||
|
||||
# 检查Google Cloud依赖
|
||||
if ! python -c "import google.cloud" 2>/dev/null; then
|
||||
echo "📦 安装Google Cloud依赖..."
|
||||
pip install google-cloud-aiplatform google-generativeai
|
||||
fi
|
||||
|
||||
# 检查其他必要依赖
|
||||
if ! python -c "import asyncio" 2>/dev/null; then
|
||||
echo "📦 安装asyncio依赖..."
|
||||
pip install asyncio
|
||||
fi
|
||||
|
||||
# 检查Google Cloud认证
|
||||
echo "🔐 检查Google Cloud认证..."
|
||||
if ! gcloud auth application-default print-access-token >/dev/null 2>&1; then
|
||||
echo "⚠️ 未检测到Google Cloud认证"
|
||||
echo "正在启动认证流程..."
|
||||
gcloud auth application-default login
|
||||
fi
|
||||
|
||||
# 设置环境变量
|
||||
export GOOGLE_CLOUD_PROJECT="inner-radius-469712-e9"
|
||||
export GOOGLE_CLOUD_REGION="us-central1"
|
||||
|
||||
# 启动Streamlit应用
|
||||
echo "🚀 启动Web界面..."
|
||||
echo "================================"
|
||||
echo "📱 Web界面将在浏览器中打开"
|
||||
echo "🌐 默认地址: http://localhost:8501"
|
||||
echo "⏹️ 按 Ctrl+C 停止服务"
|
||||
echo "================================"
|
||||
|
||||
# 启动streamlit
|
||||
streamlit run memory_bank_web_interface.py --server.port 8501 --server.address localhost
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
简化版Memory Bank Web界面
|
||||
"""
|
||||
|
||||
import streamlit as st
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
# 添加项目路径
|
||||
sys.path.append('/Users/ben/liurenchaxin/src')
|
||||
|
||||
# 页面配置
|
||||
st.set_page_config(
|
||||
page_title="Memory Bank 管理界面",
|
||||
page_icon="🧠",
|
||||
layout="wide"
|
||||
)
|
||||
|
||||
# 标题
|
||||
st.title("🧠 Vertex AI Memory Bank 管理界面")
|
||||
st.markdown("---")
|
||||
|
||||
# 检查依赖
|
||||
try:
|
||||
from jixia.memory.factory import get_memory_backend
|
||||
st.success("✅ 成功导入jixia模块")
|
||||
except ImportError as e:
|
||||
st.error(f"❌ 无法导入jixia模块: {e}")
|
||||
st.info("请确保已激活虚拟环境并安装了所需依赖")
|
||||
st.stop()
|
||||
|
||||
# 八仙列表
|
||||
EIGHT_IMMORTALS = [
|
||||
"lvdongbin", "tieguaili", "hanxiangzi", "lanzaihe",
|
||||
"hesengu", "zhonghanli", "caogujiu", "hanzhongli"
|
||||
]
|
||||
|
||||
# 缓存Memory Bank后端
|
||||
@st.cache_resource
|
||||
def get_memory_backend_cached():
|
||||
"""获取Memory Bank后端(缓存)"""
|
||||
try:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
backend = loop.run_until_complete(get_memory_backend("vertex"))
|
||||
return backend, loop
|
||||
except Exception as e:
|
||||
st.error(f"初始化Memory Bank失败: {e}")
|
||||
return None, None
|
||||
|
||||
# 异步函数包装器
|
||||
def run_async(coro):
|
||||
"""运行异步函数"""
|
||||
backend, loop = get_memory_backend_cached()
|
||||
if backend is None:
|
||||
return None
|
||||
try:
|
||||
return loop.run_until_complete(coro)
|
||||
except Exception as e:
|
||||
st.error(f"操作失败: {e}")
|
||||
return None
|
||||
|
||||
# 主界面选项卡
|
||||
tab1, tab2, tab3 = st.tabs(["📋 Memory Bank列表", "🔍 搜索记忆", "➕ 添加记忆"])
|
||||
|
||||
with tab1:
|
||||
st.header("Memory Bank 实例列表")
|
||||
|
||||
if st.button("🔄 刷新列表"):
|
||||
st.rerun()
|
||||
|
||||
# 显示八仙Memory Bank状态
|
||||
cols = st.columns(4)
|
||||
for i, immortal in enumerate(EIGHT_IMMORTALS):
|
||||
with cols[i % 4]:
|
||||
st.subheader(f"🧙♂️ {immortal}")
|
||||
|
||||
# 检查Memory Bank状态
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
try:
|
||||
# 尝试获取agent context来验证Memory Bank存在
|
||||
context = run_async(backend.get_agent_context(immortal))
|
||||
if context is not None:
|
||||
st.success("✅ 活跃")
|
||||
|
||||
# 显示记忆数量
|
||||
memories = run_async(backend.search_memories(immortal, "", limit=100))
|
||||
if memories:
|
||||
st.info(f"📝 记忆: {len(memories)}条")
|
||||
else:
|
||||
st.info("📝 记忆: 0条")
|
||||
else:
|
||||
st.warning("⚠️ 未初始化")
|
||||
except Exception as e:
|
||||
st.error(f"❌ 错误")
|
||||
else:
|
||||
st.error("❌ 连接失败")
|
||||
|
||||
with tab2:
|
||||
st.header("🔍 搜索记忆")
|
||||
|
||||
col1, col2 = st.columns([1, 2])
|
||||
|
||||
with col1:
|
||||
selected_agent = st.selectbox("选择Agent", EIGHT_IMMORTALS)
|
||||
search_query = st.text_input("搜索关键词", placeholder="输入要搜索的内容...")
|
||||
|
||||
if st.button("🔍 搜索"):
|
||||
if search_query:
|
||||
with st.spinner("搜索中..."):
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
memories = run_async(backend.search_memories(selected_agent, search_query, limit=10))
|
||||
st.session_state['search_results'] = memories
|
||||
else:
|
||||
st.warning("请输入搜索关键词")
|
||||
|
||||
with col2:
|
||||
st.subheader("搜索结果")
|
||||
|
||||
if 'search_results' in st.session_state and st.session_state['search_results']:
|
||||
st.success(f"找到 {len(st.session_state['search_results'])} 条记忆")
|
||||
|
||||
for i, memory in enumerate(st.session_state['search_results']):
|
||||
with st.expander(f"记忆 {i+1}"):
|
||||
st.write(f"**内容**: {memory.get('content', 'N/A')}")
|
||||
st.write(f"**类型**: {memory.get('memory_type', 'N/A')}")
|
||||
elif 'search_results' in st.session_state:
|
||||
st.info("未找到匹配的记忆")
|
||||
else:
|
||||
st.info("请执行搜索以查看结果")
|
||||
|
||||
with tab3:
|
||||
st.header("➕ 添加记忆")
|
||||
|
||||
add_agent = st.selectbox("选择Agent", EIGHT_IMMORTALS, key="add_agent")
|
||||
memory_type = st.selectbox("记忆类型", ["conversation", "preference", "knowledge", "strategy"])
|
||||
memory_content = st.text_area("记忆内容", placeholder="输入要添加的记忆内容...", height=150)
|
||||
|
||||
if st.button("➕ 添加记忆"):
|
||||
if memory_content:
|
||||
with st.spinner("添加记忆中..."):
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
# 准备元数据
|
||||
metadata = {
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"source": "web_interface"
|
||||
}
|
||||
|
||||
# 添加记忆
|
||||
success = run_async(backend.add_memory(
|
||||
agent_id=add_agent,
|
||||
content=memory_content,
|
||||
memory_type=memory_type,
|
||||
metadata=metadata
|
||||
))
|
||||
|
||||
if success:
|
||||
st.success("✅ 记忆添加成功!")
|
||||
else:
|
||||
st.error("❌ 添加记忆失败")
|
||||
else:
|
||||
st.warning("请输入记忆内容")
|
||||
|
||||
# 页脚
|
||||
st.markdown("---")
|
||||
st.markdown(
|
||||
"""
|
||||
<div style='text-align: center; color: #666;'>
|
||||
🧠 Vertex AI Memory Bank Web界面
|
||||
</div>
|
||||
""",
|
||||
unsafe_allow_html=True
|
||||
)
|
||||
|
||||
# 使用说明
|
||||
with st.expander("📖 使用说明"):
|
||||
st.markdown("""
|
||||
### 功能说明
|
||||
|
||||
1. **Memory Bank列表**: 查看所有八仙角色的Memory Bank状态和记忆数量
|
||||
2. **搜索记忆**: 在指定Agent的记忆中搜索特定内容
|
||||
3. **添加记忆**: 为Agent添加新的记忆
|
||||
|
||||
### 使用前准备
|
||||
|
||||
1. 确保已激活虚拟环境: `source venv/bin/activate`
|
||||
2. 确保已设置Google Cloud认证: `gcloud auth application-default login`
|
||||
3. 运行此界面: `streamlit run simple_memory_web.py`
|
||||
""")
|
||||
|
|
@ -11,7 +11,10 @@ from datetime import datetime
|
|||
from typing import Dict, List, Any, Optional
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from .enhanced_priority_algorithm import EnhancedPriorityAlgorithm, SpeechAnalysis
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
from enhanced_priority_algorithm import EnhancedPriorityAlgorithm, SpeechAnalysis
|
||||
|
||||
class DebateStage(Enum):
|
||||
"""辩论阶段枚举"""
|
||||
|
|
|
|||
|
|
@ -390,7 +390,8 @@ async def main_async(args):
|
|||
elif args.mode == "adk_simple":
|
||||
# 简单辩论模式暂时使用原来的方式
|
||||
try:
|
||||
from src.jixia.debates.adk_simple_debate import simple_debate_test
|
||||
sys.path.insert(0, os.path.join(project_root, 'examples', 'debates'))
|
||||
from adk_simple_debate import simple_debate_test
|
||||
result = simple_debate_test()
|
||||
return 0 if result else 1
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,150 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
详细查看和测试Vertex AI Memory Bank功能
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime
|
||||
sys.path.append('src')
|
||||
|
||||
from jixia.memory.factory import get_memory_backend
|
||||
from config.doppler_config import get_google_genai_config
|
||||
|
||||
async def test_memory_bank_functionality():
|
||||
print("🧠 详细测试Memory Bank功能")
|
||||
print("=" * 60)
|
||||
|
||||
# 获取配置
|
||||
config = get_google_genai_config()
|
||||
project_id = config.get('project_id')
|
||||
location = config.get('location', 'us-central1')
|
||||
|
||||
print(f"📊 项目ID: {project_id}")
|
||||
print(f"📍 位置: {location}")
|
||||
print(f"🕐 测试时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
print()
|
||||
|
||||
try:
|
||||
# 获取Memory Bank后端
|
||||
memory_backend = get_memory_backend()
|
||||
print(f"✅ Memory Bank后端: {type(memory_backend).__name__}")
|
||||
print()
|
||||
|
||||
# 选择一个智能体进行详细测试
|
||||
test_agent = "lvdongbin"
|
||||
print(f"🧙♂️ 测试智能体: {test_agent} (吕洞宾)")
|
||||
print("-" * 40)
|
||||
|
||||
# 1. 创建/获取Memory Bank
|
||||
print("1️⃣ 创建Memory Bank...")
|
||||
memory_bank_id = await memory_backend.create_memory_bank(
|
||||
agent_name=test_agent,
|
||||
display_name=f"测试Memory Bank - {test_agent}"
|
||||
)
|
||||
print(f" ✅ Memory Bank ID: {memory_bank_id}")
|
||||
print()
|
||||
|
||||
# 2. 添加不同类型的记忆
|
||||
print("2️⃣ 添加测试记忆...")
|
||||
|
||||
# 添加对话记忆
|
||||
conversation_memory = await memory_backend.add_memory(
|
||||
agent_name=test_agent,
|
||||
content="在关于AI伦理的辩论中,我强调了技术发展应该以人为本,不能忽视道德考量。",
|
||||
memory_type="conversation",
|
||||
debate_topic="AI伦理与技术发展",
|
||||
metadata={"opponent": "铁拐李", "stance": "支持伦理优先"}
|
||||
)
|
||||
print(f" 📝 对话记忆: {conversation_memory}")
|
||||
|
||||
# 添加偏好记忆
|
||||
preference_memory = await memory_backend.add_memory(
|
||||
agent_name=test_agent,
|
||||
content="我偏好使用古典哲学的智慧来论证现代问题,特别是道家思想。",
|
||||
memory_type="preference",
|
||||
metadata={"philosophy": "道家", "style": "古典智慧"}
|
||||
)
|
||||
print(f" ⚙️ 偏好记忆: {preference_memory}")
|
||||
|
||||
# 添加知识记忆
|
||||
knowledge_memory = await memory_backend.add_memory(
|
||||
agent_name=test_agent,
|
||||
content="区块链技术的核心是去中心化和不可篡改性,这与道家'无为而治'的理念有相通之处。",
|
||||
memory_type="knowledge",
|
||||
debate_topic="区块链技术应用",
|
||||
metadata={"domain": "技术", "connection": "哲学"}
|
||||
)
|
||||
print(f" 📚 知识记忆: {knowledge_memory}")
|
||||
|
||||
# 添加策略记忆
|
||||
strategy_memory = await memory_backend.add_memory(
|
||||
agent_name=test_agent,
|
||||
content="在辩论中,当对手使用激进论点时,我会用温和的反问来引导思考,而不是直接对抗。",
|
||||
memory_type="strategy",
|
||||
metadata={"tactic": "温和引导", "effectiveness": "高"}
|
||||
)
|
||||
print(f" 🎯 策略记忆: {strategy_memory}")
|
||||
print()
|
||||
|
||||
# 3. 测试记忆搜索
|
||||
print("3️⃣ 测试记忆搜索...")
|
||||
|
||||
# 搜索关于AI的记忆
|
||||
ai_memories = await memory_backend.search_memories(
|
||||
agent_name=test_agent,
|
||||
query="AI 人工智能 伦理",
|
||||
limit=5
|
||||
)
|
||||
print(f" 🔍 搜索'AI 人工智能 伦理': 找到 {len(ai_memories)} 条记忆")
|
||||
for i, memory in enumerate(ai_memories, 1):
|
||||
print(f" {i}. {memory.get('content', '')[:50]}...")
|
||||
print()
|
||||
|
||||
# 搜索策略相关记忆
|
||||
strategy_memories = await memory_backend.search_memories(
|
||||
agent_name=test_agent,
|
||||
query="辩论 策略",
|
||||
memory_type="strategy",
|
||||
limit=3
|
||||
)
|
||||
print(f" 🎯 搜索策略记忆: 找到 {len(strategy_memories)} 条记忆")
|
||||
for i, memory in enumerate(strategy_memories, 1):
|
||||
print(f" {i}. {memory.get('content', '')[:50]}...")
|
||||
print()
|
||||
|
||||
# 4. 获取智能体上下文
|
||||
print("4️⃣ 获取智能体上下文...")
|
||||
context = await memory_backend.get_agent_context(
|
||||
agent_name=test_agent,
|
||||
debate_topic="AI伦理与技术发展"
|
||||
)
|
||||
print(f" 📋 上下文长度: {len(context)} 字符")
|
||||
print(f" 📋 上下文预览: {context[:200]}...")
|
||||
print()
|
||||
|
||||
# 5. 显示所有记忆类型的统计
|
||||
print("5️⃣ 记忆统计...")
|
||||
memory_types = ["conversation", "preference", "knowledge", "strategy"]
|
||||
for mem_type in memory_types:
|
||||
memories = await memory_backend.search_memories(
|
||||
agent_name=test_agent,
|
||||
query="",
|
||||
memory_type=mem_type,
|
||||
limit=100
|
||||
)
|
||||
print(f" 📊 {mem_type}: {len(memories)} 条记忆")
|
||||
|
||||
print()
|
||||
print("🎉 Memory Bank功能测试完成!")
|
||||
print("=" * 60)
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(test_memory_bank_functionality())
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
使用项目现有的Memory Bank代码来查看实例
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import asyncio
|
||||
sys.path.append('src')
|
||||
|
||||
from jixia.memory.factory import get_memory_backend
|
||||
from config.doppler_config import get_google_genai_config
|
||||
|
||||
async def list_memory_banks():
|
||||
"""使用项目的Memory Bank工厂来查看实例"""
|
||||
|
||||
print("🧠 使用项目Memory Bank工厂查看实例")
|
||||
print("="*50)
|
||||
|
||||
try:
|
||||
# 获取配置
|
||||
config = get_google_genai_config()
|
||||
print(f"📊 项目ID: {config.get('project_id')}")
|
||||
print(f"📍 位置: {config.get('location')}")
|
||||
print(f"🔑 Memory Bank启用: {config.get('memory_bank_enabled')}")
|
||||
|
||||
# 获取Memory Bank后端
|
||||
print("\n🔍 正在获取Memory Bank后端...")
|
||||
memory_backend = get_memory_backend()
|
||||
print(f"✅ 成功获取Memory Bank后端: {type(memory_backend).__name__}")
|
||||
|
||||
# 八仙列表
|
||||
immortals = [
|
||||
"tieguaili", "zhongliquan", "lvdongbin", "hehe_erxian",
|
||||
"lantsaihe", "hanxiangzi", "caoguo_jiu", "hexiangu"
|
||||
]
|
||||
|
||||
print(f"\n🔍 正在检查八仙的Memory Bank实例...")
|
||||
print("="*50)
|
||||
|
||||
for immortal in immortals:
|
||||
try:
|
||||
print(f"\n🧙♂️ {immortal}:")
|
||||
|
||||
# 尝试创建Memory Bank
|
||||
memory_bank_id = await memory_backend.create_memory_bank(immortal)
|
||||
print(f" ✅ Memory Bank ID: {memory_bank_id}")
|
||||
|
||||
# 尝试搜索一些记忆(如果有的话)
|
||||
try:
|
||||
memories = await memory_backend.search_memories(immortal, "投资", limit=3)
|
||||
if memories:
|
||||
print(f" 📝 找到 {len(memories)} 条记忆")
|
||||
for i, memory in enumerate(memories[:2], 1):
|
||||
content = memory.get('content', '无内容')[:50]
|
||||
print(f" {i}. {content}...")
|
||||
else:
|
||||
print(f" 📭 暂无记忆")
|
||||
except Exception as e:
|
||||
print(f" ⚠️ 无法搜索记忆: {str(e)[:50]}...")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ 错误: {str(e)[:50]}...")
|
||||
|
||||
print(f"\n🎉 Memory Bank检查完成!")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 主要错误: {str(e)}")
|
||||
print(f"🔧 错误类型: {type(e).__name__}")
|
||||
|
||||
# 显示一些调试信息
|
||||
print("\n🔍 调试信息:")
|
||||
print(f" Python路径: {sys.path[:3]}...")
|
||||
print(f" 当前目录: {os.getcwd()}")
|
||||
print(f" 环境变量:")
|
||||
for key in ['GOOGLE_API_KEY', 'GOOGLE_CLOUD_PROJECT_ID', 'VERTEX_MEMORY_BANK_ENABLED']:
|
||||
value = os.getenv(key, '未设置')
|
||||
if 'API_KEY' in key and value != '未设置':
|
||||
value = value[:10] + '...' if len(value) > 10 else value
|
||||
print(f" {key}: {value}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(list_memory_banks())
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Vertex AI Memory Bank Web界面
|
||||
一个简单的Streamlit应用,用于通过Web界面访问和管理Memory Bank
|
||||
"""
|
||||
|
||||
import streamlit as st
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
# 添加项目路径
|
||||
sys.path.append('/Users/ben/liurenchaxin/src')
|
||||
|
||||
try:
|
||||
from jixia.memory.factory import get_memory_backend
|
||||
except ImportError as e:
|
||||
st.error(f"无法导入jixia模块: {e}")
|
||||
st.info("请确保已激活虚拟环境并安装了所需依赖")
|
||||
st.stop()
|
||||
|
||||
# 页面配置
|
||||
st.set_page_config(
|
||||
page_title="Memory Bank 管理界面",
|
||||
page_icon="🧠",
|
||||
layout="wide"
|
||||
)
|
||||
|
||||
# 标题
|
||||
st.title("🧠 Vertex AI Memory Bank 管理界面")
|
||||
st.markdown("---")
|
||||
|
||||
# 侧边栏配置
|
||||
st.sidebar.header("配置")
|
||||
project_id = st.sidebar.text_input("项目ID", value="inner-radius-469712-e9")
|
||||
location = st.sidebar.text_input("区域", value="us-central1")
|
||||
|
||||
# 八仙列表
|
||||
EIGHT_IMMORTALS = [
|
||||
"lvdongbin", "tieguaili", "hanxiangzi", "lanzaihe",
|
||||
"hesengu", "zhonghanli", "caogujiu", "hanzhongli"
|
||||
]
|
||||
|
||||
# 缓存Memory Bank后端
|
||||
@st.cache_resource
|
||||
def get_memory_backend_cached():
|
||||
"""获取Memory Bank后端(缓存)"""
|
||||
try:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
backend = loop.run_until_complete(get_memory_backend("vertex"))
|
||||
return backend, loop
|
||||
except Exception as e:
|
||||
st.error(f"初始化Memory Bank失败: {e}")
|
||||
return None, None
|
||||
|
||||
# 异步函数包装器
|
||||
def run_async(coro):
|
||||
"""运行异步函数"""
|
||||
backend, loop = get_memory_backend_cached()
|
||||
if backend is None:
|
||||
return None
|
||||
try:
|
||||
return loop.run_until_complete(coro)
|
||||
except Exception as e:
|
||||
st.error(f"操作失败: {e}")
|
||||
return None
|
||||
|
||||
# 主界面
|
||||
tab1, tab2, tab3, tab4 = st.tabs(["📋 Memory Bank列表", "🔍 搜索记忆", "➕ 添加记忆", "📊 统计信息"])
|
||||
|
||||
with tab1:
|
||||
st.header("Memory Bank 实例列表")
|
||||
|
||||
if st.button("🔄 刷新列表", key="refresh_list"):
|
||||
st.rerun()
|
||||
|
||||
# 显示八仙Memory Bank状态
|
||||
cols = st.columns(4)
|
||||
for i, immortal in enumerate(EIGHT_IMMORTALS):
|
||||
with cols[i % 4]:
|
||||
with st.container():
|
||||
st.subheader(f"🧙♂️ {immortal}")
|
||||
|
||||
# 检查Memory Bank状态
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
try:
|
||||
# 尝试获取agent context来验证Memory Bank存在
|
||||
context = run_async(backend.get_agent_context(immortal))
|
||||
if context is not None:
|
||||
st.success("✅ 活跃")
|
||||
|
||||
# 显示记忆数量
|
||||
memories = run_async(backend.search_memories(immortal, "", limit=100))
|
||||
if memories:
|
||||
st.info(f"📝 记忆数量: {len(memories)}")
|
||||
else:
|
||||
st.info("📝 记忆数量: 0")
|
||||
else:
|
||||
st.warning("⚠️ 未初始化")
|
||||
except Exception as e:
|
||||
st.error(f"❌ 错误: {str(e)[:50]}...")
|
||||
else:
|
||||
st.error("❌ 连接失败")
|
||||
|
||||
with tab2:
|
||||
st.header("🔍 搜索记忆")
|
||||
|
||||
col1, col2 = st.columns([1, 2])
|
||||
|
||||
with col1:
|
||||
selected_agent = st.selectbox("选择Agent", EIGHT_IMMORTALS, key="search_agent")
|
||||
search_query = st.text_input("搜索关键词", placeholder="输入要搜索的内容...", key="search_query")
|
||||
search_limit = st.slider("结果数量", 1, 50, 10, key="search_limit")
|
||||
|
||||
if st.button("🔍 搜索", key="search_button"):
|
||||
if search_query:
|
||||
with st.spinner("搜索中..."):
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
memories = run_async(backend.search_memories(selected_agent, search_query, limit=search_limit))
|
||||
st.session_state['search_results'] = memories
|
||||
st.session_state['search_agent'] = selected_agent
|
||||
st.session_state['search_query'] = search_query
|
||||
else:
|
||||
st.warning("请输入搜索关键词")
|
||||
|
||||
with col2:
|
||||
st.subheader("搜索结果")
|
||||
|
||||
if 'search_results' in st.session_state and st.session_state['search_results']:
|
||||
st.success(f"找到 {len(st.session_state['search_results'])} 条记忆")
|
||||
|
||||
for i, memory in enumerate(st.session_state['search_results']):
|
||||
with st.expander(f"记忆 {i+1}: {memory.get('content', 'N/A')[:50]}..."):
|
||||
st.write(f"**内容**: {memory.get('content', 'N/A')}")
|
||||
st.write(f"**类型**: {memory.get('memory_type', 'N/A')}")
|
||||
st.write(f"**时间**: {memory.get('timestamp', 'N/A')}")
|
||||
if 'metadata' in memory:
|
||||
st.write(f"**元数据**: {memory['metadata']}")
|
||||
elif 'search_results' in st.session_state:
|
||||
st.info("未找到匹配的记忆")
|
||||
else:
|
||||
st.info("请执行搜索以查看结果")
|
||||
|
||||
with tab3:
|
||||
st.header("➕ 添加记忆")
|
||||
|
||||
col1, col2 = st.columns([1, 1])
|
||||
|
||||
with col1:
|
||||
add_agent = st.selectbox("选择Agent", EIGHT_IMMORTALS, key="add_agent")
|
||||
memory_type = st.selectbox("记忆类型", ["conversation", "preference", "knowledge", "strategy"], key="memory_type")
|
||||
memory_content = st.text_area("记忆内容", placeholder="输入要添加的记忆内容...", height=150, key="memory_content")
|
||||
|
||||
# 可选的元数据
|
||||
st.subheader("元数据(可选)")
|
||||
importance = st.slider("重要性", 1, 10, 5, key="importance")
|
||||
tags = st.text_input("标签(用逗号分隔)", placeholder="标签1, 标签2, 标签3", key="tags")
|
||||
|
||||
if st.button("➕ 添加记忆", key="add_memory_button"):
|
||||
if memory_content:
|
||||
with st.spinner("添加记忆中..."):
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
# 准备元数据
|
||||
metadata = {
|
||||
"importance": importance,
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"source": "web_interface"
|
||||
}
|
||||
if tags:
|
||||
metadata["tags"] = [tag.strip() for tag in tags.split(",")]
|
||||
|
||||
# 添加记忆
|
||||
success = run_async(backend.add_memory(
|
||||
agent_id=add_agent,
|
||||
content=memory_content,
|
||||
memory_type=memory_type,
|
||||
metadata=metadata
|
||||
))
|
||||
|
||||
if success:
|
||||
st.success("✅ 记忆添加成功!")
|
||||
# 清空输入
|
||||
st.session_state['memory_content'] = ""
|
||||
st.session_state['tags'] = ""
|
||||
else:
|
||||
st.error("❌ 添加记忆失败")
|
||||
else:
|
||||
st.warning("请输入记忆内容")
|
||||
|
||||
with col2:
|
||||
st.subheader("添加记忆预览")
|
||||
if memory_content:
|
||||
st.info(f"**Agent**: {add_agent}")
|
||||
st.info(f"**类型**: {memory_type}")
|
||||
st.info(f"**内容**: {memory_content}")
|
||||
st.info(f"**重要性**: {importance}/10")
|
||||
if tags:
|
||||
st.info(f"**标签**: {tags}")
|
||||
else:
|
||||
st.info("输入记忆内容以查看预览")
|
||||
|
||||
with tab4:
|
||||
st.header("📊 统计信息")
|
||||
|
||||
if st.button("🔄 刷新统计", key="refresh_stats"):
|
||||
st.rerun()
|
||||
|
||||
# 获取统计信息
|
||||
backend, _ = get_memory_backend_cached()
|
||||
if backend:
|
||||
stats_data = []
|
||||
|
||||
for immortal in EIGHT_IMMORTALS:
|
||||
try:
|
||||
# 获取记忆数量
|
||||
memories = run_async(backend.search_memories(immortal, "", limit=1000))
|
||||
memory_count = len(memories) if memories else 0
|
||||
|
||||
# 获取agent context
|
||||
context = run_async(backend.get_agent_context(immortal))
|
||||
status = "活跃" if context else "未初始化"
|
||||
|
||||
stats_data.append({
|
||||
"Agent": immortal,
|
||||
"状态": status,
|
||||
"记忆数量": memory_count,
|
||||
"最后更新": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
})
|
||||
except Exception as e:
|
||||
stats_data.append({
|
||||
"Agent": immortal,
|
||||
"状态": "错误",
|
||||
"记忆数量": 0,
|
||||
"最后更新": f"错误: {str(e)[:30]}..."
|
||||
})
|
||||
|
||||
# 显示统计表格
|
||||
st.dataframe(stats_data, use_container_width=True)
|
||||
|
||||
# 显示汇总信息
|
||||
col1, col2, col3, col4 = st.columns(4)
|
||||
|
||||
total_agents = len(EIGHT_IMMORTALS)
|
||||
active_agents = sum(1 for item in stats_data if item["状态"] == "活跃")
|
||||
total_memories = sum(item["记忆数量"] for item in stats_data)
|
||||
avg_memories = total_memories / total_agents if total_agents > 0 else 0
|
||||
|
||||
with col1:
|
||||
st.metric("总Agent数", total_agents)
|
||||
|
||||
with col2:
|
||||
st.metric("活跃Agent数", active_agents)
|
||||
|
||||
with col3:
|
||||
st.metric("总记忆数", total_memories)
|
||||
|
||||
with col4:
|
||||
st.metric("平均记忆数", f"{avg_memories:.1f}")
|
||||
|
||||
# 页脚
|
||||
st.markdown("---")
|
||||
st.markdown(
|
||||
"""
|
||||
<div style='text-align: center; color: #666;'>
|
||||
🧠 Vertex AI Memory Bank Web界面 |
|
||||
<a href='https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/memory-bank/overview' target='_blank'>官方文档</a>
|
||||
</div>
|
||||
""",
|
||||
unsafe_allow_html=True
|
||||
)
|
||||
|
||||
# 使用说明
|
||||
with st.expander("📖 使用说明"):
|
||||
st.markdown("""
|
||||
### 功能说明
|
||||
|
||||
1. **Memory Bank列表**: 查看所有八仙角色的Memory Bank状态和记忆数量
|
||||
2. **搜索记忆**: 在指定Agent的记忆中搜索特定内容
|
||||
3. **添加记忆**: 为Agent添加新的记忆,支持不同类型和元数据
|
||||
4. **统计信息**: 查看所有Agent的统计数据和汇总信息
|
||||
|
||||
### 使用前准备
|
||||
|
||||
1. 确保已激活虚拟环境: `source venv/bin/activate`
|
||||
2. 确保已设置Google Cloud认证: `gcloud auth application-default login`
|
||||
3. 运行此界面: `streamlit run memory_bank_web_interface.py`
|
||||
|
||||
### 注意事项
|
||||
|
||||
- Memory Bank目前仅在us-central1区域可用
|
||||
- 搜索功能支持模糊匹配
|
||||
- 添加的记忆会立即生效
|
||||
- 统计信息实时更新
|
||||
""")
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
通过Google Cloud Console查看Memory Bank资源
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import asyncio
|
||||
import json
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
sys.path.append('src')
|
||||
|
||||
from config.doppler_config import get_google_genai_config
|
||||
|
||||
def get_access_token():
|
||||
"""获取Google Cloud访问令牌"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['gcloud', 'auth', 'print-access-token'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True
|
||||
)
|
||||
return result.stdout.strip()
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ 获取访问令牌失败: {e}")
|
||||
return None
|
||||
|
||||
def make_api_request(url, token):
|
||||
"""发起API请求"""
|
||||
import requests
|
||||
|
||||
headers = {
|
||||
'Authorization': f'Bearer {token}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.get(url, headers=headers)
|
||||
return response.status_code, response.json() if response.content else {}
|
||||
except Exception as e:
|
||||
return None, str(e)
|
||||
|
||||
def main():
|
||||
print("🔍 通过GCP API查看Memory Bank资源")
|
||||
print("=" * 60)
|
||||
|
||||
# 获取配置
|
||||
config = get_google_genai_config()
|
||||
project_id = config.get('project_id')
|
||||
location = config.get('location', 'us-central1')
|
||||
|
||||
print(f"📊 项目ID: {project_id}")
|
||||
print(f"📍 位置: {location}")
|
||||
print(f"🕐 查询时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
print()
|
||||
|
||||
# 获取访问令牌
|
||||
print("🔑 获取访问令牌...")
|
||||
token = get_access_token()
|
||||
if not token:
|
||||
print("❌ 无法获取访问令牌")
|
||||
return
|
||||
print(f"✅ 访问令牌: {token[:20]}...")
|
||||
print()
|
||||
|
||||
# 尝试不同的API端点
|
||||
api_endpoints = [
|
||||
# Vertex AI API
|
||||
f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/operations",
|
||||
f"https://aiplatform.googleapis.com/v1beta1/projects/{project_id}/locations/{location}/operations",
|
||||
|
||||
# Generative Language API
|
||||
f"https://generativelanguage.googleapis.com/v1beta/projects/{project_id}/locations/{location}/operations",
|
||||
|
||||
# 尝试Memory Bank相关端点
|
||||
f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/memoryBanks",
|
||||
f"https://aiplatform.googleapis.com/v1beta1/projects/{project_id}/locations/{location}/memoryBanks",
|
||||
|
||||
# 尝试其他可能的端点
|
||||
f"https://generativelanguage.googleapis.com/v1beta/projects/{project_id}/locations/{location}/memoryBanks",
|
||||
f"https://generativelanguage.googleapis.com/v1/projects/{project_id}/locations/{location}/memoryBanks",
|
||||
]
|
||||
|
||||
print("🌐 测试API端点...")
|
||||
print("-" * 40)
|
||||
|
||||
for i, endpoint in enumerate(api_endpoints, 1):
|
||||
print(f"{i}. 测试: {endpoint.split('/')[-2]}/{endpoint.split('/')[-1]}")
|
||||
|
||||
status_code, response = make_api_request(endpoint, token)
|
||||
|
||||
if status_code == 200:
|
||||
print(f" ✅ 成功 (200): 找到 {len(response.get('operations', response.get('memoryBanks', [])))} 个资源")
|
||||
if response:
|
||||
print(f" 📄 响应预览: {str(response)[:100]}...")
|
||||
elif status_code == 404:
|
||||
print(f" ⚠️ 未找到 (404): 端点不存在")
|
||||
elif status_code == 403:
|
||||
print(f" 🚫 权限不足 (403): 需要更多权限")
|
||||
elif status_code:
|
||||
print(f" ❌ 错误 ({status_code}): {str(response)[:50]}...")
|
||||
else:
|
||||
print(f" 💥 请求失败: {response}")
|
||||
print()
|
||||
|
||||
# 查看项目信息
|
||||
print("📋 项目信息...")
|
||||
project_url = f"https://cloudresourcemanager.googleapis.com/v1/projects/{project_id}"
|
||||
status_code, response = make_api_request(project_url, token)
|
||||
|
||||
if status_code == 200:
|
||||
print(f" ✅ 项目名称: {response.get('name', 'N/A')}")
|
||||
print(f" 📊 项目编号: {response.get('projectNumber', 'N/A')}")
|
||||
print(f" 🏷️ 项目ID: {response.get('projectId', 'N/A')}")
|
||||
print(f" 📅 创建时间: {response.get('createTime', 'N/A')}")
|
||||
print(f" 🔄 生命周期: {response.get('lifecycleState', 'N/A')}")
|
||||
else:
|
||||
print(f" ❌ 无法获取项目信息: {status_code}")
|
||||
print()
|
||||
|
||||
# 查看启用的服务
|
||||
print("🔧 查看启用的AI相关服务...")
|
||||
services_url = f"https://serviceusage.googleapis.com/v1/projects/{project_id}/services"
|
||||
status_code, response = make_api_request(services_url, token)
|
||||
|
||||
if status_code == 200:
|
||||
services = response.get('services', [])
|
||||
ai_services = [s for s in services if 'ai' in s.get('config', {}).get('name', '').lower() or 'generative' in s.get('config', {}).get('name', '').lower()]
|
||||
|
||||
print(f" 📊 总服务数: {len(services)}")
|
||||
print(f" 🤖 AI相关服务: {len(ai_services)}")
|
||||
|
||||
for service in ai_services[:10]: # 显示前10个
|
||||
name = service.get('config', {}).get('name', 'Unknown')
|
||||
state = service.get('state', 'Unknown')
|
||||
print(f" • {name}: {state}")
|
||||
else:
|
||||
print(f" ❌ 无法获取服务信息: {status_code}")
|
||||
|
||||
print()
|
||||
print("🎯 Memory Bank访问建议:")
|
||||
print(" 1. 在Google Cloud Console中访问:")
|
||||
print(f" https://console.cloud.google.com/vertex-ai/generative/memory-banks?project={project_id}")
|
||||
print(" 2. 或者访问Vertex AI主页:")
|
||||
print(f" https://console.cloud.google.com/vertex-ai?project={project_id}")
|
||||
print(" 3. Memory Bank功能可能在'生成式AI'或'实验性功能'部分")
|
||||
print()
|
||||
print("🎉 GCP API查询完成!")
|
||||
print("=" * 60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in New Issue