relay_mode.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package constant
  2. import (
  3. "net/http"
  4. "strings"
  5. )
  6. const (
  7. RelayModeUnknown = iota
  8. RelayModeChatCompletions
  9. RelayModeCompletions
  10. RelayModeEmbeddings
  11. RelayModeModerations
  12. RelayModeImagesGenerations
  13. RelayModeImagesEdits
  14. RelayModeEdits
  15. RelayModeMidjourneyImagine
  16. RelayModeMidjourneyDescribe
  17. RelayModeMidjourneyBlend
  18. RelayModeMidjourneyChange
  19. RelayModeMidjourneySimpleChange
  20. RelayModeMidjourneyNotify
  21. RelayModeMidjourneyTaskFetch
  22. RelayModeMidjourneyTaskImageSeed
  23. RelayModeMidjourneyTaskFetchByCondition
  24. RelayModeMidjourneyAction
  25. RelayModeMidjourneyModal
  26. RelayModeMidjourneyShorten
  27. RelayModeSwapFace
  28. RelayModeMidjourneyUpload
  29. RelayModeAudioSpeech // tts
  30. RelayModeAudioTranscription // whisper
  31. RelayModeAudioTranslation // whisper
  32. RelayModeSunoFetch
  33. RelayModeSunoFetchByID
  34. RelayModeSunoSubmit
  35. RelayModeRerank
  36. RelayModeResponses
  37. RelayModeRealtime
  38. )
  39. func Path2RelayMode(path string) int {
  40. relayMode := RelayModeUnknown
  41. if strings.HasPrefix(path, "/v1/chat/completions") || strings.HasPrefix(path, "/pg/chat/completions") {
  42. relayMode = RelayModeChatCompletions
  43. } else if strings.HasPrefix(path, "/v1/completions") {
  44. relayMode = RelayModeCompletions
  45. } else if strings.HasPrefix(path, "/v1/embeddings") {
  46. relayMode = RelayModeEmbeddings
  47. } else if strings.HasSuffix(path, "embeddings") {
  48. relayMode = RelayModeEmbeddings
  49. } else if strings.HasPrefix(path, "/v1/moderations") {
  50. relayMode = RelayModeModerations
  51. } else if strings.HasPrefix(path, "/v1/images/generations") {
  52. relayMode = RelayModeImagesGenerations
  53. } else if strings.HasPrefix(path, "/v1/images/edits") {
  54. relayMode = RelayModeImagesEdits
  55. } else if strings.HasPrefix(path, "/v1/edits") {
  56. relayMode = RelayModeEdits
  57. } else if strings.HasPrefix(path, "/v1/responses") {
  58. relayMode = RelayModeResponses
  59. } else if strings.HasPrefix(path, "/v1/audio/speech") {
  60. relayMode = RelayModeAudioSpeech
  61. } else if strings.HasPrefix(path, "/v1/audio/transcriptions") {
  62. relayMode = RelayModeAudioTranscription
  63. } else if strings.HasPrefix(path, "/v1/audio/translations") {
  64. relayMode = RelayModeAudioTranslation
  65. } else if strings.HasPrefix(path, "/v1/rerank") {
  66. relayMode = RelayModeRerank
  67. } else if strings.HasPrefix(path, "/v1/realtime") {
  68. relayMode = RelayModeRealtime
  69. }
  70. return relayMode
  71. }
  72. func Path2RelayModeMidjourney(path string) int {
  73. relayMode := RelayModeUnknown
  74. if strings.HasSuffix(path, "/mj/submit/action") {
  75. // midjourney plus
  76. relayMode = RelayModeMidjourneyAction
  77. } else if strings.HasSuffix(path, "/mj/submit/modal") {
  78. // midjourney plus
  79. relayMode = RelayModeMidjourneyModal
  80. } else if strings.HasSuffix(path, "/mj/submit/shorten") {
  81. // midjourney plus
  82. relayMode = RelayModeMidjourneyShorten
  83. } else if strings.HasSuffix(path, "/mj/insight-face/swap") {
  84. // midjourney plus
  85. relayMode = RelayModeSwapFace
  86. } else if strings.HasSuffix(path, "/submit/upload-discord-images") {
  87. // midjourney plus
  88. relayMode = RelayModeMidjourneyUpload
  89. } else if strings.HasSuffix(path, "/mj/submit/imagine") {
  90. relayMode = RelayModeMidjourneyImagine
  91. } else if strings.HasSuffix(path, "/mj/submit/blend") {
  92. relayMode = RelayModeMidjourneyBlend
  93. } else if strings.HasSuffix(path, "/mj/submit/describe") {
  94. relayMode = RelayModeMidjourneyDescribe
  95. } else if strings.HasSuffix(path, "/mj/notify") {
  96. relayMode = RelayModeMidjourneyNotify
  97. } else if strings.HasSuffix(path, "/mj/submit/change") {
  98. relayMode = RelayModeMidjourneyChange
  99. } else if strings.HasSuffix(path, "/mj/submit/simple-change") {
  100. relayMode = RelayModeMidjourneyChange
  101. } else if strings.HasSuffix(path, "/fetch") {
  102. relayMode = RelayModeMidjourneyTaskFetch
  103. } else if strings.HasSuffix(path, "/image-seed") {
  104. relayMode = RelayModeMidjourneyTaskImageSeed
  105. } else if strings.HasSuffix(path, "/list-by-condition") {
  106. relayMode = RelayModeMidjourneyTaskFetchByCondition
  107. }
  108. return relayMode
  109. }
  110. func Path2RelaySuno(method, path string) int {
  111. relayMode := RelayModeUnknown
  112. if method == http.MethodPost && strings.HasSuffix(path, "/fetch") {
  113. relayMode = RelayModeSunoFetch
  114. } else if method == http.MethodGet && strings.Contains(path, "/fetch/") {
  115. relayMode = RelayModeSunoFetchByID
  116. } else if strings.Contains(path, "/submit/") {
  117. relayMode = RelayModeSunoSubmit
  118. }
  119. return relayMode
  120. }