feat(question_gen): QuestionGenerator Protocol + 模块公开 API

app/ports.py 追加 QuestionGenerator Protocol(预留 LLM 出题接口)。
app/question_gen/__init__.py re-export load_benchmark 和 stratified_sample。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-07 04:48:21 -04:00
parent 8d515ff01f
commit d8a903fb54
3 changed files with 72 additions and 0 deletions
+27
View File
@@ -7,6 +7,9 @@ from typing import TYPE_CHECKING, Protocol, runtime_checkable
if TYPE_CHECKING:
import numpy as np
from app.tree.index import TreeIndex
from core.types import GeneratedQuestion
@runtime_checkable
class EmbeddingProvider(Protocol):
@@ -29,3 +32,27 @@ class EmbeddingProvider(Protocol):
[N, D] ndarray,每行 L2 范数为 1.0。
"""
...
@runtime_checkable
class QuestionGenerator(Protocol):
"""LLM 驱动的题目生成端口(预留接口)。
参数:
video_id: 视频标识。
task_type: 题型。
tree: 视频树索引,提供锚节点上下文。
exemplars: 风格示例题目列表。
返回:
生成的单条题目。
"""
async def generate(
self,
video_id: str,
task_type: str,
tree: TreeIndex,
*,
exemplars: list[GeneratedQuestion],
) -> GeneratedQuestion: ...