mirror of
https://github.com/alibaba/higress.git
synced 2026-06-26 02:35:02 +08:00
ai proxy support passthrough path when api name is unknown (#1754)
This commit is contained in:
@@ -43,7 +43,7 @@ description: AI 代理插件配置参考
|
|||||||
| `failover` | object | 非必填 | - | 配置 apiToken 的 failover 策略,当 apiToken 不可用时,将其移出 apiToken 列表,待健康检测通过后重新添加回 apiToken 列表 |
|
| `failover` | object | 非必填 | - | 配置 apiToken 的 failover 策略,当 apiToken 不可用时,将其移出 apiToken 列表,待健康检测通过后重新添加回 apiToken 列表 |
|
||||||
| `retryOnFailure` | object | 非必填 | - | 当请求失败时立即进行重试 |
|
| `retryOnFailure` | object | 非必填 | - | 当请求失败时立即进行重试 |
|
||||||
| `capabilities` | map of string | 非必填 | - | 部分provider的部分ai能力原生兼容openai/v1格式,不需要重写,可以直接转发,通过此配置项指定来开启转发, key表示的是采用的厂商协议能力,values表示的真实的厂商该能力的api path, 厂商协议能力当前支持: openai/v1/chatcompletions, openai/v1/embeddings, openai/v1/imagegeneration, openai/v1/audiospeech, cohere/v1/rerank |
|
| `capabilities` | map of string | 非必填 | - | 部分provider的部分ai能力原生兼容openai/v1格式,不需要重写,可以直接转发,通过此配置项指定来开启转发, key表示的是采用的厂商协议能力,values表示的真实的厂商该能力的api path, 厂商协议能力当前支持: openai/v1/chatcompletions, openai/v1/embeddings, openai/v1/imagegeneration, openai/v1/audiospeech, cohere/v1/rerank |
|
||||||
| `passthrough` | bool | 非必填 | - | 只要是不支持的API能力都直接转发, 此配置是capabilities配置的放大版本,允许任意api透传,就像没有ai-proxy插件一样 |
|
|
||||||
`context`的配置字段说明如下:
|
`context`的配置字段说明如下:
|
||||||
|
|
||||||
| 名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
|
| 名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
|
||||||
|
|||||||
@@ -87,8 +87,9 @@ func onHttpRequestHeader(ctx wrapper.HttpContext, pluginConfig config.PluginConf
|
|||||||
}
|
}
|
||||||
|
|
||||||
if apiName == "" {
|
if apiName == "" {
|
||||||
log.Warnf("[onHttpRequestHeader] unsupported path: %s", path.Path)
|
ctx.DontReadRequestBody()
|
||||||
return types.ActionContinue
|
ctx.DontReadResponseBody()
|
||||||
|
log.Warnf("[onHttpRequestHeader] unsupported path: %s, will not process http path and body", path.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.SetContext(provider.CtxKeyApiName, apiName)
|
ctx.SetContext(provider.CtxKeyApiName, apiName)
|
||||||
@@ -105,11 +106,6 @@ func onHttpRequestHeader(ctx wrapper.HttpContext, pluginConfig config.PluginConf
|
|||||||
|
|
||||||
err := handler.OnRequestHeaders(ctx, apiName, log)
|
err := handler.OnRequestHeaders(ctx, apiName, log)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if providerConfig.PassthroughUnsupportedAPI() {
|
|
||||||
log.Warnf("[onHttpRequestHeader] passthrough unsupported API: %v", err)
|
|
||||||
ctx.DontReadRequestBody()
|
|
||||||
return types.ActionContinue
|
|
||||||
}
|
|
||||||
util.ErrorHandler("ai-proxy.proc_req_headers_failed", fmt.Errorf("failed to process request headers: %v", err))
|
util.ErrorHandler("ai-proxy.proc_req_headers_failed", fmt.Errorf("failed to process request headers: %v", err))
|
||||||
return types.ActionContinue
|
return types.ActionContinue
|
||||||
}
|
}
|
||||||
@@ -156,10 +152,6 @@ func onHttpRequestBody(ctx wrapper.HttpContext, pluginConfig config.PluginConfig
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
if pluginConfig.GetProviderConfig().PassthroughUnsupportedAPI() {
|
|
||||||
log.Warnf("[onHttpRequestBody] passthrough unsupported API: %v", err)
|
|
||||||
return types.ActionContinue
|
|
||||||
}
|
|
||||||
util.ErrorHandler("ai-proxy.proc_req_body_failed", fmt.Errorf("failed to process request body: %v", err))
|
util.ErrorHandler("ai-proxy.proc_req_body_failed", fmt.Errorf("failed to process request body: %v", err))
|
||||||
}
|
}
|
||||||
return types.ActionContinue
|
return types.ActionContinue
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ func (m *ai360Provider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *ai360Provider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *ai360Provider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -63,9 +63,6 @@ func (m *azureProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *azureProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *azureProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -78,21 +75,23 @@ func (m *azureProvider) OnRequestBody(ctx wrapper.HttpContext, apiName ApiName,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *azureProvider) TransformRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, headers http.Header, log wrapper.Log) {
|
func (m *azureProvider) TransformRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, headers http.Header, log wrapper.Log) {
|
||||||
u, e := url.Parse(ctx.Path())
|
if apiName != "" {
|
||||||
if e == nil {
|
u, e := url.Parse(ctx.Path())
|
||||||
customApiVersion := u.Query().Get("api-version")
|
if e == nil {
|
||||||
if customApiVersion == "" {
|
customApiVersion := u.Query().Get("api-version")
|
||||||
util.OverwriteRequestPathHeader(headers, m.serviceUrl.RequestURI())
|
if customApiVersion == "" {
|
||||||
|
util.OverwriteRequestPathHeader(headers, m.serviceUrl.RequestURI())
|
||||||
|
} else {
|
||||||
|
q := m.serviceUrl.Query()
|
||||||
|
q.Set("api-version", customApiVersion)
|
||||||
|
newUrl := *m.serviceUrl
|
||||||
|
newUrl.RawQuery = q.Encode()
|
||||||
|
util.OverwriteRequestPathHeader(headers, newUrl.RequestURI())
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
q := m.serviceUrl.Query()
|
log.Errorf("failed to parse request path: %v", e)
|
||||||
q.Set("api-version", customApiVersion)
|
util.OverwriteRequestPathHeader(headers, m.serviceUrl.RequestURI())
|
||||||
newUrl := *m.serviceUrl
|
|
||||||
newUrl.RawQuery = q.Encode()
|
|
||||||
util.OverwriteRequestPathHeader(headers, newUrl.RequestURI())
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
log.Errorf("failed to parse request path: %v", e)
|
|
||||||
util.OverwriteRequestPathHeader(headers, m.serviceUrl.RequestURI())
|
|
||||||
}
|
}
|
||||||
util.OverwriteRequestHostHeader(headers, m.serviceUrl.Host)
|
util.OverwriteRequestHostHeader(headers, m.serviceUrl.Host)
|
||||||
headers.Set("api-key", m.config.GetApiTokenInUse(ctx))
|
headers.Set("api-key", m.config.GetApiTokenInUse(ctx))
|
||||||
|
|||||||
@@ -50,9 +50,6 @@ func (m *baichuanProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *baichuanProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *baichuanProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,9 +51,6 @@ func (g *baiduProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *baiduProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (g *baiduProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !g.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,9 +111,6 @@ func (c *claudeProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *claudeProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (c *claudeProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !c.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
c.config.handleRequestHeaders(c, ctx, apiName, log)
|
c.config.handleRequestHeaders(c, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ func (c *cloudflareProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *cloudflareProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (c *cloudflareProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !c.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
c.config.handleRequestHeaders(c, ctx, apiName, log)
|
c.config.handleRequestHeaders(c, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,9 +66,6 @@ func (m *cohereProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *cohereProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *cohereProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,15 +83,16 @@ func (d *deeplProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *deeplProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (d *deeplProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !d.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
d.config.handleRequestHeaders(d, ctx, apiName, log)
|
d.config.handleRequestHeaders(d, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *deeplProvider) TransformRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, headers http.Header, log wrapper.Log) {
|
func (d *deeplProvider) TransformRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, headers http.Header, log wrapper.Log) {
|
||||||
util.OverwriteRequestPathHeader(headers, deeplChatCompletionPath)
|
if apiName != "" {
|
||||||
|
util.OverwriteRequestPathHeader(headers, deeplChatCompletionPath)
|
||||||
|
}
|
||||||
|
// TODO: Support default host through configuration
|
||||||
|
util.OverwriteRequestHostHeader(headers, deeplHostFree)
|
||||||
util.OverwriteRequestAuthorizationHeader(headers, "DeepL-Auth-Key "+d.config.GetApiTokenInUse(ctx))
|
util.OverwriteRequestAuthorizationHeader(headers, "DeepL-Auth-Key "+d.config.GetApiTokenInUse(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,9 +52,6 @@ func (m *deepseekProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *deepseekProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *deepseekProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,9 +51,6 @@ func (d *difyProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *difyProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (d *difyProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if apiName != ApiNameChatCompletion {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
d.config.handleRequestHeaders(d, ctx, apiName, log)
|
d.config.handleRequestHeaders(d, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,9 +50,6 @@ func (m *doubaoProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *doubaoProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *doubaoProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,9 +57,6 @@ func (g *geminiProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *geminiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (g *geminiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !g.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
||||||
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -52,9 +52,6 @@ func (m *githubProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *githubProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *githubProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ func (g *groqProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *groqProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (g *groqProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !g.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
g.config.handleRequestHeaders(g, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,9 +136,6 @@ func (m *hunyuanProvider) useOpenAICompatibleAPI() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *hunyuanProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *hunyuanProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -74,9 +74,6 @@ func (m *minimaxProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *minimaxProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *minimaxProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
// Delay the header processing to allow changing streaming mode in OnRequestBody
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ func (m *mistralProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *mistralProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *mistralProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,9 +64,6 @@ func (m *moonshotProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *moonshotProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *moonshotProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,6 @@ func (m *ollamaProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *ollamaProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *ollamaProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,9 +265,6 @@ type ProviderConfig struct {
|
|||||||
// @Title zh-CN 额外支持的ai能力
|
// @Title zh-CN 额外支持的ai能力
|
||||||
// @Description zh-CN 开放的ai能力和urlpath映射,例如: {"openai/v1/chatcompletions": "/v1/chat/completions"}
|
// @Description zh-CN 开放的ai能力和urlpath映射,例如: {"openai/v1/chatcompletions": "/v1/chat/completions"}
|
||||||
capabilities map[string]string
|
capabilities map[string]string
|
||||||
// @Title zh-CN 是否开启透传
|
|
||||||
// @Description zh-CN 如果是插件不支持的API,是否透传请求, 默认为false
|
|
||||||
passthrough bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProviderConfig) GetId() string {
|
func (c *ProviderConfig) GetId() string {
|
||||||
@@ -453,10 +450,6 @@ func (c *ProviderConfig) ReplaceByCustomSettings(body []byte) ([]byte, error) {
|
|||||||
return ReplaceByCustomSettings(body, c.customSettings)
|
return ReplaceByCustomSettings(body, c.customSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ProviderConfig) PassthroughUnsupportedAPI() bool {
|
|
||||||
return c.passthrough
|
|
||||||
}
|
|
||||||
|
|
||||||
func CreateProvider(pc ProviderConfig) (Provider, error) {
|
func CreateProvider(pc ProviderConfig) (Provider, error) {
|
||||||
initializer, has := providerInitializers[pc.typ]
|
initializer, has := providerInitializers[pc.typ]
|
||||||
if !has {
|
if !has {
|
||||||
|
|||||||
@@ -104,10 +104,6 @@ func (m *qwenProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *qwenProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *qwenProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
|
|
||||||
if m.config.protocol == protocolOriginal {
|
if m.config.protocol == protocolOriginal {
|
||||||
|
|||||||
@@ -74,9 +74,6 @@ func (p *sparkProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *sparkProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (p *sparkProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !p.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
p.config.handleRequestHeaders(p, ctx, apiName, log)
|
p.config.handleRequestHeaders(p, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ func (m *stepfunProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *stepfunProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *stepfunProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ func (m *togetherAIProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *togetherAIProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *togetherAIProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ func (m *yiProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *yiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *yiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,9 +50,6 @@ func (m *zhipuAiProvider) GetProviderType() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *zhipuAiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
func (m *zhipuAiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) error {
|
||||||
if !m.config.isSupportedAPI(apiName) {
|
|
||||||
return errUnsupportedApiName
|
|
||||||
}
|
|
||||||
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
m.config.handleRequestHeaders(m, ctx, apiName, log)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user