relay_mode.go 4.7 KB

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