| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package handler
- import (
- "context"
- "net/http"
- "time"
- "dbview/service/internal/common/response"
- "dbview/service/internal/modules/mcp_ai/api"
- "dbview/service/internal/modules/mcp_ai/service"
- "github.com/gin-gonic/gin"
- )
- // Handler 提供 AI 聊天接口的 HTTP 处理器。
- type Handler struct {
- svc *service.AIService
- }
- // NewHandler 创建 Handler。
- func NewHandler(svc *service.AIService) *Handler {
- return &Handler{svc: svc}
- }
- // Chat 提供 POST /ai/chat 接口。
- func (h *Handler) Chat(c *gin.Context) {
- var req api.ChatRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(http.StatusBadRequest, response.Response{Code: 1, Msg: "参数错误", Error: err.Error()})
- return
- }
- ctx, cancel := context.WithTimeout(c.Request.Context(), 45*time.Second)
- defer cancel()
- text, err := h.svc.Chat(ctx, req.Prompt, req.System, req.Model)
- if err != nil {
- c.JSON(http.StatusInternalServerError, response.Response{Code: 2, Msg: "AI 调用失败", Error: err.Error()})
- return
- }
- c.JSON(http.StatusOK, response.Response{Code: 0, Msg: "ok", Data: api.ChatResponse{Text: text}})
- }
|