This is an automated email from the ASF dual-hosted git repository.
tomsun28 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/2.0.0 by this push:
new 35e373ee37 fix spring-ai
35e373ee37 is described below
commit 35e373ee37ff93239d1090d07aa2c4ab0b313da3
Author: tomsun28 <[email protected]>
AuthorDate: Thu Jun 4 22:25:12 2026 +0800
fix spring-ai
Signed-off-by: tomsun28 <[email protected]>
---
hertzbeat-ai/pom.xml | 13 +++++++-
.../org/apache/hertzbeat/ai/config/LlmConfig.java | 37 +++++++++++-----------
mcp-servers/mcp-log-server/pom.xml | 4 +--
3 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/hertzbeat-ai/pom.xml b/hertzbeat-ai/pom.xml
index 2b270c5bf9..7697f6fb32 100644
--- a/hertzbeat-ai/pom.xml
+++ b/hertzbeat-ai/pom.xml
@@ -25,7 +25,7 @@
</parent>
<artifactId>hertzbeat-ai</artifactId>
<properties>
- <spring-ai.version>1.1.1</spring-ai.version>
+ <spring-ai.version>2.0.0-M8</spring-ai.version>
<java.version>21</java.version>
</properties>
@@ -79,6 +79,17 @@
</dependency>
</dependencies>
+ <repositories>
+ <repository>
+ <id>spring-milestones</id>
+ <name>Spring Milestones</name>
+ <url>https://repo.spring.io/milestone</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
<dependencyManagement>
<dependencies>
<dependency>
diff --git
a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/config/LlmConfig.java
b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/config/LlmConfig.java
index b145344610..70fae64081 100644
--- a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/config/LlmConfig.java
+++ b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/config/LlmConfig.java
@@ -18,6 +18,8 @@
package org.apache.hertzbeat.ai.config;
+import com.openai.client.OpenAIClient;
+import com.openai.client.okhttp.OpenAIOkHttpClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.hertzbeat.common.support.event.AiProviderConfigChangeEvent;
import org.apache.hertzbeat.common.entity.dto.ModelProviderConfig;
@@ -27,7 +29,6 @@ import org.apache.hertzbeat.common.util.JsonUtil;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
-import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
@@ -44,7 +45,7 @@ import org.springframework.context.event.EventListener;
public class LlmConfig {
private final GeneralConfigDao generalConfigDao;
-
+
private ApplicationContext applicationContext;
public LlmConfig(GeneralConfigDao generalConfigDao, ApplicationContext
applicationContext) {
@@ -88,7 +89,7 @@ public class LlmConfig {
modelProviderConfig.setBaseUrl("https://api.openai.com/v1");
}
}
-
+
if (modelProviderConfig.getModel() == null) {
if ("openai".equals(modelProviderConfig.getCode())) {
modelProviderConfig.setModel("gpt-5");
@@ -101,23 +102,23 @@ public class LlmConfig {
}
}
- OpenAiApi.Builder builder = new OpenAiApi.Builder();
- builder.baseUrl(modelProviderConfig.getBaseUrl());
- builder.apiKey(modelProviderConfig.getApiKey());
- builder.completionsPath("/chat/completions");
-
+ OpenAIClient openAiClient = OpenAIOkHttpClient.builder()
+ .baseUrl(modelProviderConfig.getBaseUrl())
+ .apiKey(modelProviderConfig.getApiKey())
+ .build();
+
// Create Chat Options
OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
.model(modelProviderConfig.getModel())
.temperature(0.3)
.build();
-
+
// Create Chat Model
OpenAiChatModel openAiChatModel = OpenAiChatModel.builder()
- .openAiApi(builder.build())
- .defaultOptions(openAiChatOptions)
+ .openAiClient(openAiClient)
+ .options(openAiChatOptions)
.build();
-
+
// Create and return ChatClient
return ChatClient.create(openAiChatModel);
}
@@ -129,25 +130,25 @@ public class LlmConfig {
@EventListener(AiProviderConfigChangeEvent.class)
public void onAiProviderConfigChange(AiProviderConfigChangeEvent event) {
log.info("Provider configuration change event received, refreshing
ChatClient bean");
-
+
try {
ConfigurableApplicationContext configurableContext =
(ConfigurableApplicationContext) applicationContext;
DefaultListableBeanFactory beanFactory =
(DefaultListableBeanFactory) configurableContext.getBeanFactory();
-
+
// Remove the existing ChatClient bean
if (beanFactory.containsSingleton("openAiChatClient")) {
beanFactory.destroySingleton("openAiChatClient");
log.info("Existing ChatClient bean destroyed");
}
-
+
// Create new ChatClient with updated configuration
ChatClient newChatClient = createChatClient();
-
+
// Register the new ChatClient bean
beanFactory.registerSingleton("openAiChatClient", newChatClient);
-
+
log.info("ChatClient bean refreshed successfully with new AI
provider configuration");
-
+
} catch (Exception e) {
log.error("Failed to refresh ChatClient bean after configuration
change", e);
}
diff --git a/mcp-servers/mcp-log-server/pom.xml
b/mcp-servers/mcp-log-server/pom.xml
index 03771183ef..0aab7e2c16 100644
--- a/mcp-servers/mcp-log-server/pom.xml
+++ b/mcp-servers/mcp-log-server/pom.xml
@@ -31,7 +31,7 @@
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <spring-ai.version>1.0.0-M6</spring-ai.version>
+ <spring-ai.version>2.0.0-M8</spring-ai.version>
</properties>
<dependencyManagement>
@@ -56,7 +56,7 @@
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
-
<artifactId>spring-ai-mcp-server-webflux-spring-boot-starter</artifactId>
+ <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
<version>${spring-ai.version}</version>
</dependency>
<!-- json path parser-->
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]