用途:LangExtract 通过大语言模型从非结构化文本中抽取结构化信息,主入口为 lx.extract()。每次抽取至少需要一个示例和输入文本,prompt_description 可选但建议提供。
安装与密钥:pip install langextract;OpenAI 支持需 pip install langextract[openai]。Gemini 读取 GEMINI_API_KEY 再读 LANGEXTRACT_API_KEY;OpenAI 读取 OPENAI_API_KEY 再读 LANGEXTRACT_API_KEY;Ollama 无需密钥,只需运行服务。自动路由与环境默认解析针对 GPT 风格模型 ID(gpt-4*、gpt-5*);OpenAI 兼容端点或非 GPT ID 需显式传 ModelConfig。
主要能力:用 ExampleData 与 Extraction 定义少样本示例,调用 lx.extract() 得到结果,可遍历 result.extractions 获取 extraction_class、extraction_text、char_interval 与 attributes。text_or_documents 支持字符串、URL(默认 fetch_urls=True)或 Document 列表。关键参数包括 model_id、extraction_passes(大于 1 提高召回但更耗时)、max_char_buffer、batch_length、max_workers、context_window_chars(跨块上下文,帮助指代消解)。并行处理依赖提供商,Ollama 当前为顺序处理。
结果处理:可用 char_interval 过滤有源位置的抽取,读取 start_pos/end_pos 定位原文;用 lx.io.save_annotated_documents 保存 JSONL;用 lx.visualize 生成可视化 HTML。
示例编写:extraction_text 必须逐字来自示例文本,抽取按出现顺序排列,extraction_class 在各示例中保持一致,attributes 应与运行时目标匹配。可通过 prompt_validation_level=PromptValidationLevel.ERROR 与 prompt_validation_strict=True 在开发期快速失败。
限制与常见问题:char_interval 为 None 表示未能定位,可能因改写、对齐失败或幻觉,可过滤或调参;示例不逐字匹配会触发对齐警告;长文档慢时可先设 extraction_passes=1;模型推荐 gemini-2.5-flash,复杂推理用 gemini-2.5-pro。更多提供商、对齐调参与校验细节见 references 目录。