relay_mode.go 4.3 KB

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