Coverage for merco/core/empty_response.py: 92%
13 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""Empty response strategies."""
2from __future__ import annotations
4import logging
5from .pipeline import EmptyResponseStrategy, EmptyResponseContext
7logger = logging.getLogger("merco.pipeline")
10class CallbackEmptyResponse(EmptyResponseStrategy):
11 """空回复回调:注入 user 消息让 LLM 自愈。
13 适用于支持 function calling 但偶尔忘记调用工具的模型。
14 """
16 name = "callback"
18 async def attempt(self, ctx: EmptyResponseContext) -> bool:
19 if ctx.retry_count >= ctx.max_retries:
20 return False
21 from merco.tools.errors import empty_response
22 err = empty_response()
23 ctx.inject_error = err["error"]
24 return True