refactor: 重构AI服务架构为基于gRPC的实现
- 将AI服务从OpenAI API调用重构为gRPC服务架构 - 添加gRPC相关依赖和Protobuf编译插件 - 更新application.yml配置为gRPC客户端设置 - 移除旧的AIServiceImpl实现 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -14,5 +14,111 @@
|
||||
<packaging>jar</packaging>
|
||||
<description>AIOJ AI服务</description>
|
||||
|
||||
<!-- TODO: 添加依赖 -->
|
||||
<dependencies>
|
||||
<!-- ==================== API文档 ==================== -->
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ==================== 内部模块 ==================== -->
|
||||
<dependency>
|
||||
<groupId>cn.meowrain.aioj</groupId>
|
||||
<artifactId>aioj-backend-common-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.meowrain.aioj</groupId>
|
||||
<artifactId>aioj-backend-common-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ==================== Web ==================== -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ==================== gRPC ==================== -->
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-netty-shaded</artifactId>
|
||||
<version>1.68.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-protobuf</artifactId>
|
||||
<version>1.68.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-stub</artifactId>
|
||||
<version>1.68.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-services</artifactId>
|
||||
<version>1.68.1</version>
|
||||
</dependency>
|
||||
<!-- Protobuf -->
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>4.29.2</version>
|
||||
</dependency>
|
||||
<!-- 对于 Java 9+ 需要 javax.annotation -->
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat</groupId>
|
||||
<artifactId>annotations-api</artifactId>
|
||||
<version>6.0.53</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- ==================== Spring Cloud 服务发现 ==================== -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ==================== 测试 ==================== -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>kr.motd.maven</groupId>
|
||||
<artifactId>os-maven-plugin</artifactId>
|
||||
<version>1.7.1</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
<plugins>
|
||||
<!-- Protobuf 编译插件 -->
|
||||
<plugin>
|
||||
<groupId>org.xolstice.maven.plugins</groupId>
|
||||
<artifactId>protobuf-maven-plugin</artifactId>
|
||||
<version>0.6.1</version>
|
||||
<configuration>
|
||||
<protocArtifact>com.google.protobuf:protoc:4.29.2:exe:${os.detected.classifier}</protocArtifact>
|
||||
<pluginId>grpc-java</pluginId>
|
||||
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.68.1:exe:${os.detected.classifier}</pluginArtifact>
|
||||
<protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
<goal>compile-custom</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -1,72 +0,0 @@
|
||||
package cn.meowrain.aioj.backend.aiservice.service.impl;
|
||||
|
||||
import cn.meowrain.aioj.backend.aiservice.service.AIService;
|
||||
import dev.langchain4j.model.chat.ChatLanguageModel;
|
||||
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* AI 服务实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AIServiceImpl implements AIService {
|
||||
|
||||
private final ChatLanguageModel chatLanguageModel;
|
||||
|
||||
@Override
|
||||
public String analyzeCode(String code, String language) {
|
||||
String prompt = buildPrompt("代码分析", language, code,
|
||||
"请分析以下代码的质量、潜在问题和改进建议。");
|
||||
log.info("执行代码分析: language={}, codeLength={}", language, code.length());
|
||||
return chatLanguageModel.generate(prompt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String optimizeCode(String code, String language) {
|
||||
String prompt = buildPrompt("代码优化", language, code,
|
||||
"请提供以下代码的优化建议,包括性能优化、代码风格改进等。");
|
||||
log.info("执行代码优化: language={}, codeLength={}", language, code.length());
|
||||
return chatLanguageModel.generate(prompt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateTestCases(String code, String language) {
|
||||
String prompt = buildPrompt("测试用例生成", language, code,
|
||||
"请为以下代码生成完整的测试用例,包括边界条件和异常情况。");
|
||||
log.info("生成测试用例: language={}, codeLength={}", language, code.length());
|
||||
return chatLanguageModel.generate(prompt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String explainCode(String code, String language) {
|
||||
String prompt = buildPrompt("代码解释", language, code,
|
||||
"请详细解释以下代码的功能、逻辑和实现方式。");
|
||||
log.info("解释代码: language={}, codeLength={}", language, code.length());
|
||||
return chatLanguageModel.generate(prompt);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建提示词
|
||||
*/
|
||||
private String buildPrompt(String task, String language, String code, String instruction) {
|
||||
return String.format("""
|
||||
# 任务:%s
|
||||
|
||||
# 编程语言:%s
|
||||
|
||||
# 代码:
|
||||
```%s
|
||||
%s
|
||||
```
|
||||
|
||||
# 要求:
|
||||
%s
|
||||
|
||||
请提供详细、准确的分析结果。
|
||||
""", task, language, language, code, instruction);
|
||||
}
|
||||
}
|
||||
@@ -39,14 +39,14 @@ jwt:
|
||||
access-expire: 900000 # 15分钟
|
||||
refresh-expire: 604800000 # 7天
|
||||
|
||||
# AI 服务配置
|
||||
ai:
|
||||
openai:
|
||||
api-key: ${OPENAI_API_KEY:your-api-key}
|
||||
base-url: ${OPENAI_BASE_URL:https://api.openai.com}
|
||||
model: ${OPENAI_MODEL:gpt-4}
|
||||
max-tokens: ${OPENAI_MAX_TOKENS:2000}
|
||||
temperature: ${OPENAI_TEMPERATURE:0.7}
|
||||
# gRPC 客户端配置
|
||||
grpc:
|
||||
client:
|
||||
host: ${GRPC_SERVER_HOST:localhost}
|
||||
port: ${GRPC_SERVER_PORT:50051}
|
||||
timeout: ${GRPC_TIMEOUT:10}
|
||||
tls-enabled: ${GRPC_TLS_ENABLED:false}
|
||||
max-message-size: ${GRPC_MAX_MESSAGE_SIZE:10485760}
|
||||
|
||||
aioj:
|
||||
log:
|
||||
|
||||
Reference in New Issue
Block a user