Spring AI:Chat client 超时时间设置

原文链接Spring AI:Chat client 超时时间设置

!TIP\] 背景:在一次正常的跟 AI 模型交互的过程中,比如说 call 调用,会使用 RestClient 类发起 API 请求,我们希望自主控制 RestClient 的连接时间、请求时间

示例代码可见:spring-ai-tutorial 仓库的 chat 目录下的 chat-setting 模块

AI 模型调用使用的 RestClient 的链路如下,最终定位到提供一个 ClientHttpRequestFactorySettings 的 Bean 即可

首先看到,AI 模型的调用方 RestClient 是由 RestClient.Builder restClientBuilder 传递

OpenAiChatAutoConfiguration 类实例化 OpenAiApi 类,并导入 RestClient.Builder restClientBuilder

再往上溯源 RestClientAutoConfiguration 实际提供 RestClient.Builder,在这里通过 restClientBuilderConfigurer 方法对 RestClient.Builder 进行配置

实际是在 ClientHttpRequestFactorySettings 类中设置 connectTimeout、readTimeout

也就是说我们只需要新增一个 ClientHttpRequestFactorySettings 的 Bean 类即可

java 复制代码
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.http.client.ClientHttpRequestFactorySettings;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.Duration;

@Configuration
public class HTTPConfig {

    @Value("${http.client.connect-timeout:60s}")
    private Duration connectTimeout;

    @Value("${http.client.read-timeout:60s}")
    private Duration readTimeout;

    @Bean
    public ClientHttpRequestFactorySettings clientHttpRequestFactorySettings() {
        return new ClientHttpRequestFactorySettings(ClientHttpRequestFactorySettings.Redirects._FOLLOW_WHEN_POSSIBLE_, connectTimeout,
                readTimeout, null);
    }
}

修改之后的 readTimeout、connectTimeout 都变为我们设置 1 分钟了

往期资料

Spring AI + Spring Ai Aliabba系统化学习资料

本教程将采用2025年5月20日正式的GA版,给出如下内容

  1. 核心功能模块的快速上手教程
  2. 核心功能模块的源码级解读
  3. Spring ai alibaba增强的快速上手教程 + 源码级解读

版本:

  • JDK21
  • SpringBoot3.4.5
  • SpringAI 1.0.0
  • SpringAI Alibaba 跟着最新

免费渠道:

  1. 为Spring Ai Alibaba开源社区解决解决有效的issue or 提供有价值的PR,可免费获取上述教程
  2. 往届微信推文

收费服务:收费69.9元

  1. 飞书在线云文档
  2. Spring AI会员群教程代码答疑

学习交流圈

你好,我是影子,曾先后在🐻、新能源、老铁就职,兼任Spring AI Alibaba开源社区的Committer。目前新建了一个交流群,一个人走得快,一群人走得远,另外,本人长期维护一套飞书云文档笔记,涵盖后端、大数据系统化的面试资料,可私信免费获取

相关推荐
小码哥_常6 小时前
Spring Boot:别再重复造轮子,这些内置功能香麻了
后端
皮皮林5516 小时前
OpenFeign 首次调用卡 3 秒?八年老开发扒透 5 个坑,实战优化到 100ms!
后端
千寻girling8 小时前
《 Git 详细教程 》
前端·后端·面试
0xDevNull9 小时前
Linux 中 Nginx 代理 Redis 的详细教程
redis·后端
GetcharZp9 小时前
告别 Nginx 手动配置!这款 Go 语言开发的云原生网关,才是容器化时代的真香神器!
后端
RuoyiOffice9 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
spring boot·后端·vue·anti-design-vue·ruoyioffice·假期·人力
Vane110 小时前
从零开发一个AI插件,经历了什么?
人工智能·后端
9523610 小时前
SpringBoot统一功能处理
java·spring boot·后端
rleS IONS11 小时前
SpringBoot中自定义Starter
java·spring boot·后端
DevilSeagull11 小时前
MySQL(2) 客户端工具和建库
开发语言·数据库·后端·mysql·服务