跳到主要内容

可自定义的 HTTP 客户端

一些 LangChain4j 模块(目前包括 OpenAI 和 Ollama)支持自定义用于调用 LLM 提供商 API 的 HTTP 客户端。

langchain4j-http-client 模块实现了 HttpClient SPI,这些模块使用它来调用 LLM 提供商的 REST API。 这意味着可以自定义底层 HTTP 客户端, 并且通过实现 HttpClient SPI 可以集成任何其他 HTTP 客户端。

目前有以下开箱即用的实现:

  • JdkHttpClient,来自 langchain4j-http-client-jdk 模块。 当使用受支持的模块(例如 langchain4j-open-ai)时,默认使用它。
  • SpringRestClient,来自 langchain4j-http-client-spring-restclient/langchain4j-http-client-spring-boot4-restclient 模块。 当使用受支持模块的 Spring Boot starter(例如 langchain4j-open-ai-spring-boot-starter/langchain4j-open-ai-spring-boot4-starter)时,默认使用它。
  • ApacheHttpClient,来自 langchain4j-http-client-apache 模块。
  • OkHttpClient,来自 langchain4j-http-client-okhttp 模块。

自定义 JDK 的 HttpClient

HttpClient.Builder httpClientBuilder = HttpClient.newBuilder()
.sslContext(...);

JdkHttpClientBuilder jdkHttpClientBuilder = JdkHttpClient.builder()
.httpClientBuilder(httpClientBuilder);

OpenAiChatModel model = OpenAiChatModel.builder()
.httpClientBuilder(jdkHttpClientBuilder)
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4o-mini")
.build();

自定义 Spring 的 RestClient

RestClient.Builder restClientBuilder = RestClient.builder()
.requestFactory(new HttpComponentsClientHttpRequestFactory());

SpringRestClientBuilder springRestClientBuilder = SpringRestClient.builder()
.restClientBuilder(restClientBuilder)
.streamingRequestExecutor(new VirtualThreadTaskExecutor());

OpenAiChatModel model = OpenAiChatModel.builder()
.httpClientBuilder(springRestClientBuilder)
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4o-mini")
.build();

自定义 Apache 的 HttpClient

org.apache.hc.client5.http.impl.classic.HttpClientBuilder httpClientBuilder = org.apache.hc.client5.http.impl.classic.HttpClientBuilder.create();

ApacheHttpClientBuilder apacheHttpClientBuilder = ApacheHttpClient.builder()
.httpClientBuilder(httpClientBuilder);

OpenAiChatModel model = OpenAiChatModel.builder()
.httpClientBuilder(apacheHttpClientBuilder)
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4o-mini")
.build();