generate_ai_answer_logic.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package sop_task
  2. import (
  3. "context"
  4. "fmt"
  5. "wechat-api/hook/fastgpt"
  6. "wechat-api/internal/svc"
  7. "wechat-api/internal/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type GenerateAiAnswerLogic struct {
  11. logx.Logger
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. }
  15. func NewGenerateAiAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GenerateAiAnswerLogic {
  16. return &GenerateAiAnswerLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx}
  20. }
  21. func (l *GenerateAiAnswerLogic) GenerateAiAnswer(req *types.GenerateAiAnswerReq) (*types.GenerateAiAnswerResp, error) {
  22. resp := types.GenerateAiAnswerResp{}
  23. prompt := fmt.Sprintf(`
  24. 请根据用户输入的内容,包括角色、目标用户和背景介绍优化用户输入的内容。
  25. 用户输入内容:%s
  26. # 回复要求
  27. - 如果优化成功,只返回具体的优化后的内容
  28. - 如果未优化成功,只返回优化失败的原因
  29. `, req.Content)
  30. systemPrompt := "你是一个写作高手,帮助用户撰写或优化文案"
  31. baseUrl := l.svcCtx.Config.Fastgpt.BASE_URL
  32. apiKey := l.svcCtx.Config.Fastgpt.API_KEY
  33. answer, err := fastgpt.ChatWithCustomConfig(baseUrl, apiKey, systemPrompt, prompt)
  34. if err != nil {
  35. return nil, err
  36. }
  37. resp.Data = answer
  38. return &resp, nil
  39. }