作者 钟来

Merge remote-tracking branch 'origin/master'

... ... @@ -105,7 +105,7 @@
生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/
-->
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.zhonglai.luhui.alarm.AlarmApplication</mainClass>
<mainClass>com.zhonglai.luhui.openai.OpenaiApplication</mainClass>
</manifest>
</archive>
</configuration>
... ...
package com.zhonglai.luhui.openai.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.Message;
import com.ruoyi.common.core.domain.MessageCode;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.service.PublicService;
import com.theokanning.openai.completion.CompletionChoice;
import com.zhonglai.luhui.openai.utils.OpenAiUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
@Api(tags = "chatGPT接口")
@RestController
@RequestMapping("/chatgpt")
public class ChatGPTController {
public class ChatGPTController extends BaseController {
@Autowired
private PublicService publicService;
@ApiOperation("与AI机器进行聊天")
@RequestMapping(value = "/aiChatbot",method = RequestMethod.POST)
public Message aiChatbot(@RequestBody String data)
public Message aiChatbot(HttpServletRequest httpServletRequest, @RequestBody String data)
{
HttpSession session = httpServletRequest.getSession();
if(session!=null)
{
logger.info("{}生成聊天会话:",session.getId());
List<CompletionChoice> list = OpenAiUtils.getAiChatbot(data,session.getId());
int i=0;
for (CompletionChoice completionChoice:list)
{
i+=completionChoice.getText().length();
}
logger.info("{}请求的流量:{},回复的流量:{}",session.getId(),data.length(),i);
return new Message(MessageCode.DEFAULT_SUCCESS_CODE,list);
}
List<CompletionChoice> list = OpenAiUtils.getAiChatbot(data);
return new Message(MessageCode.DEFAULT_SUCCESS_CODE,list);
}
}
... ...
... ... @@ -24,6 +24,9 @@ public class OpenAi {
// 停用词
String stop;
// 用户
String user;
public OpenAi() {
}
... ... @@ -41,6 +44,14 @@ public class OpenAi {
this.stop = stop;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getId() {
return id;
}
... ...
... ... @@ -90,6 +90,10 @@ public class OpenAiUtils {
.topP(openAi.getTopP())
.frequencyPenalty(openAi.getFrequencyPenalty())
.presencePenalty(openAi.getPresencePenalty());
if(!StringUtils.isEmpty(openAi.getUser()))
{
builder.user(openAi.getUser());
}
if (!StringUtils.isEmpty(openAi.getStop())) {
builder.stop(Arrays.asList(openAi.getStop().split(",")));
}
... ... @@ -611,7 +615,18 @@ public class OpenAiUtils {
* @return
*/
public static List<CompletionChoice> getAiChatbot(String question) {
return getAiChatbot(question,null);
}
/**
* 与AI机器进行聊天
*
* @param question
* @return
*/
public static List<CompletionChoice> getAiChatbot(String question,String user) {
OpenAi openAi = PARMS.get("OpenAi44");
openAi.setUser(user);
return getAiResult(openAi, String.format(openAi.getPrompt(), question));
}
... ...
... ... @@ -33,6 +33,17 @@ public class RuoYiConfig
/** 验证码类型 */
private static String captchaType;
/** root */
private static String root;
public static String getRoot() {
return root;
}
public static void setRoot(String root) {
RuoYiConfig.root = root;
}
public String getName()
{
return name;
... ...
... ... @@ -140,6 +140,11 @@ public class Constants
public static final String RESOURCE_PREFIX = "/profile";
/**
* 资源映射路径 前缀
*/
public static final String ROOT = "/**";
/**
* RMI 远程方法调用
*/
public static final String LOOKUP_RMI = "rmi:";
... ...