Silent exception swallowing in Property Graph LLM Path Extractors

用户在 LlamaIndex 的属性图(Property Graph)模块中,使用 DynamicLLMPathExtractor 、 SchemaLLMPathExtractor 或 SimpleLLMPathExtractor 进行知识图谱三元组提取时,如果 LLM API 发生超时、速率限制或

Silent exception swallowing in Property Graph LLM Path Extractors

Silent exception swallowing in Property Graph LLM Path Extractors

快速结论:当使用 DynamicLLMPathExtractorSchemaLLMPathExtractorSimpleLLMPathExtractor 进行属性图路径提取时,若 LLM API 调用超时、速率限制或输出验证失败,异常会被完整吞灭,返回空三元组列表 [],且日志仅输出一条错误信息。优先排查是否开启了 raise_on_error=True 选项。

问题场景

用户在 LlamaIndex 的属性图(Property Graph)模块中,使用 DynamicLLMPathExtractorSchemaLLMPathExtractorSimpleLLMPathExtractor 进行知识图谱三元组提取时,如果 LLM API 发生超时、速率限制或输出验证约束失败,异常会被广泛捕获(Exception / ValueError),并返回空列表 []。下游代码(如异步编排器、批量摄取管道、UI 层)无法感知到该失败,导致“空图”结果且难以调试。

报错原文

# 异常未被传播到调用者,而是被内部 catch 后返回空列表
# 日志中仅输出类似:
ERROR:llama_index:Error extracting paths: ...
# 但异常对象被静默吞灭

原因分析

可能原因是三个提取器(DynamicLLMPathExtractorSchemaLLMPathExtractorSimpleLLMPathExtractor)在提取过程中广泛捕获了 Exception / ValueError,并将异常吞灭,返回空的三元组列表 []。这种设计导致 LLM API 调用超时、速率限制或输出验证约束失败等关键错误无法向上传播。开发者已提交 PR #22195 修复此行为,添加了 raise_on_error=True 选项来控制是否传播异常。

环境排查

  • 确认使用的 LlamaIndex 版本:检查是否包含 raise_on_error 参数的支持。
  • 确认 LLM 配置:检查使用的 LLM 实例(如 OpenAI、MockLLM 等)是否可能触发超时、速率限制或 API 错误。
  • 确认日志级别:检查是否配置了 logging.INFO 级别日志以查看错误信息。

解决步骤

  1. 可优先尝试:在实例化提取器时传递 raise_on_error=True 参数(此修复在 PR #22195 中实现,需确保 LlamaIndex 版本已包含该改动)。例如:
    extractor = DynamicLLMPathExtractor(
        llm=your_llm,
        raise_on_error=True
    )
  2. 如果当前版本尚未包含该参数,请升级到包含该修复的最新版本,或暂时手动捕获异常并在调用者处自行处理。
  3. 如果不想让异常传播,保留默认行为(不传递 raise_on_error 或设为 False),此时异常仍会被吞灭并返回空列表。

验证方法

使用模拟失败 LLM(例如 FailingMockLLM)运行提取流程:

  1. 设置 raise_on_error=False(默认)时,提取应静默完成,返回空列表,日志中输出错误信息。
  2. 设置 raise_on_error=True 时,提取应抛出异常(如 ValueError: Simulated RateLimitError from OpenAI API),而不是静默吞灭。

确认下游代码能正常捕获异常并处理(如中止管道、触发重试等)。

参考来源

run-llama/llama_index #22194

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 14405

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注