openai_previous_response_id.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package service
  2. import (
  3. "regexp"
  4. "strings"
  5. )
  6. const (
  7. OpenAIPreviousResponseIDKindEmpty = "empty"
  8. OpenAIPreviousResponseIDKindResponseID = "response_id"
  9. OpenAIPreviousResponseIDKindMessageID = "message_id"
  10. OpenAIPreviousResponseIDKindUnknown = "unknown"
  11. )
  12. var (
  13. openAIResponseIDPattern = regexp.MustCompile(`^resp_[A-Za-z0-9_-]{1,256}$`)
  14. openAIMessageIDPattern = regexp.MustCompile(`^(msg|message|item|chatcmpl)_[A-Za-z0-9_-]{1,256}$`)
  15. )
  16. // ClassifyOpenAIPreviousResponseIDKind classifies previous_response_id to improve diagnostics.
  17. func ClassifyOpenAIPreviousResponseIDKind(id string) string {
  18. trimmed := strings.TrimSpace(id)
  19. if trimmed == "" {
  20. return OpenAIPreviousResponseIDKindEmpty
  21. }
  22. if openAIResponseIDPattern.MatchString(trimmed) {
  23. return OpenAIPreviousResponseIDKindResponseID
  24. }
  25. if openAIMessageIDPattern.MatchString(strings.ToLower(trimmed)) {
  26. return OpenAIPreviousResponseIDKindMessageID
  27. }
  28. return OpenAIPreviousResponseIDKindUnknown
  29. }
  30. func IsOpenAIPreviousResponseIDLikelyMessageID(id string) bool {
  31. return ClassifyOpenAIPreviousResponseIDKind(id) == OpenAIPreviousResponseIDKindMessageID
  32. }