diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java new file mode 100644 index 0000000..2e431a5 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java @@ -0,0 +1,44 @@ +package com.zsc.edu.dify.modules.dify.controller; + +import com.zsc.edu.dify.modules.dify.service.DifyChatService; +import io.github.guoshiqiufeng.dify.chat.dto.request.ChatMessageSendRequest; +import io.github.guoshiqiufeng.dify.chat.dto.request.MessageConversationsRequest; +import io.github.guoshiqiufeng.dify.chat.dto.response.ChatMessageSendCompletionResponse; +import io.github.guoshiqiufeng.dify.chat.dto.response.MessageConversationsResponse; +import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult; +import jakarta.annotation.Resource; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Flux; + +/** + * @author yanghq + * @version 1.0 + * @since 2025/3/25 10:48 + */ +@RestController +@RequestMapping("/v1/chat") +public class V1ChatController { + + @Resource + private DifyChatService difyChatService; + + /** + * 发送消息(流式) + * + * @param sendRequest 消息参数 (可以自定义参数,调用 difyChat 实例时重新组装即可), + * 用户 id可以改为从上下文(token)获取, + * apikey 建议在数据库进行存储,前端调用时传智能体 id,从数据库查询 + */ + @PostMapping(value = "/completions", produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public Flux sendChatMessageStream(@RequestBody ChatMessageSendRequest sendRequest) { + return difyChatService.sendChatMessageStream(sendRequest); + } + + + @GetMapping("/conversations") + public DifyPageResult conversations(@RequestBody MessageConversationsRequest request) { + return difyChatService.conversations(request); + } + +} \ No newline at end of file diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyChatService.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyChatService.java new file mode 100644 index 0000000..2150824 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyChatService.java @@ -0,0 +1,35 @@ +package com.zsc.edu.dify.modules.dify.service; + +import io.github.guoshiqiufeng.dify.chat.DifyChat; +import io.github.guoshiqiufeng.dify.chat.dto.request.ChatMessageSendRequest; +import io.github.guoshiqiufeng.dify.chat.dto.request.MessageConversationsRequest; +import io.github.guoshiqiufeng.dify.chat.dto.response.ChatMessageSendCompletionResponse; +import io.github.guoshiqiufeng.dify.chat.dto.response.MessageConversationsResponse; +import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import reactor.core.publisher.Flux; + +/** + * @author yanghq + * @version 1.0 + * @since 2025/3/25 10:48 + */ +@Slf4j +@Service +public class DifyChatService { + + @Resource + private DifyChat difyChat; + + public Flux sendChatMessageStream(ChatMessageSendRequest sendRequest) { + // 可以进行自定义逻辑处理:参数转换、权限校验等 + return difyChat.sendChatMessageStream(sendRequest); + } + + public DifyPageResult conversations(MessageConversationsRequest request) { + return difyChat.conversations(request); + } + +}