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

wangtao29 pushed a commit to branch intelligence-front-end
in repository https://gitbox.apache.org/repos/asf/ozhera.git


The following commit(s) were added to refs/heads/intelligence-front-end by this 
push:
     new 4bddd0a7 feat: add agent config and function (#584)
4bddd0a7 is described below

commit 4bddd0a752f704be22a2a6e184efa3876f5e2ca9
Author: EricDing <[email protected]>
AuthorDate: Wed Jun 18 10:31:47 2025 +0800

    feat: add agent config and function (#584)
---
 .../ozhera-intelligence-service/pom.xml            |  7 ++
 .../intelligence/agents/config/AgentConfig.java    | 48 +++++++++++++
 .../agents/function/TraceAnalysisFunction.java     | 78 ++++++++++++++++++++++
 .../intelligence/service/TraceAnalysisService.java | 18 +++++
 pom.xml                                            |  7 ++
 5 files changed, 158 insertions(+)

diff --git a/ozhera-intelligence/ozhera-intelligence-service/pom.xml 
b/ozhera-intelligence/ozhera-intelligence-service/pom.xml
index fd07f762..73b222c7 100644
--- a/ozhera-intelligence/ozhera-intelligence-service/pom.xml
+++ b/ozhera-intelligence/ozhera-intelligence-service/pom.xml
@@ -162,6 +162,13 @@
             <groupId>com.squareup.okhttp3</groupId>
             <artifactId>okhttp</artifactId>
         </dependency>
+
+        <!-- hive -->
+        <dependency>
+            <groupId>run.mone</groupId>
+            <artifactId>hive-spring-starter</artifactId>
+            <version>1.6.0-jdk21-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/config/AgentConfig.java
 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/config/AgentConfig.java
new file mode 100644
index 00000000..0a7ab822
--- /dev/null
+++ 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/config/AgentConfig.java
@@ -0,0 +1,48 @@
+package org.apache.ozhera.intelligence.agents.config;
+
+import com.google.common.collect.Lists;
+import org.apache.ozhera.intelligence.agents.function.TraceAnalysisFunction;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import run.mone.hive.mcp.function.ChatFunction;
+import run.mone.hive.mcp.service.Rag;
+import run.mone.hive.mcp.service.RoleMeta;
+import run.mone.hive.mcp.service.WebQuery;
+import run.mone.hive.roles.tool.AskTool;
+import run.mone.hive.roles.tool.AttemptCompletionTool;
+import run.mone.hive.roles.tool.ChatTool;
+import run.mone.hive.roles.tool.SpeechToTextTool;
+import run.mone.hive.roles.tool.TextToSpeechTool;
+
+@Configuration
+public class AgentConfig {
+
+    @Value("${mcp.agent.name}")
+    private String agentName;
+
+    @Autowired
+    private TraceAnalysisFunction traceAnalysisFunction;
+
+    @Bean
+    public RoleMeta roleMeta() {
+        return RoleMeta.builder()
+                .profile("你是一名优秀的私人助理")
+                .goal("你的目标是更好的帮助用户")
+                .constraints("不要探讨一些负面的东西,如果用户问你,你可以直接拒绝掉")
+                //允许自动从知识库获取内容(意图识别的小模型)
+                
.webQuery(WebQuery.builder().autoWebQuery(true).modelType("bert").version("finetune-bert-20250605-73a29258").releaseServiceName("bert-is-network").build())
+                
.rag(Rag.builder().autoRag(true).modelType("bert").version("finetune-bert-20250605-ed8acbcf").releaseServiceName("bert-is-knowledge-base").build())
+                //内部工具
+                .tools(Lists.newArrayList(
+                        new ChatTool(),
+                        new AskTool(),
+                        new AttemptCompletionTool(),
+                        new SpeechToTextTool(),
+                        new TextToSpeechTool()))
+                //mcp工具
+                .mcpTools(Lists.newArrayList(new ChatFunction(agentName,20), 
traceAnalysisFunction))
+                .build();
+    }
+}
diff --git 
a/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/function/TraceAnalysisFunction.java
 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/function/TraceAnalysisFunction.java
new file mode 100644
index 00000000..d988e908
--- /dev/null
+++ 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/agents/function/TraceAnalysisFunction.java
@@ -0,0 +1,78 @@
+package org.apache.ozhera.intelligence.agents.function;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ozhera.intelligence.service.TraceAnalysisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Flux;
+import run.mone.hive.mcp.function.McpFunction;
+import run.mone.hive.mcp.spec.McpSchema;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+@Slf4j
+@Component
+public class TraceAnalysisFunction implements McpFunction {
+
+    @Autowired
+    private TraceAnalysisService traceAnalysisService;
+
+    private String name = "stream_hera_analysis";
+
+    private String desc = "根据traceId分析trace链路上异常或者慢查询出现的根本原因";
+
+    private String chaosToolSchema = """
+            {
+                "type": "object",
+                "properties": {
+                    "traceId": {
+                        "type": "string",
+                        "description": "traceId,为32位0-9和a-f组成的随机字符串"
+                    }
+                  },
+                "required": ["traceId"]
+            }
+            """;
+
+
+    @Override
+    public Flux<McpSchema.CallToolResult> apply(Map<String, Object> args) {
+        return Flux.defer(() -> {
+            try {
+                String traceId = getStringParam(args, "traceId");
+
+                if (traceId.isEmpty()) {
+                    log.warn("traceId 为空");
+                }
+
+                String result = traceAnalysisService.analyzeTraceRoot(traceId, 
"online");
+
+                return createSuccessFlux(result);
+            } catch (Exception e) {
+                log.error("执行混沌操作失败", e);
+                return Flux.just(new McpSchema.CallToolResult(
+                    List.of(new McpSchema.TextContent("操作失败:" + 
e.getMessage())), true));
+            }
+        });
+    }
+    
+    private Flux<McpSchema.CallToolResult> createSuccessFlux(String result) {
+        return Flux.just(
+            new McpSchema.CallToolResult(List.of(new 
McpSchema.TextContent(result)), false),
+            new McpSchema.CallToolResult(List.of(new 
McpSchema.TextContent("[DONE]")), false)
+        );
+    }
+    
+    private String getStringParam(Map<String, Object> params, String key) {
+        Object value = params.get(key);
+        return value != null ? value.toString() : "";
+    }
+
+    @Override
+    public String getToolScheme() {
+        return chaosToolSchema;
+    }
+}
diff --git 
a/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/service/TraceAnalysisService.java
 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/service/TraceAnalysisService.java
new file mode 100644
index 00000000..94a67760
--- /dev/null
+++ 
b/ozhera-intelligence/ozhera-intelligence-service/src/main/java/org/apache/ozhera/intelligence/service/TraceAnalysisService.java
@@ -0,0 +1,18 @@
+package org.apache.ozhera.intelligence.service;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class TraceAnalysisService {
+
+    private final ObjectMapper objectMapper = new ObjectMapper();
+
+
+    public String analyzeTraceRoot(String traceId, String env) {
+        return null;
+    }
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4ee8e660..a470d26e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -913,6 +913,13 @@
                 <artifactId>dom4j</artifactId>
                 <version>2.1.3</version>
             </dependency>
+
+            <!-- hive -->
+            <dependency>
+                <groupId>run.mone</groupId>
+                <artifactId>hive-spring-starter</artifactId>
+                <version>1.6.0-jdk21-SNAPSHOT</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 


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

Reply via email to