"""投顾 Agent 对共享 LLM 客户端的安全调用封装。""" from __future__ import annotations import inspect from agent.advisor_agent.fallback import call_with_fallback async def generate_text( llm_client, *, system_prompt: str, user_prompt: str, fallback, timeout: float = 5.0, ) -> str: """调用共享 LLM,超时或异常时返回本地安全兜底文本。""" async def primary(): return await llm_client.chat( [ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}, ] ) async def secondary(): value = fallback() return await value if inspect.isawaitable(value) else value result = await call_with_fallback( primary, secondary, timeout=timeout, degraded_code=50001, ) return str(result.value) __all__ = ["generate_text"]