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。目前新建了一个交流群,一个人走得快,一群人走得远,另外,本人长期维护一套飞书云文档笔记,涵盖后端、大数据系统化的面试资料,可私信免费获取

相关推荐
程序员小崔日记10 小时前
技术之外,皆是人间
后端·ruoyi·计算机温情
不懂的浪漫10 小时前
# mqtt-plus 架构解析(八):Spring Boot 自动装配,这些零件是怎么被粘合起来的
spring boot·后端·物联网·mqtt·架构
开心就好202510 小时前
Flutter iOS应用混淆与安全配置详细文档指南
后端·ios
掘金者阿豪11 小时前
记一次NFS下的权限踩坑:从“Operation not permitted”到安装成功的折腾实录
后端
妙蛙种子31111 小时前
【Java设计模式 | 创建者模式】 原型模式
java·开发语言·后端·设计模式·原型模式
阿聪谈架构11 小时前
第07章(下):LangGraph 工作流进阶 —— 检查点、人工介入与多 Agent 协作
人工智能·后端
希望永不加班11 小时前
SpringBoot 配置绑定:@ConfigurationProperties
java·spring boot·后端·spring
悟空码字11 小时前
MySQL性能优化的天花板:10条你必须掌握的顶级SQL分析技巧
java·后端·mysql
Soofjan11 小时前
Go interface 源码:iface、itab、getitab 与动态派发
后端
Soofjan11 小时前
Go interface:语法、接口值与常见坑
后端