LangExtract 是Google推出的一个基于大语言模型(如 OpenAI、Claude、Google AI 等)的信息抽取工具库。
它的核心能力是:

  • 从非结构化文本中提取你关心的信息
  • 支持自定义实体类型(不局限于“人名 / 地点 / 组织”)
  • 支持为每个实体附加上下文属性

你可以把它理解为一个可以通过自然语言说明规则,让 AI 按你的业务需求“读文本、做标注”的工具。

本地安装 Ollma 模型​

Langextract 可以支持大部分LLM模型,本文使用本地 Ollama 模型来进行演示。

Ollama官网下载并安装 Ollama。然后验证安装结果:

				
					ollama --version
				
			

下载一个本地模型,如qwen3:

				
					ollama pull qwen3
				
			

验证模型是否能运行:

				
					ollama run qwen3
				
			

安装Langextract

				
					pip install langextract
				
			

说明:pip是Python的包管理工具

快速验证

1. 新建测试文件

创建quick_test_ollama.py

				
					# quick_test_ollama.py
import langextract as lx  
import textwrap  
  
# 1. 定义抽取规则(Prompt)  
prompt = textwrap.dedent("""  
从中文文本中抽取与《西游记》相关的关键信息。  
  
请按文本出现顺序抽取以下实体:  
1. 人物(character)  
2. 人物的别名或称谓(alias)  
3. 明确描述的行为(action)  
  
要求:  
- 抽取内容必须使用原文中的“原句或原词”,不要改写  
- 不要合并不同实体  
- 可为每个实体补充必要的属性来说明上下文  
""")  
  
# 2. 给 AI 一个示例,告诉它“你想要什么结果”  
examples = [  
    lx.data.ExampleData(  
        text="行者道:“俺老孙乃齐天大圣孙悟空。”说罢,举起金箍棒便打。",  
        extractions=[  
            lx.data.Extraction(  
                extraction_class="character",  
                extraction_text="行者",  
                attributes={"alias": ["齐天大圣", "孙悟空"]}  
            ),  
            lx.data.Extraction(  
                extraction_class="action",  
                extraction_text="举起金箍棒便打",  
                attributes={"actor": "行者"}  
            )  
        ]  
    )  
]  
  
# 3. 待处理文本  
input_text = "怪物道:“我不是野豕,亦不是老彘,我本是天河里天蓬元帅。只因带酒调戏嫦娥,玉帝把我打了二千锤,贬下凡尘。”"  
  
# 4. 执行抽取  
result = lx.extract(  
    text_or_documents=input_text,  
    prompt_description=prompt,  
    examples=examples,  
    model_id="qwen3"  
)  
  
print("Extraction successful!")  
  
# 5. 查看抽取结果  
for extraction in result.extractions:  
    print(f"类型: {extraction.extraction_class}")  
    print(f"文本: {extraction.extraction_text}")  
    print(f"属性: {extraction.attributes}")  
    print("----")
				
			

2. 运行

				
					python quick_test_ollama.py
				
			

3. 示例结果

				
					LangExtract: Processing, current=53 chars, processed=0 chars:  [00:04]
Extraction successful!
类型: character
文本: 怪物
属性: {'alias': ['天蓬元帅']}
----
类型: action
文本: 调戏嫦娥
属性: {'actor': '怪物'}
----
类型: action
文本: 被打
属性: {'actor': '怪物', 'target': '玉帝'}
----
				
			

参考