fix: Codex 全量审查修正
Critical: - C1: assemble_mode 'plain' → 'ids'(合法枚举值) - C2: question_id 加入 task_type slug 避免跨题型冲突 Important/Minor: - generate_one 移除未用的 embed_fn/similarity_threshold 参数 - config.py 注释 11→12 同步 - 测试 question_id 断言更新 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -346,14 +346,14 @@ class TestParseVlmResponse:
|
||||
assert result["question"] == "What?"
|
||||
assert result["answer"] == "A"
|
||||
assert len(result["options"]) == 4
|
||||
assert result["question_id"] == "gen-vid1-001"
|
||||
assert result["question_id"] == "gen-vid1-object_recognition-001"
|
||||
|
||||
def test_json_in_code_block(self) -> None:
|
||||
"""从 markdown 代码块中提取 JSON。"""
|
||||
raw = '```json\n{"question": "Q?", "options": ["A. 1", "B. 2", "C. 3", "D. 4"], "answer": "B"}\n```'
|
||||
result = parse_vlm_response(raw, "vid1", "Object Recognition", 2)
|
||||
assert result["question"] == "Q?"
|
||||
assert result["question_id"] == "gen-vid1-002"
|
||||
assert result["question_id"] == "gen-vid1-object_recognition-002"
|
||||
|
||||
def test_invalid_json_raises(self) -> None:
|
||||
"""非 JSON 文本应抛出 ValueError。"""
|
||||
@@ -382,7 +382,7 @@ class TestParseVlmResponse:
|
||||
"""seq 应按 3 位零填充格式化到 question_id 中。"""
|
||||
raw = '{"question": "Q?", "options": ["A. 1", "B. 2", "C. 3", "D. 4"], "answer": "C"}'
|
||||
result = parse_vlm_response(raw, "video_abc", "Action Reasoning", 42)
|
||||
assert result["question_id"] == "gen-video_abc-042"
|
||||
assert result["question_id"] == "gen-video_abc-action_reasoning-042"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -448,14 +448,9 @@ class TestGenerateOne:
|
||||
content='{"question":"Q?","options":["A. 1","B. 2","C. 3","D. 4"],"answer":"A"}',
|
||||
)
|
||||
|
||||
def embed_fn(t: str | list[str]) -> np.ndarray:
|
||||
shape = (1, 4) if isinstance(t, str) else (len(t), 4)
|
||||
return np.zeros(shape, dtype=np.float32)
|
||||
|
||||
tree, vid = self._load_test_tree()
|
||||
result = await generate_one(
|
||||
vlm=vlm,
|
||||
embed_fn=embed_fn,
|
||||
tree=tree,
|
||||
video_id=vid,
|
||||
task_type="Object Recognition",
|
||||
@@ -463,12 +458,11 @@ class TestGenerateOne:
|
||||
exemplars=[],
|
||||
used_node_ids=set(),
|
||||
max_retries=3,
|
||||
similarity_threshold=0.85,
|
||||
rng=random.Random(42),
|
||||
session_id="test",
|
||||
)
|
||||
assert result is not None
|
||||
assert result.question_id == f"gen-{vid}-001"
|
||||
assert result.question_id == f"gen-{vid}-object_recognition-001"
|
||||
assert result.task_type == "Object Recognition"
|
||||
assert result.source_nodes # non-empty
|
||||
assert result.difficulty == "medium"
|
||||
@@ -479,13 +473,9 @@ class TestGenerateOne:
|
||||
vlm = AsyncMock()
|
||||
vlm.chat_with_images.return_value = MagicMock(content="invalid")
|
||||
|
||||
def embed_fn(t: str | list[str]) -> np.ndarray:
|
||||
return np.zeros((1, 4), dtype=np.float32)
|
||||
|
||||
tree, vid = self._load_test_tree()
|
||||
result = await generate_one(
|
||||
vlm=vlm,
|
||||
embed_fn=embed_fn,
|
||||
tree=tree,
|
||||
video_id=vid,
|
||||
task_type="Object Recognition",
|
||||
@@ -493,7 +483,6 @@ class TestGenerateOne:
|
||||
exemplars=[],
|
||||
used_node_ids=set(),
|
||||
max_retries=2,
|
||||
similarity_threshold=0.85,
|
||||
rng=random.Random(42),
|
||||
session_id="test",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user