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:
2026-01-20 17:17:55 +08:00
parent 51d16ea077
commit ef6b5cb11e
4 changed files with 117 additions and 82 deletions

View File

@@ -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);
}
}

View File

@@ -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: