Files
relay-saas/relay/adaptor/xunfei/domain.go
huangzhenpc cb7c48bfa7
Some checks failed
CI / Unit tests (push) Has been cancelled
CI / commit_lint (push) Has been cancelled
first commit: one-api base code + SAAS plan document
2025-12-29 22:52:27 +08:00

98 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package xunfei
import (
"fmt"
"strings"
)
// https://www.xfyun.cn/doc/spark/Web.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E
//Spark4.0 Ultra 请求地址对应的domain参数为4.0Ultra
//
//wss://spark-api.xf-yun.com/v4.0/chat
//Spark Max-32K请求地址对应的domain参数为max-32k
//
//wss://spark-api.xf-yun.com/chat/max-32k
//Spark Max请求地址对应的domain参数为generalv3.5
//
//wss://spark-api.xf-yun.com/v3.5/chat
//Spark Pro-128K请求地址对应的domain参数为pro-128k
//
// wss://spark-api.xf-yun.com/chat/pro-128k
//Spark Pro请求地址对应的domain参数为generalv3
//
//wss://spark-api.xf-yun.com/v3.1/chat
//Spark Lite请求地址对应的domain参数为lite
//
//wss://spark-api.xf-yun.com/v1.1/chat
// Lite、Pro、Pro-128K、Max、Max-32K和4.0 Ultra
func parseAPIVersionByModelName(modelName string) string {
apiVersion := modelName2APIVersion(modelName)
if apiVersion != "" {
return apiVersion
}
index := strings.IndexAny(modelName, "-")
if index != -1 {
return modelName[index+1:]
}
return ""
}
func modelName2APIVersion(modelName string) string {
switch modelName {
case "Spark-Lite":
return "v1.1"
case "Spark-Pro":
return "v3.1"
case "Spark-Pro-128K":
return "v3.1-128K"
case "Spark-Max":
return "v3.5"
case "Spark-Max-32K":
return "v3.5-32K"
case "Spark-4.0-Ultra":
return "v4.0"
}
return ""
}
// https://www.xfyun.cn/doc/spark/Web.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E
func apiVersion2domain(apiVersion string) string {
switch apiVersion {
case "v1.1":
return "lite"
case "v2.1":
return "generalv2"
case "v3.1":
return "generalv3"
case "v3.1-128K":
return "pro-128k"
case "v3.5":
return "generalv3.5"
case "v3.5-32K":
return "max-32k"
case "v4.0":
return "4.0Ultra"
}
return "general" + apiVersion
}
func getXunfeiAuthUrl(apiVersion string, apiKey string, apiSecret string) (string, string) {
var authUrl string
domain := apiVersion2domain(apiVersion)
switch apiVersion {
case "v3.1-128K":
authUrl = buildXunfeiAuthUrl(fmt.Sprintf("wss://spark-api.xf-yun.com/chat/pro-128k"), apiKey, apiSecret)
break
case "v3.5-32K":
authUrl = buildXunfeiAuthUrl(fmt.Sprintf("wss://spark-api.xf-yun.com/chat/max-32k"), apiKey, apiSecret)
break
default:
authUrl = buildXunfeiAuthUrl(fmt.Sprintf("wss://spark-api.xf-yun.com/%s/chat", apiVersion), apiKey, apiSecret)
}
return domain, authUrl
}