diff --git a/src/main/java/cn/teammodel/controller/frontend/AiDeepSeekController.java b/src/main/java/cn/teammodel/controller/frontend/AiDeepSeekController.java index a966b38..b0e3651 100644 --- a/src/main/java/cn/teammodel/controller/frontend/AiDeepSeekController.java +++ b/src/main/java/cn/teammodel/controller/frontend/AiDeepSeekController.java @@ -95,7 +95,7 @@ public class AiDeepSeekController { * @return */ @PostMapping("session/userid") - @ApiOperation("查询自己的会话列表") + @ApiOperation("查询当前登录的会话列表") public R> UserId(){ String userId = SecurityUtil.getLoginUser().getId(); List sessions = deepSeekSessionService.UserSessionList(userId); @@ -108,7 +108,7 @@ public class AiDeepSeekController { * @return */ @GetMapping("session/history/{sessionId}") - @ApiOperation("查询我的聊天记录") + @ApiOperation("查询当前登录的某个聊天记录") public R> getHistory(@PathVariable String sessionId) { String userId = ((TmdUserDetail) SecurityUtil.getAuthentication().getPrincipal()).getClaims().getSubject(); List history = deepSeekSessionService.listHistory(sessionId, userId); diff --git a/src/main/java/cn/teammodel/model/dto/ai/ChatCompletionReqDto.java b/src/main/java/cn/teammodel/model/dto/ai/ChatCompletionReqDto.java index ac163da..86a9466 100644 --- a/src/main/java/cn/teammodel/model/dto/ai/ChatCompletionReqDto.java +++ b/src/main/java/cn/teammodel/model/dto/ai/ChatCompletionReqDto.java @@ -1,5 +1,6 @@ package cn.teammodel.model.dto.ai; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -8,8 +9,9 @@ import javax.validation.constraints.NotBlank; public class ChatCompletionReqDto { private String sessionId; /** - * 预设的会话面具 id + * 预设的会话 id */ + @ApiModelProperty("会话id,没有则为空") private String appId; @NotBlank(message = "请输入消息内容") private String text; diff --git a/src/main/java/cn/teammodel/model/dto/ai/ChatModelDto.java b/src/main/java/cn/teammodel/model/dto/ai/ChatModelDto.java index 298edd4..5f77019 100644 --- a/src/main/java/cn/teammodel/model/dto/ai/ChatModelDto.java +++ b/src/main/java/cn/teammodel/model/dto/ai/ChatModelDto.java @@ -16,6 +16,4 @@ public class ChatModelDto { public ArrayList chat; public ArrayList cycleChats; public ArrayList end; - - } diff --git a/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatRequestDto.java b/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatRequestDto.java index 308c721..83784c7 100644 --- a/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatRequestDto.java +++ b/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatRequestDto.java @@ -1,6 +1,9 @@ package cn.teammodel.model.dto.ai.deepseek; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.Builder; +import lombok.Builder.Default; import java.util.List; @@ -37,8 +40,19 @@ import java.util.List; */ @Data public class ChatRequestDto { + @ApiModelProperty("会话模型") private String model; + @ApiModelProperty("会话内容") private List messages; + /** + * 采样温度,介于 0 和 2 之间。更高的值,如 0.8,会使输出更随机,而更低的值,如 0.2,会使其更加集中和确定。 + * 我们通常建议可以更改这个值或者更改 top_p,但不建议同时对两者进行修改。 + */ private int temperature; - private int max_tokens; + /** + * 介于 1 到 8192 间的整数,限制一次请求中模型生成 completion 的最大 token 数。输入 token 和输出 token 的总长度受模型的上下文长度的限制。 + * 如未指定 max_tokens参数,默认使用 4096。 + */ + @ApiModelProperty("最大生成token数") + private int max_tokens = 2048; } diff --git a/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatResponseDto.java b/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatResponseDto.java index a88ee88..6dbb681 100644 --- a/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatResponseDto.java +++ b/src/main/java/cn/teammodel/model/dto/ai/deepseek/ChatResponseDto.java @@ -5,7 +5,7 @@ import lombok.Data; import java.util.List; /** - * 接着响应的json 格式来设计响应体 用来响应体字符串 + * 接收DeepSeek响应的json 格式来设计响应体 用来响应体字符串 */ @Data public class ChatResponseDto { diff --git a/src/main/java/cn/teammodel/model/dto/ai/deepseek/HistoryRequestDto.java b/src/main/java/cn/teammodel/model/dto/ai/deepseek/HistoryRequestDto.java new file mode 100644 index 0000000..ec6dbc4 --- /dev/null +++ b/src/main/java/cn/teammodel/model/dto/ai/deepseek/HistoryRequestDto.java @@ -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; +} diff --git a/src/main/java/cn/teammodel/model/dto/ai/deepseek/MessageDto.java b/src/main/java/cn/teammodel/model/dto/ai/deepseek/MessageDto.java index 19af4da..9606fd8 100644 --- a/src/main/java/cn/teammodel/model/dto/ai/deepseek/MessageDto.java +++ b/src/main/java/cn/teammodel/model/dto/ai/deepseek/MessageDto.java @@ -1,5 +1,6 @@ package cn.teammodel.model.dto.ai.deepseek; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -7,8 +8,20 @@ import lombok.Data; */ @Data public class MessageDto { + /** + * 角色 + */ + @ApiModelProperty("角色") private String role; + /** + * 会话id + */ + @ApiModelProperty("会话id,没有则为空") private String sessionId; + /** + * 提问内容 + */ + @ApiModelProperty("提问内容") private String content; } diff --git a/src/main/java/cn/teammodel/model/entity/ai/DeepSeekSession.java b/src/main/java/cn/teammodel/model/entity/ai/DeepSeekSession.java index b31f3e0..ad78efc 100644 --- a/src/main/java/cn/teammodel/model/entity/ai/DeepSeekSession.java +++ b/src/main/java/cn/teammodel/model/entity/ai/DeepSeekSession.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.UUID; import cn.teammodel.model.entity.BaseItem; import com.azure.spring.data.cosmos.core.mapping.Container; import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -23,31 +24,37 @@ public class DeepSeekSession extends BaseItem { /** * 用户id */ + @ApiModelProperty("用户id") public String userId; /** * 会话标题 */ + @ApiModelProperty("会话标题") private String title; /** * 生成该 completion 的模型名。 */ + @ApiModelProperty("模型名") private String model; /** * 创建时间 */ + @ApiModelProperty("创建时间") private long createTime; /** * 产生对话即更新时间,按更新时间排序 */ + @ApiModelProperty("更新时间") private Long updateTime; /** * 会话历史记录 */ + @ApiModelProperty("历史记录") private List history; @Data @@ -55,6 +62,7 @@ public class DeepSeekSession extends BaseItem { /** * 该对话的唯一标识符。 */ + @ApiModelProperty("该对话的唯一标识符") private String id; /** @@ -64,16 +72,19 @@ public class DeepSeekSession extends BaseItem { * assistant:模型。 * system:模型和用户之间的对话。 */ + @ApiModelProperty("角色") private String role; /** * 用户的提问文本 */ + @ApiModelProperty("用户提问文本") private String userText; /** - * 回答的文本 + * 模型回答的文本 */ + @ApiModelProperty("模型回答的文本") private String aiText; /** @@ -83,11 +94,13 @@ public class DeepSeekSession extends BaseItem { * content_filter:输出内容因触发过滤策略而被过滤。 * insufficient_system_resource:系统推理资源不足,生成被打断。 */ + @ApiModelProperty("停止原因 [stop, length, content_filter, tool_calls, insufficient_system_resource] 模型停止生成 token 的原因") private String finish_reason; /** * 创建聊天完成时的 Unix 时间戳 */ + @ApiModelProperty("提问内容创建时间") private Long createTime; public static DeepSeekMessage of(String userText, String aiText){ diff --git a/src/main/java/cn/teammodel/repository/AppraiseRepository.java b/src/main/java/cn/teammodel/repository/AppraiseRepository.java index 42f3df1..a674f4c 100644 --- a/src/main/java/cn/teammodel/repository/AppraiseRepository.java +++ b/src/main/java/cn/teammodel/repository/AppraiseRepository.java @@ -25,7 +25,7 @@ import java.util.Set; public interface AppraiseRepository extends CosmosRepository { Appraise findBySchoolId(String schoolId, PartitionKey partitionKey); Appraise findAppraiseBySchoolIdAndPeriodIdAndCode(String schoolId, String periodId, String code); - + Appraise findAppraiseById(String id, PartitionKey partitionKey); /** * 获取模板树 */ diff --git a/src/main/java/cn/teammodel/service/EvaluationService.java b/src/main/java/cn/teammodel/service/EvaluationService.java index 7948038..74d2020 100644 --- a/src/main/java/cn/teammodel/service/EvaluationService.java +++ b/src/main/java/cn/teammodel/service/EvaluationService.java @@ -19,6 +19,7 @@ import java.util.Map; * @create 2023-11-20 17:46 */ public interface EvaluationService { + Appraise getTree(GetEvaluateTreeDto getEvaluateTreeDto); /** diff --git a/src/main/java/cn/teammodel/service/impl/DeepSeekServiceImpl.java b/src/main/java/cn/teammodel/service/impl/DeepSeekServiceImpl.java index 8628826..9df8dfa 100644 --- a/src/main/java/cn/teammodel/service/impl/DeepSeekServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/DeepSeekServiceImpl.java @@ -99,7 +99,7 @@ public class DeepSeekServiceImpl implements DeepSeekService { session.setCreateTime(Instant.now().toEpochMilli()); session.setUpdateTime(Instant.now().toEpochMilli()); session.setHistory(history); - session =deepSeekRepository.save(session); + session = deepSeekRepository.save(session); }else { session.getHistory().add(savaMessage); deepSeekService.updateSession(session, message.getSessionId()); diff --git a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java index 80d3eca..823dbb3 100644 --- a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java @@ -25,6 +25,7 @@ import cn.teammodel.utils.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.azure.cosmos.models.CosmosPatchOperations; +import com.azure.cosmos.models.PartitionKey; import com.azure.spring.data.cosmos.core.query.CosmosPageRequest; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfReader; diff --git a/src/main/resources/DeepSeekConfig.properties b/src/main/resources/DeepSeekConfig.properties index 0ca02e2..e556c21 100644 --- a/src/main/resources/DeepSeekConfig.properties +++ b/src/main/resources/DeepSeekConfig.properties @@ -1,3 +1,4 @@ key=sk-83b5b6dd85c745cbae2572ea01c54e44 url=https://api.deepseek.com/chat/completions -model=deepseek-chat \ No newline at end of file +model=deepseek-chat +modelReasoner=deepseek-reasoner \ No newline at end of file