Commit dffaa3db authored by zhouwei's avatar zhouwei

支持gateway传递model和model key

parent ed4aafc7
......@@ -5,6 +5,8 @@ public interface Constant {
int picType = 1;
int textType = 0;
String ACCOUNT = "account";
String MODEL = "model";
String MODEL_KEY = "modelKey";
int SUCCESS_STATUS = 200;
String WEATHER_GROUP = "weatherType";
String ADMIN_ROLE = "admin";
......
......@@ -16,10 +16,12 @@ public class WebConfig extends WebMvcConfigurationSupport {
private LoginInterceptor loginInterceptor;
@Resource
LogResponseTimeInterceptor logResponseTimeInterceptor;
@Resource
HeaderInterceptor headerInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
//
registry.addInterceptor(headerInterceptor);
registry.addInterceptor(loginInterceptor);
registry.addInterceptor(logResponseTimeInterceptor);
super.addInterceptors(registry);
......
......@@ -5,5 +5,6 @@ import lombok.Data;
@Data
public class TranslateInputDTO {
String record_json;
String msg_info;
String language;
}
package com.nanyan.securitylink.entity;
public class UserHeader {
String userId;
String accountName;
String role;
String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
import lombok.Data;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Data
public class UserHeader {
String model;
String modelKey;
}
......@@ -5,6 +5,7 @@ import com.nanyan.securitylink.common.MsgCode;
import com.nanyan.securitylink.entity.UserHeader;
import com.nanyan.securitylink.entity.UserThreadLocal;
import com.nanyan.securitylink.execption.HeaderException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
......@@ -14,19 +15,21 @@ import javax.servlet.http.HttpServletResponse;
import java.util.Base64;
@Slf4j
@Component
public class HeaderInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try{
String accountName = getHeader(request, Constant.ACCOUNT);
String model = getHeader(request, Constant.MODEL);
String modelKey = getHeader(request, Constant.MODEL_KEY);
UserHeader userHeader = new UserHeader();
userHeader.setAccountName(accountName);
userHeader.setModel(model);
userHeader.setModelKey(modelKey);
UserThreadLocal.set(userHeader);
}catch (Exception e){
e.printStackTrace();
throw new HeaderException(MsgCode.LOGIN_FAILED);
log.info("", e);
}
return true;
......@@ -41,8 +44,6 @@ public class HeaderInterceptor implements HandlerInterceptor {
if(StringUtils.isEmpty(value)){
return "";
}
byte[] decodedBytes = Base64.getDecoder().decode(value);
value = new String(decodedBytes);
return value;
}
}
......@@ -31,10 +31,10 @@ public class LogResponseTimeInterceptor implements HandlerInterceptor {
// System.out.println("接口耗时:" + time + "ms");
String requestURI = request.getRequestURI();
UserHeader userHeader = UserThreadLocal.get();
String accountName = "";
String model = "";
if(userHeader != null){
accountName = UserThreadLocal.get().getAccountName();
logger.info("account:{} 接口{}耗时{} ms", accountName,requestURI, time);
model = UserThreadLocal.get().getModel();
logger.info("model:{} 接口{}耗时{} ms", model,requestURI, time);
}else {
logger.info("接口{}耗时{} ms",requestURI, time);
}
......
......@@ -11,10 +11,7 @@ import java.io.IOException;
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
String uri = request.getRequestURI();
String token = request.getHeader("token"); // 从请求头中获取 token
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
return true;
}
}
......@@ -6,9 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.nanyan.securitylink.common.MsgCode;
import com.nanyan.securitylink.config.AppConfig;
import com.nanyan.securitylink.dto.TranslateDTO;
import com.nanyan.securitylink.entity.ChatCompletionResponse;
import com.nanyan.securitylink.entity.ChatInputData;
import com.nanyan.securitylink.entity.Message;
import com.nanyan.securitylink.entity.*;
import com.nanyan.securitylink.execption.BaseException;
import com.nanyan.securitylink.service.AIService;
import com.nanyan.securitylink.vo.AIResponse;
......@@ -89,7 +87,12 @@ public class DeepSeekAIServiceImpl implements AIService {
ChatInputData chatInputData = new ChatInputData();
buildTranslate(chatInputData, translateDTO);
ChatCompletionResponse chatCompletionResponse = aiRequest(chatInputData, appConfig.getApiTranslateKey());
UserHeader userHeader = UserThreadLocal.get();
String apiKey = appConfig.getApiTranslateKey();
if(StringUtils.isNotEmpty(userHeader.getModelKey())){
apiKey = userHeader.getModelKey();
}
ChatCompletionResponse chatCompletionResponse = aiRequest(chatInputData, apiKey);
if (CollectionUtils.isNotEmpty(chatCompletionResponse.getChoices())) {
AIResponse aiResponse = new AIResponse();
......@@ -103,7 +106,12 @@ public class DeepSeekAIServiceImpl implements AIService {
ChatInputData chatInputData = new ChatInputData();
buildNewsTag(chatInputData, translateDTO);
ChatCompletionResponse chatCompletionResponse = aiRequest(chatInputData, appConfig.getApiTranslateKey());
UserHeader userHeader = UserThreadLocal.get();
String apiKey = appConfig.getApiTranslateKey();
if(StringUtils.isNotEmpty(userHeader.getModelKey())){
apiKey = userHeader.getModelKey();
}
ChatCompletionResponse chatCompletionResponse = aiRequest(chatInputData, apiKey);
if (CollectionUtils.isNotEmpty(chatCompletionResponse.getChoices())) {
AIResponse aiResponse = new AIResponse();
......@@ -129,7 +137,12 @@ public class DeepSeekAIServiceImpl implements AIService {
}
private void buildNewsTag(ChatInputData chatInputData, TranslateDTO translateDTO) {
chatInputData.setModel("deepseek-v3-250324");
UserHeader userHeader = UserThreadLocal.get();
if(StringUtils.isNotEmpty(userHeader.getModel())){
chatInputData.setModel(userHeader.getModel());
}else {
chatInputData.setModel("deepseek-v3-250324");
}
chatInputData.setStream(false);
List<Message> messages = new ArrayList<>();
chatInputData.setMessages(messages);
......@@ -147,7 +160,7 @@ public class DeepSeekAIServiceImpl implements AIService {
} catch (JsonProcessingException e) {
throw new BaseException(MsgCode.JSON_ERROR);
}
log.info("translate json:{}", writeValueAsString);
log.info("json:{}", writeValueAsString);
HttpEntity header = getHeader(apiKey);
HttpEntity<String> entity = new HttpEntity<>(writeValueAsString, header.getHeaders());
ResponseEntity<ChatCompletionResponse> response = restTemplate.postForEntity(DEEP_SEEK_URL, entity, ChatCompletionResponse.class);
......@@ -159,7 +172,12 @@ public class DeepSeekAIServiceImpl implements AIService {
}
private void buildTranslate(ChatInputData chatInputData, TranslateDTO translateDTO) {
chatInputData.setModel("deepseek-v3-250324");
UserHeader userHeader = UserThreadLocal.get();
if(StringUtils.isNotEmpty(userHeader.getModel())){
chatInputData.setModel(userHeader.getModel());
}else {
chatInputData.setModel("deepseek-v3-250324");
}
chatInputData.setStream(false);
List<Message> messages = new ArrayList<>();
chatInputData.setMessages(messages);
......@@ -187,7 +205,7 @@ public class DeepSeekAIServiceImpl implements AIService {
private static Message getUserTagDeepSeekMessage(TranslateDTO translateDTO) {
Message userRole = new Message();
userRole.setRole("user");
userRole.setContent(translateDTO.getInputs().getRecord_json());
userRole.setContent(translateDTO.getInputs().getMsg_info());
return userRole;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment