relay_mode.go 4.1 KB

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