relay_mode.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. RelayModeMidjourneyVideo
  30. RelayModeMidjourneyEdits
  31. RelayModeAudioSpeech // tts
  32. RelayModeAudioTranscription // whisper
  33. RelayModeAudioTranslation // whisper
  34. RelayModeSunoFetch
  35. RelayModeSunoFetchByID
  36. RelayModeSunoSubmit
  37. RelayModeKlingFetchByID
  38. RelayModeKlingSubmit
  39. RelayModeJimengFetchByID
  40. RelayModeJimengSubmit
  41. RelayModeRerank
  42. RelayModeResponses
  43. RelayModeRealtime
  44. RelayModeGemini
  45. )
  46. func Path2RelayMode(path string) int {
  47. relayMode := RelayModeUnknown
  48. if strings.HasPrefix(path, "/v1/chat/completions") || strings.HasPrefix(path, "/pg/chat/completions") {
  49. relayMode = RelayModeChatCompletions
  50. } else if strings.HasPrefix(path, "/v1/completions") {
  51. relayMode = RelayModeCompletions
  52. } else if strings.HasPrefix(path, "/v1/embeddings") {
  53. relayMode = RelayModeEmbeddings
  54. } else if strings.HasSuffix(path, "embeddings") {
  55. relayMode = RelayModeEmbeddings
  56. } else if strings.HasPrefix(path, "/v1/moderations") {
  57. relayMode = RelayModeModerations
  58. } else if strings.HasPrefix(path, "/v1/images/generations") {
  59. relayMode = RelayModeImagesGenerations
  60. } else if strings.HasPrefix(path, "/v1/images/edits") {
  61. relayMode = RelayModeImagesEdits
  62. } else if strings.HasPrefix(path, "/v1/edits") {
  63. relayMode = RelayModeEdits
  64. } else if strings.HasPrefix(path, "/v1/responses") {
  65. relayMode = RelayModeResponses
  66. } else if strings.HasPrefix(path, "/v1/audio/speech") {
  67. relayMode = RelayModeAudioSpeech
  68. } else if strings.HasPrefix(path, "/v1/audio/transcriptions") {
  69. relayMode = RelayModeAudioTranscription
  70. } else if strings.HasPrefix(path, "/v1/audio/translations") {
  71. relayMode = RelayModeAudioTranslation
  72. } else if strings.HasPrefix(path, "/v1/rerank") {
  73. relayMode = RelayModeRerank
  74. } else if strings.HasPrefix(path, "/v1/realtime") {
  75. relayMode = RelayModeRealtime
  76. } else if strings.HasPrefix(path, "/v1beta/models") || strings.HasPrefix(path, "/v1/models") {
  77. relayMode = RelayModeGemini
  78. }
  79. return relayMode
  80. }
  81. func Path2RelayModeMidjourney(path string) int {
  82. relayMode := RelayModeUnknown
  83. if strings.HasSuffix(path, "/mj/submit/action") {
  84. // midjourney plus
  85. relayMode = RelayModeMidjourneyAction
  86. } else if strings.HasSuffix(path, "/mj/submit/modal") {
  87. // midjourney plus
  88. relayMode = RelayModeMidjourneyModal
  89. } else if strings.HasSuffix(path, "/mj/submit/shorten") {
  90. // midjourney plus
  91. relayMode = RelayModeMidjourneyShorten
  92. } else if strings.HasSuffix(path, "/mj/insight-face/swap") {
  93. // midjourney plus
  94. relayMode = RelayModeSwapFace
  95. } else if strings.HasSuffix(path, "/submit/upload-discord-images") {
  96. // midjourney plus
  97. relayMode = RelayModeMidjourneyUpload
  98. } else if strings.HasSuffix(path, "/mj/submit/imagine") {
  99. relayMode = RelayModeMidjourneyImagine
  100. } else if strings.HasSuffix(path, "/mj/submit/video") {
  101. relayMode = RelayModeMidjourneyVideo
  102. } else if strings.HasSuffix(path, "/mj/submit/edits") {
  103. relayMode = RelayModeMidjourneyEdits
  104. } else if strings.HasSuffix(path, "/mj/submit/blend") {
  105. relayMode = RelayModeMidjourneyBlend
  106. } else if strings.HasSuffix(path, "/mj/submit/describe") {
  107. relayMode = RelayModeMidjourneyDescribe
  108. } else if strings.HasSuffix(path, "/mj/notify") {
  109. relayMode = RelayModeMidjourneyNotify
  110. } else if strings.HasSuffix(path, "/mj/submit/change") {
  111. relayMode = RelayModeMidjourneyChange
  112. } else if strings.HasSuffix(path, "/mj/submit/simple-change") {
  113. relayMode = RelayModeMidjourneyChange
  114. } else if strings.HasSuffix(path, "/fetch") {
  115. relayMode = RelayModeMidjourneyTaskFetch
  116. } else if strings.HasSuffix(path, "/image-seed") {
  117. relayMode = RelayModeMidjourneyTaskImageSeed
  118. } else if strings.HasSuffix(path, "/list-by-condition") {
  119. relayMode = RelayModeMidjourneyTaskFetchByCondition
  120. }
  121. return relayMode
  122. }
  123. func Path2RelaySuno(method, path string) int {
  124. relayMode := RelayModeUnknown
  125. if method == http.MethodPost && strings.HasSuffix(path, "/fetch") {
  126. relayMode = RelayModeSunoFetch
  127. } else if method == http.MethodGet && strings.Contains(path, "/fetch/") {
  128. relayMode = RelayModeSunoFetchByID
  129. } else if strings.Contains(path, "/submit/") {
  130. relayMode = RelayModeSunoSubmit
  131. }
  132. return relayMode
  133. }
  134. func Path2RelayKling(method, path string) int {
  135. relayMode := RelayModeUnknown
  136. if method == http.MethodPost && strings.HasSuffix(path, "/video/generations") {
  137. relayMode = RelayModeKlingSubmit
  138. } else if method == http.MethodGet && strings.Contains(path, "/video/generations/") {
  139. relayMode = RelayModeKlingFetchByID
  140. }
  141. return relayMode
  142. }
  143. func Path2RelayJimeng(method, path string) int {
  144. relayMode := RelayModeUnknown
  145. if method == http.MethodPost && strings.HasSuffix(path, "/video/generations") {
  146. relayMode = RelayModeJimengSubmit
  147. } else if method == http.MethodGet && strings.Contains(path, "/video/generations/") {
  148. relayMode = RelayModeJimengFetchByID
  149. }
  150. return relayMode
  151. }