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]