feat: 回忆录证据血缘与内部评测可追溯,顺带对齐本地评测台与 CI
数据库与模型:新增多版迁移(章节证据快照、对话血缘、记忆事实/时间线 lineage 等),把「成稿 ↔ 对话/记忆」的溯源信息落到表结构里。 业务链路:会话与 WS、回忆录/故事流水线、记忆写入与 enrichment 等跟着接上线索与快照;新增章节证据快照与评测侧 EvalTraceService 等模块,方便组评审用的证据包。 内部评测:自动化 run 与手工 memoir 评审共用可追溯证据;rubric/ judge 相关脚本与文档有配套调整。 app-eval-web:Memoir/实验详情里能展开看证据摘要与 evidence_trace(含对话轮次 id);Vite 代理与 development.sh 注入的 API 端口与当前默认内部评测端口一致,避免改端口后页面连错服务。 工程杂项:GitHub Actions / 仓库说明有更新;各适配器与支付/配额/plan 等多处为小改动或跟随主改动的收尾;新增/扩充了?
This commit is contained in:
@@ -9,8 +9,8 @@ from typing import Any, Dict, List
|
||||
|
||||
from app.agents.memoir.prompts import get_batch_memoir_phase1_prep_prompt
|
||||
from app.agents.memoir.schemas import BatchPhase1LLMOutput
|
||||
from app.agents.state_schema import MemoirStateSchema
|
||||
from app.agents.stage_constants import STAGE_SLOT_KEYS
|
||||
from app.agents.state_schema import MemoirStateSchema
|
||||
from app.core.config import settings
|
||||
from app.core.llm_call import LLMCallError, llm_json_call
|
||||
from app.core.logging import get_logger
|
||||
|
||||
@@ -13,6 +13,8 @@ import re
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from pydantic import ValidationError
|
||||
|
||||
from app.agents.memoir.prompts import get_chapter_classification_json_prompt
|
||||
from app.agents.memoir.schemas import ClassificationOutput
|
||||
from app.agents.stage_constants import (
|
||||
@@ -22,7 +24,7 @@ from app.agents.stage_constants import (
|
||||
)
|
||||
from app.core.config import settings
|
||||
from app.core.json_utils import extract_json_payload
|
||||
from app.core.llm_call import llm_json_call
|
||||
from app.core.llm_call import LLMCallError, llm_json_call
|
||||
from app.core.logging import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
@@ -159,7 +161,7 @@ class ClassificationAgent:
|
||||
)
|
||||
if category in CHAPTER_CATEGORIES:
|
||||
return ChapterClassifyResult(category=category, llm_said_none=False)
|
||||
except Exception as e:
|
||||
except (LLMCallError, ValidationError, ValueError, KeyError) as e:
|
||||
logger.warning("ClassificationAgent LLM 章节分类失败: {}", e)
|
||||
|
||||
stage = _detect_stage(text, fallback_stage)
|
||||
|
||||
@@ -7,13 +7,13 @@ from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from app.agents.stage_constants import CHAPTER_CATEGORIES
|
||||
from app.agents.memoir.prompts import (
|
||||
get_creative_title_json_prompt,
|
||||
get_narrative_json_prompt,
|
||||
get_narrative_merge_json_prompt,
|
||||
)
|
||||
from app.agents.memoir.schemas import MemoirTitleOutput
|
||||
from app.agents.stage_constants import CHAPTER_CATEGORIES
|
||||
from app.core.config import settings
|
||||
from app.core.langchain_llm import invoke_json_object
|
||||
from app.core.llm_call import llm_json_call
|
||||
|
||||
@@ -16,11 +16,11 @@ from app.agents.memoir.batch_phase1_prep import (
|
||||
)
|
||||
from app.agents.memoir.classification_agent import (
|
||||
ClassificationAgent,
|
||||
_looks_like_fragment_only,
|
||||
)
|
||||
from app.agents.memoir.classification_agent import (
|
||||
_detect_stage as detect_stage_from_keywords,
|
||||
)
|
||||
from app.agents.memoir.classification_agent import _looks_like_fragment_only
|
||||
from app.agents.memoir.extraction_agent import ExtractionAgent, ExtractionResult
|
||||
from app.agents.stage_constants import normalize_chapter_category, normalize_chat_stage
|
||||
from app.agents.state_schema import MemoirStateSchema
|
||||
|
||||
@@ -10,10 +10,7 @@ from typing import Optional
|
||||
from app.agents.chat.background_voice import get_background_voice_narrative_block
|
||||
from app.agents.chat.occupation_context import get_occupation_narrative_hint
|
||||
from app.agents.stage_constants import STAGE_ERA_HINTS, STAGE_SLOT_KEYS
|
||||
from app.features.memory.evidence_format import (
|
||||
dedupe_evidence_chunk_rows,
|
||||
format_evidence_chunks_for_prompt,
|
||||
)
|
||||
from app.features.memory.evidence_format import format_evidence_chunks_for_prompt
|
||||
|
||||
|
||||
def _memoir_fidelity_core_rules() -> str:
|
||||
@@ -581,6 +578,3 @@ def format_narrative_user_content(oral_text: str, evidence_text: str = "") -> st
|
||||
"【仅供参考的相关记忆摘录(非本段口述;不得把其中具体事实写成本轮亲历经历,仅可作主题衔接)】\n"
|
||||
f"{ev}"
|
||||
)
|
||||
|
||||
|
||||
# dedupe_evidence_chunk_rows / format_evidence_chunks_for_prompt 见 app.features.memory.evidence_format
|
||||
|
||||
@@ -9,7 +9,7 @@ from __future__ import annotations
|
||||
import json
|
||||
import re
|
||||
from datetime import timezone
|
||||
from typing import Any, TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from app.core.config import Settings
|
||||
|
||||
Reference in New Issue
Block a user