feat(api): 收敛对话与记忆流程边界,引入 LLM 网关与专用服务
- MemoryService 异步路径委托 MemoryIngestService / MemoryRetrievalService;富化派发经 MemoryEnrichmentScheduler - WebSocket pipeline 经 ChatTurnService 与显式 DTO 编排单轮对话;回忆录片段入队由 MemoirIngestScheduler 封装 - 新增 LlmGateway(LlmUseCase),各 agent、任务与适配器对齐 ports - 补充 memory 提示适配、runtime 类型、memory-retrieval 文档、ai-touchpoints 说明与扫描脚本及配套测试 Made-with: Cursor
This commit is contained in:
@@ -18,7 +18,7 @@ from sqlalchemy.orm import Session
|
||||
from app.agents.memoir.narrative_agent import NarrativeAgent
|
||||
from app.core.config import settings
|
||||
from app.core.db import get_sync_db
|
||||
from app.core.dependencies import get_llm_provider
|
||||
from app.core.llm_gateway import LlmGateway, LlmUseCase
|
||||
from app.core.logging import get_logger
|
||||
from app.core.memoir_pipeline_progress import merge_pipeline_run
|
||||
from app.features.memoir.models import Chapter
|
||||
@@ -30,7 +30,7 @@ logger = get_logger(__name__)
|
||||
|
||||
def _get_llm():
|
||||
try:
|
||||
return getattr(get_llm_provider(), "langchain_llm", None)
|
||||
return LlmGateway().langchain_llm_for(LlmUseCase("memoir_quality_pass"))
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ from app.core.chapter_pipeline_lock import (
|
||||
)
|
||||
from app.core.config import settings
|
||||
from app.core.db import get_sync_db
|
||||
from app.core.dependencies import get_llm_provider, get_llm_provider_fast
|
||||
from app.core.llm_gateway import LlmGateway, LlmUseCase
|
||||
from app.core.logging import get_logger
|
||||
from app.core.memoir_pipeline_progress import (
|
||||
init_pipeline_run_from_phase1,
|
||||
@@ -129,7 +129,7 @@ def _run_post_pipeline_commit(
|
||||
def _get_llm():
|
||||
"""Celery 任务内获取 LangChain LLM(通过 port)"""
|
||||
try:
|
||||
return getattr(get_llm_provider(), "langchain_llm", None)
|
||||
return LlmGateway().langchain_llm_for(LlmUseCase("memoir_tasks"))
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
@@ -137,7 +137,9 @@ def _get_llm():
|
||||
def _get_llm_fast():
|
||||
"""分类 / 抽取等快档位任务(与叙事、路由默认模型可分离)。"""
|
||||
try:
|
||||
return getattr(get_llm_provider_fast(), "langchain_llm", None)
|
||||
return LlmGateway().langchain_llm_for(
|
||||
LlmUseCase("memoir_tasks.fast", fast=True)
|
||||
)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import time
|
||||
from celery import shared_task
|
||||
|
||||
from app.core.db import get_sync_db
|
||||
from app.core.dependencies import get_llm_provider
|
||||
from app.core.llm_gateway import LlmGateway, LlmUseCase
|
||||
from app.core.logging import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
@@ -62,7 +62,7 @@ def generate_story_title_after_create(
|
||||
)
|
||||
return {"status": "skip_user_modified"}
|
||||
|
||||
llm = getattr(get_llm_provider(), "langchain_llm", None)
|
||||
llm = LlmGateway().langchain_llm_for(LlmUseCase("story_title"))
|
||||
if not llm:
|
||||
ms = (time.perf_counter() - t0) * 1000
|
||||
logger.info(
|
||||
|
||||
Reference in New Issue
Block a user