| feature_id |
title |
status |
version |
last_updated |
| AISVC |
Python AI 中台(ai-service)进度追踪 |
in_progress |
0.1.0 |
2026-02-24 |
Python AI 中台进度追踪(AISVC)
Phase 1: 基础设施(FastAPI 框架与多租户基础)
Phase 2: 存储与检索实现(Memory & Retrieval)
Phase 3: 核心编排(Orchestrator & LLM Adapter)
Phase 4: 流式响应(SSE 实现与状态机)
Phase 5: 集成与冒烟测试(Quality Assurance)
总体进度
| Phase |
描述 |
进度 |
状态 |
| Phase 1 |
基础设施 |
100% |
✅ 完成 |
| Phase 2 |
存储与检索 |
100% |
✅ 完成 |
| Phase 3 |
核心编排 |
100% |
✅ 完成 |
| Phase 4 |
流式响应 |
100% |
✅ 完成 |
| Phase 5 |
集成测试 |
100% |
✅ 完成 |
测试统计: 184 tests passing
Phase 3 完成详情 (2026-02-24)
T3.1 LLM Adapter
- 创建 LLMClient 抽象接口 (
app/services/llm/base.py)
- 实现 OpenAIClient 使用 httpx (
app/services/llm/openai_client.py)
- 支持 generate 和 stream_generate
- 使用 tenacity 实现重试逻辑
- 单元测试: 11 tests
T3.2 上下文合并
- 创建 ContextMerger 类 (
app/services/context.py)
- 实现消息指纹计算 (SHA256)
- 实现去重策略 (local 优先)
- 实现 token 截断 (使用 tiktoken)
- 单元测试: 20 tests
T3.3 置信度计算
- 创建 ConfidenceCalculator 类 (
app/services/confidence.py)
- 实现检索不足判定
- 实现置信度计算策略
- 实现 shouldTransfer 逻辑
- 单元测试: 19 tests
T3.4 Orchestrator 完整闭环
- 整合 Memory、ContextMerger、Retriever、LLMClient、ConfidenceCalculator
- 实现 8 步生成管道:
- Load local history from Memory
- Merge with external history (dedup + truncate)
- RAG retrieval (optional)
- Build prompt with context and evidence
- LLM generation
- Calculate confidence
- Save messages to Memory
- Return ChatResponse
- 创建 GenerationContext 数据类追踪生成流程
- 实现 fallback 响应机制
- 单元测试: 21 tests
T3.5 契约验证
- 验证 ChatResponse 字段与 OpenAPI 契约一致性
- 验证 JSON 序列化使用 camelCase
- 验证必填字段和可选字段
- 验证 confidence 范围约束 [0.0, 1.0]
- 单元测试: 23 tests
验收标准覆盖
| AC 标记 |
描述 |
状态 |
| AC-AISVC-01 |
HTTP POST /ai/chat 调用 |
✅ |
| AC-AISVC-02 |
响应包含 reply/confidence/shouldTransfer |
✅ |
| AC-AISVC-03 |
参数错误返回 400 |
✅ |
| AC-AISVC-04 |
异常处理器 |
✅ |
| AC-AISVC-06 |
Accept 头切换 SSE 模式 |
✅ |
| AC-AISVC-07 |
SSE message 事件增量输出 |
✅ |
| AC-AISVC-08 |
SSE final 事件后关闭连接 |
✅ |
| AC-AISVC-09 |
错误时发送 error 事件 |
✅ |
| AC-AISVC-10 |
tenantId 贯穿隔离 |
✅ |
| AC-AISVC-11 |
存储层按 tenant_id 隔离 |
✅ |
| AC-AISVC-12 |
缺 tenantId 返回 400 |
✅ |
| AC-AISVC-13 |
Memory 层会话历史管理 |
✅ |
| AC-AISVC-14 |
上下文合并 |
✅ |
| AC-AISVC-15 |
历史去重策略 |
✅ |
| AC-AISVC-16 |
Retriever 抽象接口 |
✅ |
| AC-AISVC-17 |
RAG 检索质量影响 confidence |
✅ |
| AC-AISVC-18 |
检索不足时 confidence 下调 |
✅ |
| AC-AISVC-19 |
shouldTransfer 转人工建议 |
✅ |
| AC-AISVC-20 |
健康检查接口 |
✅ |
模块结构
ai-service/
├── app/
│ ├── api/
│ │ └── chat.py # FastAPI 路由层
│ ├── core/
│ │ ├── config.py # 配置管理
│ │ ├── exceptions.py # 异常定义
│ │ ├── middleware.py # 中间件 (租户注入)
│ │ ├── qdrant_client.py # Qdrant 客户端
│ │ └── sse.py # SSE 状态机和事件生成器
│ ├── models/
│ │ ├── __init__.py # Pydantic 模型
│ │ └── entities.py # SQLModel 实体
│ └── services/
│ ├── llm/
│ │ ├── base.py # LLMClient 抽象接口
│ │ └── openai_client.py # OpenAI 兼容客户端
│ ├── memory.py # Memory 服务
│ ├── orchestrator.py # 编排服务
│ ├── context.py # 上下文合并
│ ├── confidence.py # 置信度计算
│ └── retrieval/
│ ├── base.py # Retriever 抽象接口
│ └── vector_retriever.py # 向量检索实现
└── tests/ # 单元测试 (184 tests)
关键技术决策
| 决策 |
原因 |
影响 |
| LLM Adapter 使用 httpx |
更轻量、更可控、减少依赖 |
需要手动处理 OpenAI API 响应解析 |
| 使用 tenacity 实现重试 |
简单可靠的重试机制 |
提高服务稳定性 |
| Orchestrator 依赖注入模式 |
便于测试和组件替换 |
所有组件可通过构造函数注入 |
| GenerationContext 数据类 |
清晰追踪中间结果和诊断信息 |
便于调试和问题排查 |
| Pydantic alias 实现驼峰命名 |
符合 OpenAPI 契约的 camelCase 要求 |
JSON 序列化时自动转换字段名 |