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

相关推荐
学长毕业设计5 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西5 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西5 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
阿kun要赚马内6 小时前
MySQL 索引基础
后端·mysql
码事漫谈6 小时前
我啥都能做,却不知道做什么了
后端
geovindu6 小时前
CSharp: 万年历
开发语言·后端·c#·.net
独泪了无痕8 小时前
SpringBoot Event事件机制,轻松实现业务解耦
spring boot·后端·spring
悲且狂9 小时前
SpringBoot项目改造注意事项(旧项目框架复用)
java·spring boot·后端
敲代码的嘎仔9 小时前
28届后端开发-海康威视日常实习一面(已OC)
java·开发语言·后端·面试·海康威视·实习·大厂
IT_陈寒10 小时前
JavaScript数组排序踩的坑,差点让我加班到凌晨
前端·人工智能·后端