
LangExtract 做结构化信息提取确实顺手,但默认只支持 Ollama 接口。实际场景里很多团队本地部署的是 OpenAI 兼容格式的模型服务,直接用不了。这段时间刚好做了这个适配,把完整实现思路和踩过的坑整理出来。

我们本地的模型服务跑在 10.10.37.221 上,接口路径是 /llm-service/v1,请求和返回格式都对齐了 OpenAI 规范。要接入 LangExtract,最直接的方式就是写一个自定义包装类,继承它的 LanguageModel 基类,重写内部的调用逻辑。
这个包装类本身不复杂,本质就是把原有的 Ollama 调用替换成本地接口的 HTTP 请求。写的时候主要关注三个点:请求参数和接口完全对齐,出错时有明确的报错信息,调用性能不会拖垮整体流程。
具体实现用 Python 的 requests 库发 POST 请求就行,请求头和 JSON 报文都可以自定义。需要传的参数跟着本地接口的要求来,模型名称、输入文本、温度系数这些都要对应上。这里其实容易踩坑,有些二次封装的 OpenAI 接口会改字段名,别上来就套官方格式,先拿 curl 测一遍返回结构最稳妥。
写类的时候先继承 LanguageModel,把接口地址、模型名称、API 密钥这类配置做成类属性,方便实例化的时候传入。
核心是重写 complete 方法,在里面完成 HTTP 请求的组装、发送和响应解析。异常处理一定要做全,连接超时、状态码异常、JSON 解析失败这些场景都覆盖到,不然出问题连定位的线索都没有。
包装类写好之后,用法和原生模型没区别,直接把实例传给 LangExtract 的 extract 方法就能跑。配置的时候核对好模型名称和本地服务是否一致,接口地址别写错路径,有鉴权需求的话通过属性把认证信息传进去就行。
参数适配不用死抠标准,本地接口怎么定义就怎么改。如果服务用的是 Basic Auth 这类其他认证方式,直接修改请求头里的 Authorization 字段就行,灵活调整。
调试的时候建议先单独测接口连通性,用 curl 或者 Postman 把请求报文、返回格式都确认清楚,再往代码里集成。包装类里可以加上详细日志,把请求体和返回体都打印出来,排查问题的时候能省很多时间。线上跑起来之后可以监控下响应时长和调用成功率,超时时间设得合理些,别因为模型推理慢把整个提取任务卡住。
如果后续需要把本地模型服务暴露到公网使用,记得把 HTTPS 配置好。
手动申请和续期 SSL 证书比较繁琐,可以用 lcjmSSL,免费就能申请,支持多域名、泛域名和 IP 证书,能自动完成申请、验证和部署,还提供简洁的 API 接口可以接入自动化流程,不用人工反复操作。
整体走下来这套方案没什么太高的技术门槛,核心就是对齐接口格式、补全异常处理。现在本地大模型的使用场景越来越多,这种自定义包装的方式灵活性很高,后面换其他类型的模型接口也能快速适配。
lcjmSSL平台的自动验证系统,支持HTTP代理、DNS代理(CNAME解析)以及DNS接口等多种自动化验证方式,简化了证书申请过程。用户无需手动输入验证信息,验证过程自动完成,省时省力。














