网站首页 > 博客文章 正文
使用 Spring AI 开发 AI 应用时,Ollama 通常在本地开发和测试时使用,用来在本地运行大模型。由于本地开发机器的资源限制,当使用 Ollama 运行较大的模型时,大模型给出响应的时间会比较长。Spring AI 提供的 OllamaChatModel 与 Ollama 服务器交互时,默认的超时时间是 30 秒。也就是说,如果 Ollama 服务器无法在 30 秒内给出响应,Spring AI 的 OllamaChatModel 会出错,导致整个请求出现错误。超时的错误在本地开发中经常会出现,严重影响开发的体验和效率。我们需要的是把超时时间延长一些。
那怎么做呢?OllamaChatModel 使用 OllamaApi 与 Ollama 服务器交互。非流式接口使用的是 Spring 的 RestClient,流式接口使用的是 Spring 的 WebClient。OllamaApi 的构造器接受一个 RestClient.Builder 对象,用来创建 RestClient。所以,我们只需要提供一个自定义的 RestClient.Builder 对象即可。
这里需要一个 ClientHttpRequestFactory 实现,用来创建 HTTP 请求对象。不同的 ClientHttpRequestFactory 有各自独有的设置请求超时时间的方式。这里使用的是 JdkClientHttpRequestFactory,也就是使用 JDK 自带的 HttpClient 来发送请求,这样可以避免引入不必要的外部依赖。使用 setReadTimeout 方法来设置超时时间即可。在创建 OllamaApi 时,使用自定义的 RestClient.Builder 对象即可。
完整的 Spring 配置如下面所示。这里把超时时间设置为 3 分钟。
public class AppConfiguration {
@Bean
@Qualifier("OllamaRestClientBuilder")
public RestClient.Builder ollamaRestClientBuilder() {
JdkClientHttpRequestFactory requestFactory = new JdkClientHttpRequestFactory(
HttpClient.newHttpClient());
requestFactory.setReadTimeout(Duration.ofMinutes(3));
return RestClient.builder().requestFactory(requestFactory);
}
@Bean
public OllamaApi ollamaApi(OllamaConnectionDetails connectionDetails,
@Qualifier("OllamaRestClientBuilder") RestClient.Builder restClientBuilder) {
return new OllamaApi(connectionDetails.getBaseUrl(), restClientBuilder);
}
}
添加了上述配置之后,OllamaChatModel 在与 Ollama 服务器交互时,会使用配置提供的超时时间,避免了频繁出现的超时错误。
猜你喜欢
- 2024-10-31 英雄联盟手游错误代码100008什么原因?LOL手游错误代码解决办法
- 2024-10-31 玩转网络自动化之ntc_templates模块
- 2024-10-31 C#程序与单片机通信时,如何自动初始化串口(2)?
- 2024-10-31 电机驱动_上位机_ModbusRTU通讯(伺服上位机)
- 2024-10-31 真实的线上故障处理案例(在线故障检测时应注意什么)
- 2024-10-31 问题反馈:为什么Cydia加载出现那么多红色错误?
- 2024-10-31 Norland诺兰德连接超时连接报错?一招解决连接问题
- 2024-10-31 处理超时订单(超时未付款)的解决方案
- 2024-10-31 第一后裔运行超时运行报错怎么办?一招解决运行问题
- 2024-10-31 基于 PTS 压测轻松玩转问题诊断(tps压测 指什么)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)