青蛙小白
博客 / 2025/03

在LangChain中配置 ChatOpenAI:设置 HTTP 代理并关闭 SSL 验证

2025/03/21 · — 字 · 阅读约 — 分钟 ·
目录

在使用LangChain的ChatOpenAI访问LLM的API时,有时会遇到需要通过HTTP代理访问LLM API的场景,或者由于本地网络环境、公司内网等原因,需要关闭SSL证书验证。本文将介绍如何通过httpx客户端在LangChain中实现这两个需求。

  • HTTP 代理:在某些网络环境下,直接访问OpenAI服务器可能会受到限制,这时可以通过HTTP代理中转流量,实现正常访问。(当然也可以通过nginx之类的软件配置反向代理实现)
  • 关闭SSL验证:有些情况下,代理服务器或本地环境的证书配置不完善,导致SSL验证失败。此时可以选择关闭SSL验证,避免因证书问题导致请求失败。

代码实现

from langchain_openai import ChatOpenAI
import httpx

model = ChatOpenAI(
    model=model_name,
    temperature=0,
    http_client=httpx.Client(
        transport=httpx.HTTPTransport(verify=False, proxy="http://127.0.0.1:8199"),
    ),
)

代码详解

上面的代码片段中,主要做了以下几件事:

  • 通过 httpx.Client 创建了一个自定义的HTTP客户端。
  • transport参数中,设置了 verify=False,表示关闭SSL证书验证。
  • 设置了 proxy="http://127.0.0.1:8199",将所有请求通过本地8199端口的 HTTP 代理转发。
  • 将自定义的 http_client 传递给 ChatOpenAI,让 LangChain在底层请求时使用这个客户端。

注意事项

  • 关闭SSL验证会带来安全风险,建议仅在受信任的网络环境或调试阶段使用,生产环境下应尽量保证证书的合法性和安全性。
  • 代理地址和端口需根据实际情况调整,确保代理服务可用
  • 若使用async,可能需要修改用httpx.AsyncClient(...)具体没有验证。
提示 为langchain开发的应用设置代理还可以通过#HTTP_PROXYHTTPS_PROXY两个环境变量进行设置,但这样就设置给了整个应用,而不仅仅是ChatOpenAI

总结

通过自定义httpx客户端,可以非常方便地在LangChain中为ChatOpenAI设置HTTP代理和关闭SSL验证。

评论