This is an automated email from the ASF dual-hosted git repository.

zqr10159 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit 721e53d20680d64c703ee10c204cc37851a00ba0
Author: Logic <[email protected]>
AuthorDate: Sat Jun 6 18:34:18 2026 +0800

    fix(ai): upgrade spring ai and keep chat client optional
---
 hertzbeat-ai/pom.xml                               |  2 +-
 .../org/apache/hertzbeat/ai/config/LlmConfig.java  | 30 +++++++++++++++++-----
 .../apache/hertzbeat/ai/config/LlmConfigTest.java  |  6 +++++
 3 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/hertzbeat-ai/pom.xml b/hertzbeat-ai/pom.xml
index 7697f6fb32..e582ff0e08 100644
--- a/hertzbeat-ai/pom.xml
+++ b/hertzbeat-ai/pom.xml
@@ -25,7 +25,7 @@
        </parent>
        <artifactId>hertzbeat-ai</artifactId>
        <properties>
-               <spring-ai.version>2.0.0-M8</spring-ai.version>
+               <spring-ai.version>2.0.0-RC1</spring-ai.version>
                <java.version>21</java.version>
        </properties>
 
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 da39573081..018151edb4 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
@@ -19,9 +19,11 @@
 package org.apache.hertzbeat.ai.config;
 
 import com.openai.client.OpenAIClient;
-import com.openai.client.okhttp.OpenAIOkHttpClient;
-import com.openai.credential.BearerTokenCredential;
+import io.micrometer.core.instrument.Metrics;
+import io.micrometer.observation.ObservationRegistry;
 import jakarta.annotation.PostConstruct;
+import java.time.Duration;
+import java.util.Map;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.hertzbeat.common.support.event.AiProviderConfigChangeEvent;
 import org.apache.hertzbeat.common.entity.dto.ModelProviderConfig;
@@ -31,6 +33,7 @@ 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.setup.OpenAiSetup;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ConfigurableApplicationContext;
@@ -72,7 +75,7 @@ public class LlmConfig {
     private ChatClient createChatClient() {
         try {
             return createConfiguredChatClient();
-        } catch (RuntimeException e) {
+        } catch (RuntimeException | LinkageError e) {
             log.warn("LLM Provider configuration cannot create ChatClient, 
ChatClient bean will not be created", e);
             return null;
         }
@@ -116,10 +119,23 @@ public class LlmConfig {
             }
         }
 
-        OpenAIClient openAiClient = OpenAIOkHttpClient.builder()
-                .baseUrl(modelProviderConfig.getBaseUrl())
-                
.credential(BearerTokenCredential.create(modelProviderConfig.getApiKey()))
-                .build();
+        OpenAIClient openAiClient = OpenAiSetup.setupSyncClient(
+                modelProviderConfig.getBaseUrl(),
+                modelProviderConfig.getApiKey(),
+                null,
+                null,
+                null,
+                null,
+                false,
+                false,
+                null,
+                Duration.ofSeconds(60),
+                10,
+                null,
+                Map.of(),
+                ObservationRegistry.NOOP,
+                Metrics.globalRegistry,
+                null);
 
         // Create Chat Options
         OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
diff --git 
a/hertzbeat-ai/src/test/java/org/apache/hertzbeat/ai/config/LlmConfigTest.java 
b/hertzbeat-ai/src/test/java/org/apache/hertzbeat/ai/config/LlmConfigTest.java
index 3ba5d35c25..2d7c83d258 100644
--- 
a/hertzbeat-ai/src/test/java/org/apache/hertzbeat/ai/config/LlmConfigTest.java
+++ 
b/hertzbeat-ai/src/test/java/org/apache/hertzbeat/ai/config/LlmConfigTest.java
@@ -31,6 +31,7 @@ import 
org.apache.hertzbeat.common.entity.manager.GeneralConfig;
 import org.apache.hertzbeat.common.util.JsonUtil;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.support.GenericApplicationContext;
 
 class LlmConfigTest {
@@ -106,6 +107,11 @@ class LlmConfigTest {
                 });
     }
 
+    @Test
+    void openAiChatClientHasNoBeanAnnotation() throws NoSuchMethodException {
+        
assertFalse(LlmConfig.class.getDeclaredMethod("openAiChatClient").isAnnotationPresent(Bean.class));
+    }
+
     @Test
     void applicationContextRegistersClientWithConfiguredApiKey() {
         GeneralConfigDao generalConfigDao = mock(GeneralConfigDao.class);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to