一个企业级架构的 Yes/No 决策系统,采用双灵魂 AI 架构,结合理性分析与玄学娱乐,根据用户输入的问题生成智能决策,并将操作记录保存到日志文件中。
- 后端:Python 3.14+, FastAPI 0.128.0
- AI 集成:OpenAI SDK 1.35.10, DeepSeek API
- 数据验证:Pydantic 2.12.5
- 日志:Python logging 模块
- 前端:HTML, CSS, JavaScript
- yes-no-decider/
- src/ — 源代码目录
- application/ — 应用逻辑层
decision.py— 核心决策逻辑logger.py— 日志管理ai_service.py— AI 服务层
- presentation/ — 表现层
api/— API 路由
- infrastructure/ — 基础设施层
- application/ — 应用逻辑层
- config/ — 配置文件目录
config.py— 配置管理
- public/ — 静态文件目录
index.html— 主页面
- logs/ — 日志文件目录
- tests/ — 测试文件夹
test_decision.py— 决策逻辑测试test_api.py— API 测试
main.py— 应用入口requirements.txt— 依赖清单.env.example— 环境变量示例README.md— 项目文档
- src/ — 源代码目录
- 特点:严格基于事实与逻辑进行分析决策
- 目标:确保绝对理性,杜绝幻觉,所有结论必须有可验证的事实依据
- 应用场景:需要客观分析的决策场景
- 置信度:0.85
- 特点:实现类似"笔仙"的娱乐性功能,可进行未来预测
- 目标:提供神秘、富有诗意的玄学解释
- 应用场景:娱乐性决策,带有玄学色彩的问题
- 置信度:0.7
- 安全机制:明确标记为娱乐性质,与核心决策系统隔离
- 特点:基于随机算法的机械决策
- 目标:提供基础的决策能力,作为AI决策的 fallback
- 置信度:0.5
pip install -r requirements.txt复制 .env.example 文件为 .env,并根据需要修改配置:
cp .env.example .env目前只支持DeepSeek的API 可以直接从官网申请
并将API填入config/config.py 中的deepseek_api_key
python main.py应用将在 http://localhost:8000 启动,您可以通过浏览器访问该地址使用 Yes/No 抉择器。
启动应用后,您可以访问 http://localhost:8000/docs 查看详细的 API 文档。
| 配置项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
DEEPSEEK_API_KEY |
字符串 | 无 | DeepSeek API 密钥 |
OPENAI_BASE_URL |
字符串 | https://api.deepseek.com |
AI API 基础 URL |
OPENAI_MODEL |
字符串 | deepseek-chat |
AI 模型名称 |
AI_SOUL |
字符串 | machine |
AI 灵魂类型:machine、rational、mystical |
AI_TIMEOUT |
整数 | 30 | AI 请求超时时间(秒) |
AI_MAX_RETRIES |
整数 | 3 | AI 请求最大重试次数 |
RATE_LIMIT_PER_MINUTE |
整数 | 60 | 每分钟请求限制 |
通过修改配置文件中的 AI_SOUL 参数,可以切换不同的决策灵魂:
machine:使用机械随机决策rational:使用理性AI决策mystical:使用玄学AI决策
获取决策结果
{
"input": "您的问题"
}{
"decision": "YES",
"timestamp": "2026-01-25T15:00:00.000000",
"confidence": 0.85,
"source": "AI_Rational",
"rationale": "Rational AI decision based on facts and logic"
}decision:决策结果,YES或NOtimestamp:决策生成时间戳confidence:决策置信度,范围 0-1source:决策来源,Machine、AI_Rational或AI_Mysticalrationale:决策基本理由
注意:AI决策的详细说明仅记录在日志中,不会返回给API响应
YYYY-MM-DD HH:MM:SS,mmm - logger_name - LOG_LEVEL - request_id - message
- 决策日志:
Decision made: YES (Source: AI_Rational) for input: 问题 - Explanation: 决策说明 - AI API 调用:
Calling AI API for 理性 decision with model: deepseek-chat - AI 响应:
AI API response: 决策:Yes\n分析:... - 请求开始/结束:记录每个请求的生命周期
- 错误日志:包含详细的错误信息和请求上下文
所有决策操作都会记录到 logs/decision.log 文件中,日志文件大小限制为 10MB,超过后会自动备份,最多保留 5 个备份文件。
- API 密钥管理:支持环境变量注入,避免硬编码
- 请求频率限制:默认每分钟 60 次请求,防止 API 滥用
- 错误处理:完善的异常处理机制,防止敏感信息泄露
- 娱乐功能隔离:玄学娱乐功能与核心决策系统隔离,确保稳定性
- 请求 ID 追踪:每个请求分配唯一 ID,便于日志追踪和调试
pip3 install openaiimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False
)
print(response.choices[0].message.content)运行测试用例:
pytest tests/- 遵循 PEP8 代码风格
- 使用 Google Style Guide 命名规范
- 确保注释清晰、变量命名专业
- 严格遵循企业级架构设计原则,确保系统模块化与低耦合
- AI 密钥安全:确保 API 密钥不泄露,建议使用环境变量或加密存储
- 理性使用 AI:理性灵魂用于客观决策,玄学灵魂仅用于娱乐
- 请求频率限制:注意 API 请求频率,避免触发 rate limit
- 日志管理:定期清理日志文件,避免磁盘空间占用过大
- 版本兼容:确保 Python 版本 >= 3.14,以支持最新的依赖库
- 支持更多 AI 模型和 API
- 实现决策历史记录和分析
- 添加用户认证和个性化决策
- 支持多语言决策
- 实现更复杂的决策算法
- 添加可视化决策分析
MIT License