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

相关推荐
掘金者阿豪1 天前
🚀 CentOS Stream 9服务器Docker部署KWDB:从零到跨模查询实战全记录
后端
yang_xin_yu1 天前
一文带你精通泛型PECS原则与四大核心函数式接口
后端
孟陬1 天前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
树獭叔叔1 天前
13-KV Cache与位置编码表:大模型推理加速的核心技术
后端·aigc·openai
想用offer打牌1 天前
一站式了解四种限流算法
java·后端·go
嘻哈baby1 天前
用 C++ 写线程池是怎样一种体验?
后端
嘻哈baby1 天前
SQL Server 和 Oracle 以及 MySQL 有哪些区别?
后端
绝无仅有1 天前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
武子康1 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
绝无仅有1 天前
Redis大Key问题排查与解决方案全解析
后端·面试·架构