chatApi.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package model
  2. import (
  3. "aiChat/internal/consts"
  4. "context"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "github.com/gogf/gf/v2/net/gclient"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. )
  9. type GPTReq struct {
  10. *BaseQuestion
  11. Identity string `json:"identity"`
  12. }
  13. // SimpleRes 语义服务,响应常用问题
  14. type SimpleRes struct {
  15. Status int `json:"status"`
  16. Result struct {
  17. Prompt string `json:"prompt"`
  18. Answer string `json:"answer"`
  19. } `json:"result"`
  20. }
  21. // GPTRes 业务及扩展聊天响应
  22. type GPTRes struct {
  23. Status int `json:"status"`
  24. Response string `json:"response"`
  25. History [][]string `json:"history"`
  26. Time string `json:"time"`
  27. }
  28. var (
  29. ChatGpt = &cChatGpt{}
  30. )
  31. type cChatGpt struct {
  32. }
  33. func (c *cChatGpt) SimpleDo(ctx context.Context, qReq *QuestionReq) (res *SimpleRes, err error) {
  34. gReq := GPTReq{
  35. BaseQuestion: qReq.BaseQuestion,
  36. Identity: g.Config().MustGet(ctx, "chat.api.identity", "剑鱼chat").String(),
  37. }
  38. var gRes *gclient.Response
  39. gRes, err = g.Client().Header(consts.RequestJsonHeader).Post(ctx, g.Config().MustGet(ctx, "chat.api.addr_simple", "").String(), gReq)
  40. if err != nil {
  41. return nil, err
  42. }
  43. res = &SimpleRes{}
  44. err = gconv.Struct(gRes.ReadAll(), res)
  45. g.Dump("SimpleDo", res)
  46. if err != nil {
  47. return nil, err
  48. }
  49. return
  50. }
  51. func (c *cChatGpt) GPTDo(ctx context.Context, qReq *QuestionReq) (res *GPTRes, err error) {
  52. gReq := GPTReq{
  53. BaseQuestion: qReq.BaseQuestion,
  54. Identity: g.Config().MustGet(ctx, "chat.api.identity", "剑鱼chat").String(),
  55. }
  56. var gRes *gclient.Response
  57. gRes, err = g.Client().Header(consts.RequestJsonHeader).Post(ctx, g.Config().MustGet(ctx, "chat.api.addr_answer", "").String(), gReq)
  58. if err != nil {
  59. return nil, err
  60. }
  61. res = &GPTRes{}
  62. err = gconv.Struct(gRes.ReadAll(), res)
  63. g.Dump("GPTDo", res)
  64. if err != nil {
  65. return nil, err
  66. }
  67. return
  68. }