From e2b4faedbea7336cdfe55012717398152e2d1a1c Mon Sep 17 00:00:00 2001 From: lhl Date: Thu, 13 Aug 2026 11:49:34 +0800 Subject: [PATCH] fix(writer): await async InferenceEngine.chat_structured in WriterAgent --- src/genesis/writer/writer_agent.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/genesis/writer/writer_agent.py b/src/genesis/writer/writer_agent.py index 2fbd7f1..4a1a142 100644 --- a/src/genesis/writer/writer_agent.py +++ b/src/genesis/writer/writer_agent.py @@ -5,6 +5,8 @@ """ from __future__ import annotations +import asyncio + from genesis.inference.engine import InferenceEngine from genesis.inference.prompt_registry import PromptRegistry from genesis.inference.types import Prompt, StructuredResult @@ -84,13 +86,17 @@ class WriterAgent: def _call_llm(self, context: GenerationContext) -> dict: prompt = self._resolve_prompt() - result: StructuredResult = self.engine.chat_structured( + result = self.engine.chat_structured( session_id=self.session_id, prompt=prompt, variables=context.to_vars(), schema=CHAPTER_OUTPUT_SCHEMA, retry_count=2, ) + # 真实 InferenceEngine.chat_structured 为 async;测试用同步 FakeEngine 返回普通对象。 + # 兼容两者:若返回协程则通过 asyncio.run 驱动(调用方 orchestrator/qa_loop/脚本均为同步上下文)。 + if asyncio.iscoroutine(result): + result = asyncio.run(result) if result.status not in ("ok", "fallback"): raise WriterGenerationError(f"引擎返回异常状态: {result.status}") return result.data