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': '玉帝'}
----