[changes] Clearly stipulated, the conditions for raising an error
This commit is contained in:
@@ -79,7 +79,7 @@ async def _build_insight_inputs(
|
|||||||
chunks: List[str],
|
chunks: List[str],
|
||||||
max_chunks: int,
|
max_chunks: int,
|
||||||
end_user_id: Optional[str],
|
end_user_id: Optional[str],
|
||||||
) -> Dict[str, str]:
|
) -> Dict[str, Optional[str]]:
|
||||||
"""
|
"""
|
||||||
Derive domain_distribution, active_periods, social_connections strings
|
Derive domain_distribution, active_periods, social_connections strings
|
||||||
to feed into the memory_insight.jinja2 template.
|
to feed into the memory_insight.jinja2 template.
|
||||||
|
|||||||
@@ -111,7 +111,9 @@ async def generate_chunk_summary(
|
|||||||
|
|
||||||
llm_client = _get_llm_client(end_user_id)
|
llm_client = _get_llm_client(end_user_id)
|
||||||
|
|
||||||
# Try structured output first; fall back to plain chat if unsupported
|
# Try structured output; fall back to plain chat only for LLMClientException
|
||||||
|
# (indicates the model/provider doesn't support structured output).
|
||||||
|
# All other exceptions are re-raised so config/schema errors stay visible.
|
||||||
try:
|
try:
|
||||||
response: MemorySummaryResponse = await llm_client.response_structured(
|
response: MemorySummaryResponse = await llm_client.response_structured(
|
||||||
messages=messages,
|
messages=messages,
|
||||||
@@ -123,9 +125,17 @@ async def generate_chunk_summary(
|
|||||||
summary = ";".join(s.statement for s in response.statements)
|
summary = ";".join(s.statement for s in response.statements)
|
||||||
else:
|
else:
|
||||||
summary = "暂无内容"
|
summary = "暂无内容"
|
||||||
except Exception:
|
except Exception as e:
|
||||||
raw = await llm_client.chat(messages=messages)
|
from app.core.memory.llm_tools.llm_client import LLMClientException
|
||||||
summary = raw.content.strip() if raw and raw.content else "暂无内容"
|
if isinstance(e, LLMClientException):
|
||||||
|
business_logger.warning(
|
||||||
|
f"结构化输出不可用,降级为普通对话: end_user_id={end_user_id}, reason={e}"
|
||||||
|
)
|
||||||
|
raw = await llm_client.chat(messages=messages)
|
||||||
|
summary = raw.content.strip() if raw and raw.content else "暂无内容"
|
||||||
|
else:
|
||||||
|
business_logger.error(f"生成摘要时发生非预期异常: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
business_logger.info(
|
business_logger.info(
|
||||||
f"成功生成chunk摘要,处理了 {len(chunks_to_process)} 个片段"
|
f"成功生成chunk摘要,处理了 {len(chunks_to_process)} 个片段"
|
||||||
|
|||||||
Reference in New Issue
Block a user