AiController.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.qingjian.module.ai.controller;
  2. import com.qingjian.common.model.ai.entity.AppChatModel;
  3. import com.qingjian.common.model.ai.query.ChatRequest;
  4. import com.qingjian.module.ai.service.AiService;
  5. import org.noear.solon.annotation.*;
  6. import org.noear.solon.core.util.MimeType;
  7. import reactor.core.publisher.Flux;
  8. import java.util.List;
  9. @Controller
  10. @Mapping("/ai")
  11. public class AiController {
  12. @Inject
  13. private AiService aiService;
  14. /**
  15. * 更新或者创建 模型
  16. *
  17. * @param model 模型信息
  18. */
  19. @Post
  20. @Mapping("/create")
  21. public void createModel(AppChatModel model) {
  22. aiService.createModel(model);
  23. }
  24. /**
  25. * 处理AI聊天请求
  26. *
  27. * @param chatRequest 聊天请求参数,包含会话ID、内容和模型信息
  28. * @return 流式响应的聊天结果
  29. */
  30. @Post
  31. @Mapping(path = "/chat_test", produces = MimeType.TEXT_EVENT_STREAM_UTF8_VALUE)
  32. public Flux<String> chat_test(ChatRequest chatRequest) {
  33. return aiService.chat(chatRequest);
  34. }
  35. /**
  36. * 测试AI聊天接口
  37. *
  38. * @param input 输入内容
  39. * @param sessionId 会话ID
  40. * @return 流式响应的聊天结果
  41. */
  42. @Get
  43. @Mapping(path = "/chat", produces = MimeType.TEXT_EVENT_STREAM_UTF8_VALUE)
  44. public Flux<String> chat_test(String input, String sessionId) {
  45. ChatRequest chatRequest = new ChatRequest();
  46. chatRequest.setContent(input);
  47. chatRequest.setSessionId(sessionId);
  48. return aiService.chat(chatRequest);
  49. }
  50. @Get
  51. @Mapping("/qs")
  52. public List<String> qs() {
  53. return aiService.qs();
  54. }
  55. }