relay_mode.go 4.8 KB

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