No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

155 líneas
5.1 KiB

  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, "/api/v3/contents/generations/tasks/") {
  78. relayMode = RelayModeVideoFetchByID
  79. } else if strings.HasPrefix(path, "/api/v3/contents/generations/tasks") {
  80. relayMode = RelayModeVideoSubmit
  81. } else if strings.HasPrefix(path, "/v1beta/models") || strings.HasPrefix(path, "/v1/models") {
  82. relayMode = RelayModeGemini
  83. } else if strings.HasPrefix(path, "/mj") {
  84. relayMode = Path2RelayModeMidjourney(path)
  85. }
  86. return relayMode
  87. }
  88. func Path2RelayModeMidjourney(path string) int {
  89. relayMode := RelayModeUnknown
  90. if strings.HasSuffix(path, "/mj/submit/action") {
  91. // midjourney plus
  92. relayMode = RelayModeMidjourneyAction
  93. } else if strings.HasSuffix(path, "/mj/submit/modal") {
  94. // midjourney plus
  95. relayMode = RelayModeMidjourneyModal
  96. } else if strings.HasSuffix(path, "/mj/submit/shorten") {
  97. // midjourney plus
  98. relayMode = RelayModeMidjourneyShorten
  99. } else if strings.HasSuffix(path, "/mj/insight-face/swap") {
  100. // midjourney plus
  101. relayMode = RelayModeSwapFace
  102. } else if strings.HasSuffix(path, "/submit/upload-discord-images") {
  103. // midjourney plus
  104. relayMode = RelayModeMidjourneyUpload
  105. } else if strings.HasSuffix(path, "/mj/submit/imagine") {
  106. relayMode = RelayModeMidjourneyImagine
  107. } else if strings.HasSuffix(path, "/mj/submit/video") {
  108. relayMode = RelayModeMidjourneyVideo
  109. } else if strings.HasSuffix(path, "/mj/submit/edits") {
  110. relayMode = RelayModeMidjourneyEdits
  111. } else if strings.HasSuffix(path, "/mj/submit/blend") {
  112. relayMode = RelayModeMidjourneyBlend
  113. } else if strings.HasSuffix(path, "/mj/submit/describe") {
  114. relayMode = RelayModeMidjourneyDescribe
  115. } else if strings.HasSuffix(path, "/mj/notify") {
  116. relayMode = RelayModeMidjourneyNotify
  117. } else if strings.HasSuffix(path, "/mj/submit/change") {
  118. relayMode = RelayModeMidjourneyChange
  119. } else if strings.HasSuffix(path, "/mj/submit/simple-change") {
  120. relayMode = RelayModeMidjourneyChange
  121. } else if strings.HasSuffix(path, "/fetch") {
  122. relayMode = RelayModeMidjourneyTaskFetch
  123. } else if strings.HasSuffix(path, "/image-seed") {
  124. relayMode = RelayModeMidjourneyTaskImageSeed
  125. } else if strings.HasSuffix(path, "/list-by-condition") {
  126. relayMode = RelayModeMidjourneyTaskFetchByCondition
  127. }
  128. return relayMode
  129. }
  130. func Path2RelaySuno(method, path string) int {
  131. relayMode := RelayModeUnknown
  132. if method == http.MethodPost && strings.HasSuffix(path, "/fetch") {
  133. relayMode = RelayModeSunoFetch
  134. } else if method == http.MethodGet && strings.Contains(path, "/fetch/") {
  135. relayMode = RelayModeSunoFetchByID
  136. } else if strings.Contains(path, "/submit/") {
  137. relayMode = RelayModeSunoSubmit
  138. }
  139. return relayMode
  140. }