up:添加获取默认评价树接口;DeepSeek对话相关接口

develop
PL 1 month ago
parent dfadaf37bc
commit 687e28f3df

@ -95,7 +95,7 @@ public class AiDeepSeekController {
* @return * @return
*/ */
@PostMapping("session/userid") @PostMapping("session/userid")
@ApiOperation("查询自己的会话列表") @ApiOperation("查询当前登录的会话列表")
public R<List<DeepSeekSession>> UserId(){ public R<List<DeepSeekSession>> UserId(){
String userId = SecurityUtil.getLoginUser().getId(); String userId = SecurityUtil.getLoginUser().getId();
List<DeepSeekSession> sessions = deepSeekSessionService.UserSessionList(userId); List<DeepSeekSession> sessions = deepSeekSessionService.UserSessionList(userId);
@ -108,7 +108,7 @@ public class AiDeepSeekController {
* @return * @return
*/ */
@GetMapping("session/history/{sessionId}") @GetMapping("session/history/{sessionId}")
@ApiOperation("查询我的聊天记录") @ApiOperation("查询当前登录的某个聊天记录")
public R<List<DeepSeekMessage>> getHistory(@PathVariable String sessionId) { public R<List<DeepSeekMessage>> getHistory(@PathVariable String sessionId) {
String userId = ((TmdUserDetail) SecurityUtil.getAuthentication().getPrincipal()).getClaims().getSubject(); String userId = ((TmdUserDetail) SecurityUtil.getAuthentication().getPrincipal()).getClaims().getSubject();
List<DeepSeekMessage> history = deepSeekSessionService.listHistory(sessionId, userId); List<DeepSeekMessage> history = deepSeekSessionService.listHistory(sessionId, userId);

@ -34,6 +34,18 @@ public class AppraiseController {
@Resource @Resource
private EvaluationService evaluationService; private EvaluationService evaluationService;
/**
*
* @return
*/
@PostMapping("getDefaultTrees")
@ApiOperation(value = "获取默认评价树", notes = "获取默认评价树")
public R<Appraise> getDefaultTree() {
Appraise appraise = evaluationService.getDefaultTree();
return R.success(appraise);
}
@PostMapping("getTrees") @PostMapping("getTrees")
@ApiOperation(value = "获取评价树", notes = "获取评价树") @ApiOperation(value = "获取评价树", notes = "获取评价树")
public R<Appraise> getEvaluateTree(@RequestBody @Valid GetEvaluateTreeDto getEvaluateTreeDto) { public R<Appraise> getEvaluateTree(@RequestBody @Valid GetEvaluateTreeDto getEvaluateTreeDto) {

@ -1,5 +1,6 @@
package cn.teammodel.model.dto.ai; package cn.teammodel.model.dto.ai;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -8,8 +9,9 @@ import javax.validation.constraints.NotBlank;
public class ChatCompletionReqDto { public class ChatCompletionReqDto {
private String sessionId; private String sessionId;
/** /**
* id * id
*/ */
@ApiModelProperty("会话id没有则为空")
private String appId; private String appId;
@NotBlank(message = "请输入消息内容") @NotBlank(message = "请输入消息内容")
private String text; private String text;

@ -16,6 +16,4 @@ public class ChatModelDto {
public ArrayList<String> chat; public ArrayList<String> chat;
public ArrayList<String> cycleChats; public ArrayList<String> cycleChats;
public ArrayList<String> end; public ArrayList<String> end;
} }

@ -1,6 +1,9 @@
package cn.teammodel.model.dto.ai.deepseek; package cn.teammodel.model.dto.ai.deepseek;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.Builder;
import lombok.Builder.Default;
import java.util.List; import java.util.List;
@ -37,8 +40,19 @@ import java.util.List;
*/ */
@Data @Data
public class ChatRequestDto { public class ChatRequestDto {
@ApiModelProperty("会话模型")
private String model; private String model;
@ApiModelProperty("会话内容")
private List<MessageDto> messages; private List<MessageDto> messages;
/**
* 0 2 0.8使 0.2使
* top_p
*/
private int temperature; private int temperature;
private int max_tokens; /**
* 1 8192 completion token token token
* max_tokens使 4096
*/
@ApiModelProperty("最大生成token数")
private int max_tokens = 2048;
} }

@ -5,7 +5,7 @@ import lombok.Data;
import java.util.List; import java.util.List;
/** /**
* json * DeepSeekjson
*/ */
@Data @Data
public class ChatResponseDto { public class ChatResponseDto {

@ -0,0 +1,25 @@
package cn.teammodel.model.dto.ai.deepseek;
import cn.teammodel.model.entity.ai.DeepSeekSession.DeepSeekMessage;
import lombok.Data;
/**
*
*/
@Data
public class HistoryRequestDto {
/**
* id
*/
private String sessionId;
/**
* id
*/
private String userId;
/**
*
*/
private DeepSeekMessage message;
}

@ -1,5 +1,6 @@
package cn.teammodel.model.dto.ai.deepseek; package cn.teammodel.model.dto.ai.deepseek;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@ -7,8 +8,20 @@ import lombok.Data;
*/ */
@Data @Data
public class MessageDto { public class MessageDto {
/**
*
*/
@ApiModelProperty("角色")
private String role; private String role;
/**
* id
*/
@ApiModelProperty("会话id没有则为空")
private String sessionId; private String sessionId;
/**
*
*/
@ApiModelProperty("提问内容")
private String content; private String content;
} }

@ -4,6 +4,7 @@ import cn.hutool.core.lang.UUID;
import cn.teammodel.model.entity.BaseItem; import cn.teammodel.model.entity.BaseItem;
import com.azure.spring.data.cosmos.core.mapping.Container; import com.azure.spring.data.cosmos.core.mapping.Container;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -23,31 +24,37 @@ public class DeepSeekSession extends BaseItem {
/** /**
* id * id
*/ */
@ApiModelProperty("用户id")
public String userId; public String userId;
/** /**
* *
*/ */
@ApiModelProperty("会话标题")
private String title; private String title;
/** /**
* completion * completion
*/ */
@ApiModelProperty("模型名")
private String model; private String model;
/** /**
* *
*/ */
@ApiModelProperty("创建时间")
private long createTime; private long createTime;
/** /**
* , * ,
*/ */
@ApiModelProperty("更新时间")
private Long updateTime; private Long updateTime;
/** /**
* *
*/ */
@ApiModelProperty("历史记录")
private List<DeepSeekMessage> history; private List<DeepSeekMessage> history;
@Data @Data
@ -55,6 +62,7 @@ public class DeepSeekSession extends BaseItem {
/** /**
* *
*/ */
@ApiModelProperty("该对话的唯一标识符")
private String id; private String id;
/** /**
@ -64,16 +72,19 @@ public class DeepSeekSession extends BaseItem {
* assistant * assistant
* system * system
*/ */
@ApiModelProperty("角色")
private String role; private String role;
/** /**
* *
*/ */
@ApiModelProperty("用户提问文本")
private String userText; private String userText;
/** /**
* *
*/ */
@ApiModelProperty("模型回答的文本")
private String aiText; private String aiText;
/** /**
@ -83,11 +94,13 @@ public class DeepSeekSession extends BaseItem {
* content_filter * content_filter
* insufficient_system_resource * insufficient_system_resource
*/ */
@ApiModelProperty("停止原因 [stop, length, content_filter, tool_calls, insufficient_system_resource] 模型停止生成 token 的原因")
private String finish_reason; private String finish_reason;
/** /**
* Unix * Unix
*/ */
@ApiModelProperty("提问内容创建时间")
private Long createTime; private Long createTime;
public static DeepSeekMessage of(String userText, String aiText){ public static DeepSeekMessage of(String userText, String aiText){

@ -26,6 +26,9 @@ public interface AppraiseRepository extends CosmosRepository<Appraise, String> {
Appraise findBySchoolId(String schoolId, PartitionKey partitionKey); Appraise findBySchoolId(String schoolId, PartitionKey partitionKey);
Appraise findAppraiseBySchoolIdAndPeriodIdAndCode(String schoolId, String periodId, String code); Appraise findAppraiseBySchoolIdAndPeriodIdAndCode(String schoolId, String periodId, String code);
Appraise findAppraiseById(String id, PartitionKey partitionKey);
/** /**
* *
*/ */

@ -19,6 +19,14 @@ import java.util.Map;
* @create 2023-11-20 17:46 * @create 2023-11-20 17:46
*/ */
public interface EvaluationService { public interface EvaluationService {
/**
*
* @return
*/
Appraise getDefaultTree();
Appraise getTree(GetEvaluateTreeDto getEvaluateTreeDto); Appraise getTree(GetEvaluateTreeDto getEvaluateTreeDto);
/** /**

@ -25,6 +25,7 @@ import cn.teammodel.utils.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.azure.cosmos.models.CosmosPatchOperations; import com.azure.cosmos.models.CosmosPatchOperations;
import com.azure.cosmos.models.PartitionKey;
import com.azure.spring.data.cosmos.core.query.CosmosPageRequest; import com.azure.spring.data.cosmos.core.query.CosmosPageRequest;
import com.itextpdf.text.DocumentException; import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfReader;
@ -95,6 +96,29 @@ public class EvaluationServiceImpl implements EvaluationService {
return appraise; return appraise;
} }
/**
*
* @return
*/
@Override
public Appraise getDefaultTree(){
Appraise appraise = appraiseRepository.findAppraiseById("default",new PartitionKey(PK.PK_APPRAISE));
// 如果传参 period 所在没有 tree 的话,则复制一份模板 tree 给他 (处理节点 id)
if (appraise == null) {
appraise = RepositoryUtil.findOne(appraiseRepository.findTemplateTree(), "获取模板评价树失败");
if (appraise == null) {
throw new ServiceException("模板评价树不存在");
}
// refresh
refreshAppraiseTree(appraise);
appraise.setId(null);
appraise = appraiseRepository.save(appraise);
}
return this.buildTree(appraise);
}
@Override @Override
public Appraise getTree(GetEvaluateTreeDto getEvaluateTreeDto) { public Appraise getTree(GetEvaluateTreeDto getEvaluateTreeDto) {
String periodId = getEvaluateTreeDto.getPeriodId(); String periodId = getEvaluateTreeDto.getPeriodId();

@ -1,3 +1,4 @@
key=sk-83b5b6dd85c745cbae2572ea01c54e44 key=sk-83b5b6dd85c745cbae2572ea01c54e44
url=https://api.deepseek.com/chat/completions url=https://api.deepseek.com/chat/completions
model=deepseek-chat model=deepseek-chat
modelReasoner=deepseek-reasoner
Loading…
Cancel
Save