Provider Configuration Guide 摘要
文档概览
该页是一份 Hyper-Extract 的 provider 配置指南,目标是说明如何把 Hyper-Extract 配置到不同的大模型/嵌入服务后端上运行,文中明确点名支持三类平台:
- OpenAI
- Bailian(Alibaba Cloud)
- 本地部署的 vLLM
页面的组织方式不是分别解释三套完全不同的用法,而是先给出一个“统一示例(Unified Example)”,用来强调:三种平台执行的是同一个 extraction task,变化的只有最前面的 3 行 client setup。这也是整页最核心的结论。
除 Python 示例外,页面还给出:
- 对应的 CLI 配置命令
create_client()的字符串简写格式- 使用配置文件替代内联参数的方式
关键事实
统一示例的核心结论
原文明确说明,OpenAI、Bailian 与本地 vLLM 运行的都是同一个 extraction task。在示例中,真正变化的只有创建客户端的部分,也就是开头的 provider 配置代码;后续 AutoGraph 的实例化、解析文本的方式,以及最终输出节点数和边数的逻辑都保持一致。
这意味着该页不是在比较不同 provider 的任务能力,而是在说明 Hyper-Extract 用统一接口屏蔽后端差异。
Python 侧关键接口关系
页面中最关键的接口关系有两层:
create_client()返回两个对象:llm, emb。- 这两个对象随后被传入
AutoGraph(llm_client=llm, embedder=emb)。
也就是说,Hyper-Extract 在调用侧把“语言模型客户端”和“嵌入器客户端”作为两个明确的依赖注入给 AutoGraph。文中没有把 provider 配置直接写进 AutoGraph 构造,而是通过 create_client() 先得到 llm 与 emb。
OpenAI 示例
OpenAI 的 Python 初始化示例是:
from hyperextract import create_client, AutoGraph
llm, emb = create_client("openai", api_key="sk-xxx")
这里展示的是最简 provider 指定方式:只传 provider 名称 "openai",再传 api_key="sk-xxx"。页面没有在此处额外指定模型名,意味着此写法使用预设默认值。
Bailian 示例
Bailian(Alibaba Cloud)的 Python 初始化示例是:
from hyperextract import create_client, AutoGraph
llm, emb = create_client("bailian", api_key="sk-xxx")
# Or override model: create_client("bailian:qwen3.6-plus", api_key="sk-xxx")
该段包含两层信息:
- 基础写法:
create_client("bailian", api_key="sk-xxx") - 可覆盖模型:
create_client("bailian:qwen3.6-plus", api_key="sk-xxx")
也就是说,Bailian 除了可直接使用 provider 预设外,还能通过 provider:model 这种简写,把 LLM 模型覆盖成 qwen3.6-plus,而嵌入器仍沿用预设。
本地 vLLM 示例
本地 vLLM 示例没有只写 provider 名,而是分别为 LLM 与 embedder 指定完整字符串:
from hyperextract import create_client, AutoGraph
llm, emb = create_client(
llm="vllm:Qwen3.5-9B@http://localhost:8000/v1",
embedder="vllm:bge-m3@http://localhost:8001/v1",
api_key="dummy",
)
这里保留了几个重要细节:
- LLM 指向:
vllm:Qwen3.5-9B@http://localhost:8000/v1 - Embedder 指向:
vllm:bge-m3@http://localhost:8001/v1 api_key传的是"dummy",说明本地部署场景下接口仍保留这个参数位,但示例中使用占位值
这说明在 vLLM 场景里,页面强调的是“全手动指定”模式:不仅要声明 provider 为 vllm,还要显式给出模型名和服务 URL,而且 LLM 与向量嵌入服务可以分别挂到不同端口。
示例任务内容
三个 provider 共用的 extraction task 代码为:
graph = AutoGraph(
instruction="Extract people and their relationships",
llm_client=llm,
embedder=emb,
node_key_extractor=lambda n: n.name,
edge_key_extractor=lambda e: (e.source, e.target, e.type),
nodes_in_edge_extractor=lambda e: (e.source, e.target),
)
text = "Zhang San founded ByteDance. Li Si serves as CEO."
graph.parse(text)
print(f"Nodes: {len(graph.nodes)}, Edges: {len(graph.edges)}")
该示例任务的要点包括:
AutoGraph的指令是:Extract people and their relationships,即抽取人物及其关系llm_client=llm与embedder=emb使用的正是create_client()返回的两个对象node_key_extractor取节点的nameedge_key_extractor用(e.source, e.target, e.type)作为边的唯一键nodes_in_edge_extractor从边中抽取(e.source, e.target)- 解析文本为:
Zhang San founded ByteDance. Li Si serves as CEO. - 最终输出的是
graph.nodes与graph.edges的数量,即打印节点数与边数
页面没有直接给出这个输入最终会产生多少个 nodes 和多少个 edges,但明确说明代码会打印这两个数量。
重要细节
CLI 对应配置
页面给出了一组与 Python 配置相对应的 CLI 命令:
| 平台 | 命令 |
|---|---|
| OpenAI | he config init -p openai -k sk-xxx |
| Bailian | he config init -p bailian -k sk-xxx |
| vLLM | he config init → 选择 local vLLM |
| Mixed(LLM=Bailian, Embedder=vLLM) | he config llm -p bailian -k sk-xxx + he config embedder -p vllm -u http://localhost:8001/v1 -k dummy |
这里的关键信息不只是“有 CLI”,还包括以下边界:
- OpenAI 与 Bailian 可以直接在
he config init时通过-p和-k一次初始化 - vLLM 的示例不是一条带全参数的固定命令,而是先执行
he config init,再在交互式流程中选择local vLLM - 页面明确展示了“混合配置”场景:LLM 可来自 Bailian,而 Embedder 来自 vLLM,本页因此隐含支持 LLM 与嵌入器后端分离配置
字符串简写格式
create_client() 支持紧凑字符串语法,页面把它总结为三种格式:
| 格式 | 示例 | 结果 |
|---|---|---|
provider | "bailian" | 使用预设默认的 LLM + embedder |
provider:model | "bailian:qwen3.6-plus" | 覆盖 LLM 模型,保留预设 embedder |
provider:model@url | "vllm:Qwen3.5-9B@localhost:8000/v1" | 完整手动指定 |
这部分是理解 Hyper-Extract Client String Shorthand 的直接来源。尤其要注意:
provider级别表示最简写法,依赖预设provider:model只覆盖模型,不等于完全手工配置provider:model@url才是把 provider、模型和服务地址都一起显式写出
页面给出的完整手工指定例子与本地 vLLM 示例相呼应。虽然表格中的示例写成 @localhost:8000/v1,但前文正式代码示例中使用的是带协议头的 @http://localhost:8000/v1。整理时应优先保留代码示例里的完整 URL 写法。
使用配置文件替代内联配置
如果不想在代码里每次显式写 provider 参数,页面建议先运行一次 he config init,然后在 Python 中使用 Template.create() 或 get_client()。示例代码为:
from hyperextract import get_client, AutoGraph
llm, emb = get_client() # Reads ~/.he/config.toml
graph = AutoGraph(..., llm_client=llm, embedder=emb)
这里可以确认几个事实:
get_client()会读取~/.he/config.toml- 它同样返回
llm, emb - 即使改为配置文件模式,
AutoGraph侧仍然通过llm_client=llm, embedder=emb接收这两个对象 - 页面还提到可使用
Template.create(),但摘录中没有展开其示例
因此,文件配置并没有改变运行时接口,只是把 provider 选择和参数来源从代码内联转移到配置文件。