Jelajahi Sumber

refactor:重构项目,使用父模块进行依赖管理;
新建spring-ai-learn模块,并将学习spring-ai的代码迁移到该模块;
新建mcp-server模块,开发自定义MCP server的模块;

yangyi 7 bulan lalu
induk
melakukan
135b5afadf
20 mengubah file dengan 132 tambahan dan 29 penghapusan
  1. 4 1
      .gitignore
  2. 35 0
      mcp-server/pom.xml
  3. 3 2
      mcp-server/src/main/java/space/anyi/mcpServer/tool/MyTool.java
  4. 8 0
      mcp-server/src/main/resources/application.yaml
  5. 38 25
      pom.xml
  6. 43 0
      spring-ai-learn/pom.xml
  7. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/Application.java
  8. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyAdvisor.java
  9. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor.java
  10. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor2.java
  11. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyStreamAdvisor.java
  12. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/AdvisorController.java
  13. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatClientController.java
  14. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatMemoryController.java
  15. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/HelloController.java
  16. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/RAGController.java
  17. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ToolTestController.java
  18. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/VectorTestController.java
  19. 0 0
      spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/model/Person.java
  20. 1 1
      spring-ai-learn/src/main/resources/application.yaml

+ 4 - 1
.gitignore

@@ -32,4 +32,7 @@ build/
 .vscode/
 
 ### Mac OS ###
-.DS_Store
+.DS_Store
+
+!spring-ai-learn/
+!mcp-server/

+ 35 - 0
mcp-server/pom.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>space.anyi</groupId>
+        <artifactId>SpringAiAlibaba-learn</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>mcp-server</artifactId>
+    <description>
+        自定义的MCP Server,对外提供一个通过时区获取当前时间的tool
+    </description>
+
+    <properties>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <!-- Source: https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-starter-mcp-server-webflux -->
+        <dependency>
+            <groupId>org.springframework.ai</groupId>
+            <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
+        </dependency>
+        <!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 3 - 2
src/main/java/space/anyi/springAiAlibabaLearn/tool/MyTool.java → mcp-server/src/main/java/space/anyi/mcpServer/tool/MyTool.java

@@ -1,12 +1,13 @@
-package space.anyi.springAiAlibabaLearn.tool;
+package space.anyi.mcpServer.tool;
 
 import org.springframework.ai.tool.annotation.Tool;
 import org.springframework.ai.tool.annotation.ToolParam;
+import org.springframework.stereotype.Component;
 
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
-
+@Component
 public class MyTool {
     /**
      * 使用@Tool注解标注这是一个供LLM调用的tool

+ 8 - 0
mcp-server/src/main/resources/application.yaml

@@ -0,0 +1,8 @@
+server:
+  port: 10001
+spring:
+  application:
+    name: yangyi-mcp-server
+logging:
+  level:
+    root: DEBUG

+ 38 - 25
pom.xml

@@ -7,36 +7,49 @@
     <groupId>space.anyi</groupId>
     <artifactId>SpringAiAlibaba-learn</artifactId>
     <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
     <description>学习Spring AI Alibaba的项目</description>
+    <modules>
+        <module>mcp-server</module>
+        <module>spring-ai-learn</module>
+    </modules>
 
     <properties>
         <maven.compiler.source>21</maven.compiler.source>
         <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <spring.ai.version>1.1.2</spring.ai.version>
+        <spring.boot.version>3.5.10</spring.boot.version>
     </properties>
-
-    <dependencies>
-        <!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-            <version>3.5.10</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.ai</groupId>
-            <artifactId>spring-ai-starter-model-openai</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.ai</groupId>
-            <artifactId>spring-ai-starter-vector-store-pgvector</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.ai</groupId>
-            <artifactId>spring-ai-rag</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-    </dependencies>
-
+    <dependencyManagement>
+        <dependencies>
+            <!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-web</artifactId>
+                <version>${spring.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.ai</groupId>
+                <artifactId>spring-ai-starter-model-openai</artifactId>
+                <version>${spring.ai.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.ai</groupId>
+                <artifactId>spring-ai-starter-vector-store-pgvector</artifactId>
+                <version>${spring.ai.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.ai</groupId>
+                <artifactId>spring-ai-rag</artifactId>
+                <version>${spring.ai.version}</version>
+            </dependency>
+            <!-- Source: https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-starter-mcp-server-webflux -->
+            <dependency>
+                <groupId>org.springframework.ai</groupId>
+                <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
+                <version>${spring.ai.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
 </project>

+ 43 - 0
spring-ai-learn/pom.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>space.anyi</groupId>
+        <artifactId>SpringAiAlibaba-learn</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>spring-ai-learn</artifactId>
+    <description>
+        学习spring-ai的项目
+    </description>
+
+    <properties>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.ai</groupId>
+            <artifactId>spring-ai-starter-model-openai</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.ai</groupId>
+            <artifactId>spring-ai-starter-vector-store-pgvector</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.ai</groupId>
+            <artifactId>spring-ai-rag</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/Application.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/Application.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyAdvisor.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyAdvisor.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor2.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyCallAdvisor2.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyStreamAdvisor.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/advisor/MyStreamAdvisor.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/AdvisorController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/AdvisorController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatClientController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatClientController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatMemoryController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ChatMemoryController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/HelloController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/HelloController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/RAGController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/RAGController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/ToolTestController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/ToolTestController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/controller/VectorTestController.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/controller/VectorTestController.java


+ 0 - 0
src/main/java/space/anyi/springAiAlibabaLearn/model/Person.java → spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/model/Person.java


+ 1 - 1
src/main/resources/application.yaml → spring-ai-learn/src/main/resources/application.yaml

@@ -1,11 +1,11 @@
 server:
+  port: 8080
   servlet:
 #    解决流式响应乱码的问就
     encoding:
       charset: UTF-8
       enable: true
       force: true
-    port: 8080
 spring:
   application:
     name: 学习Spring AI Alibaba的项目