本文是《LangChain4j从入门到精通》系列的第十四篇,深入解析了如何通过定制HTTP客户端优化与LLM提供商API的交互。LangChain4j通过HttpClientSPI提供了高度灵活的HTTP客户端扩展能力,允许开发者根据需求替换底层网络实现。文章详细介绍了两种开箱即用的方案:JdkHttpClient(默认用于标准模块)和SpringRestClient(默认用于Spring Boot环境),并通过完整代码示例演示了如何自定义SSL上下文、连接超时、请求工厂等关键参数。此外,针对Spring生态,特别展示了如何集成RestClient并配置虚拟线程执行器以提升流式请求的并发性能。这一特性显著增强了LangChain4j在复杂企业级场景中的适应性,助力开发者实现高性能、可监控的AI应用集成。

#Java #LangChain4j #HTTP客户端定制 #LLM集成 #AI开发

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

langchain4j-http-client模块实现了一个HttpClient服务提供接口(SPI),该接口被其他模块用于调用大语言模型供应商的REST API。这意味着底层HTTP客户端可以进行定制,通过实现HttpClient SPI可以集成任何其他HTTP客户端。

目前有两种开箱即用的实现方案:

  • langchain4j-http-client-jdk模块中的JdkHttpClient。 当使用受支持的模块(例如langchain4j-open-ai)时,默认会使用它。
  • langchain4j-http-client-spring-rest client中的 SpringRest Client。 当使用支持模块的 Spring Boot 启动器(例如 langchain4j-open-ai-spring-boot-starter)时,默认会使用它。

自定义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();
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐