llm_messages.go 839 B

123456789101112131415161718192021222324252627282930313233343536
  1. package model
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "github.com/sashabaranov/go-openai"
  8. )
  9. type LLMCompletionMessages []openai.ChatCompletionMessage
  10. // Scan value into Jsonb, implements sql.Scanner interface
  11. func (j *LLMCompletionMessages) Scan(value interface{}) error {
  12. bytes, ok := value.([]byte)
  13. if !ok {
  14. return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
  15. }
  16. result := make([]openai.ChatCompletionMessage, 0)
  17. err := json.Unmarshal(bytes, &result)
  18. *j = result
  19. return err
  20. }
  21. // Value return json value, implement driver.Valuer interface
  22. func (j *LLMCompletionMessages) Value() (driver.Value, error) {
  23. return json.Marshal(*j)
  24. }
  25. type LLMMessages struct {
  26. Name string `json:"name"`
  27. Content LLMCompletionMessages `json:"content" gorm:"serializer:json"`
  28. }