可自定义的 HTTP 客户端
部分 LangChain4j 模块(目前是 OpenAI 和 Ollama)支持自定义用于调用 LLM 提供商 API 的 HTTP 客户端。
langchain4j-http-client
模块实现了一个 HttpClient
SPI,这些模块通过它来调用 LLM 提供商的 REST API。
这意味着底层 HTTP 客户端是可自定义的,任何其他 HTTP 客户端也都可以通过实现 HttpClient
SPI 来集成。
目前有 2 个开箱即用的实现:
langchain4j-http-client-jdk
模块中的JdkHttpClient
。
当使用支持的模块(例如langchain4j-open-ai
)时,它是默认使用的客户端。langchain4j-http-client-spring-restclient
模块中的SpringRestClient
。
当使用支持模块的 Spring Boot starter(例如langchain4j-open-ai-spring-boot-starter
)时,它是默认使用的客户端。
自定义 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();