Commit dffaa3db authored by zhouwei's avatar zhouwei

支持gateway传递model和model key

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