ai-robot-core/docs/progress/ai-service-progress.md

4.2 KiB
Raw Blame History

ai-service - Progress


📋 Context

  • module: ai-service
  • feature: AISVC (Python AI 中台)
  • status: 🔄 进行中

🔗 Spec References (SSOT)

  • agents: agents.md
  • contracting: spec/contracting.md
  • requirements: spec/ai-service/requirements.md
  • openapi_provider: spec/ai-service/openapi.provider.yaml
  • design: spec/ai-service/design.md
  • tasks: spec/ai-service/tasks.md

📊 Overall Progress (Phases)

  • Phase 1: 基础设施FastAPI 框架与多租户基础) (100%)
  • Phase 2: 存储与检索实现Memory & Retrieval (100%)
  • Phase 3: 核心编排Orchestrator & LLM Adapter (60%) 🔄
  • Phase 4: 流式响应SSE 实现与状态机) (0%)
  • Phase 5: 集成与冒烟测试Quality Assurance (0%)

🔄 Current Phase

Goal

实现核心编排层,包括 LLM Adapter 和 Orchestrator 的完整功能。

Sub Tasks

Phase 3: 核心编排Orchestrator & LLM Adapter

  • T3.1 实现 LLM Adapter封装 langchain-openai 或官方 SDK支持 generatestream_generate [AC-AISVC-02, AC-AISVC-06]
  • T3.2 实现 Orchestrator实现上下文合并逻辑H_local + H_ext 的去重与截断策略) [AC-AISVC-14, AC-AISVC-15]
  • T3.3 实现 Orchestrator实现 RAG 检索不足时的置信度下调与 shouldTransfer 逻辑 [AC-AISVC-17, AC-AISVC-18, AC-AISVC-19]
  • T3.4 实现 Orchestrator整合 Memory、Retrieval 与 LLM 完成 non-streaming 生成闭环 [AC-AISVC-01, AC-AISVC-02]
  • T3.5 验证 non-streaming 响应字段完全符合 openapi.provider.yaml 契约 [AC-AISVC-02]

Next Action (Must be Specific)

Immediate: 执行 T3.3 - 实现 RAG 检索不足时的置信度下调与 shouldTransfer 逻辑。

Details:

  1. 定义"检索不足"的判定条件:
    • hits.size < minHits
    • max(score) < scoreThreshold
    • evidence token 超限
  2. 实现置信度计算策略:
    • 基于检索分数计算 confidence
    • 检索不足时下调 confidence
  3. 实现 shouldTransfer 逻辑:
    • confidence < T_lowshouldTransfer=true
    • 添加 transferReason 说明
  4. reference:
    • spec/ai-service/design.md Section 4.3 - 检索不中兜底与置信度策略
    • spec/ai-service/requirements.md AC-AISVC-17, AC-AISVC-18, AC-AISVC-19

🏗️ Technical Context

Module Structure

  • ai-service/
    • app/
      • api/ - FastAPI 路由层
      • core/ - 配置、异常、中间件、SSE
      • models/ - Pydantic 模型和 SQLModel 实体
      • services/
        • llm/ - LLM Adapter 实现
          • base.py - LLMClient 抽象接口
          • openai_client.py - OpenAI 兼容客户端
        • memory.py - Memory 服务
        • orchestrator.py - 编排服务
        • retrieval/ - 检索层
    • tests/ - 单元测试

Key Decisions (Why / Impact)

  • decision: LLM Adapter 使用 httpx 而非 langchain-openai reason: 更轻量、更可控、减少依赖 impact: 需要手动处理 OpenAI API 响应解析

  • decision: 使用 tenacity 实现重试逻辑 reason: 简单可靠的重试机制 impact: 提高服务稳定性

Code Snippets

# [AC-AISVC-02] LLM Response generation
response = await llm_client.generate(messages, config=LLMConfig(...))

# [AC-AISVC-06] Streaming generation
async for chunk in llm_client.stream_generate(messages):
    yield create_message_event(delta=chunk.delta)

🧾 Session History

Session #1 (2026-02-24)

  • completed:
    • T3.1 实现 LLM Adapter
    • 创建 LLMClient 抽象接口 (base.py)
    • 实现 OpenAIClient (openai_client.py)
    • 编写单元测试 (test_llm_adapter.py)
    • 修复 entities.py JSON 类型问题
  • changes:
    • 新增 app/services/llm/__init__.py
    • 新增 app/services/llm/base.py
    • 新增 app/services/llm/openai_client.py
    • 新增 tests/test_llm_adapter.py
    • 更新 app/core/config.py 添加 LLM 配置
    • 修复 app/models/entities.py JSON 列类型

🚀 Startup Guide

  1. 读取本进度文档,定位当前 Phase 与 Next Action。
  2. 打开并阅读 Spec References 指向的模块规范。
  3. 直接执行 Next Action遇到缺口先更新 spec 再编码。