Nav apraksta
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

prompt_sync_routes.go 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package routes
  2. import (
  3. "context"
  4. "git.x2erp.com/qdy/go-base/authbase"
  5. "git.x2erp.com/qdy/go-base/ctx"
  6. "git.x2erp.com/qdy/go-base/model/response"
  7. "git.x2erp.com/qdy/go-base/webx/router"
  8. "git.x2erp.com/qdy/go-svc-code/internal/opencode"
  9. )
  10. // PromptSyncRequest 同步对话请求
  11. type PromptSyncRequest struct {
  12. SessionID string `json:"sessionID" binding:"required"`
  13. Parts []opencode.TextPart `json:"parts" binding:"required"`
  14. Agent string `json:"agent,omitempty"`
  15. Model *opencode.ModelInfo `json:"model,omitempty"`
  16. }
  17. // PromptSyncResponse 同步对话响应
  18. type PromptSyncResponse struct {
  19. Info opencode.AssistantMessage `json:"info"`
  20. Parts []interface{} `json:"parts"`
  21. }
  22. // RegisterPromptSyncRoutes 注册同步对话路由
  23. func RegisterPromptSyncRoutes(ws *router.RouterService, client opencode.OpenCodeClient) {
  24. // 同步对话(需要Token认证)
  25. ws.POST("/api/prompt/sync",
  26. func(req *PromptSyncRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[PromptSyncResponse], error) {
  27. prompt := &opencode.PromptRequest{
  28. Parts: req.Parts,
  29. Agent: req.Agent,
  30. Model: req.Model,
  31. }
  32. resp, err := client.SendPrompt(ctx, req.SessionID, prompt)
  33. if err != nil {
  34. return &response.QueryResult[PromptSyncResponse]{
  35. Success: false,
  36. Message: err.Error(),
  37. }, nil
  38. }
  39. return &response.QueryResult[PromptSyncResponse]{
  40. Success: true,
  41. Data: PromptSyncResponse{
  42. Info: resp.Info,
  43. Parts: resp.Parts,
  44. },
  45. }, nil
  46. },
  47. ).Use(authbase.TokenAuth).Desc("同步对话(阻塞等待完整响应)").Register()
  48. }