From 5674d91a10a4b4b4ff0101eacd3b84e83bd8427b Mon Sep 17 00:00:00 2001 From: Xijun Dai Date: Fri, 6 Jun 2025 17:02:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(ai-proxy):=20=E4=BF=AE=E5=A4=8D=20openai?= =?UTF-8?q?=20=E9=85=8D=E7=BD=AE=20openaiCustomUrl=20=E4=B9=8B=E5=90=8E,?= =?UTF-8?q?=20=E5=AF=B9=E4=B8=8D=E6=94=AF=E6=8C=81=20Api=20=E9=80=8F?= =?UTF-8?q?=E4=BC=A0=E8=B7=AF=E5=BE=84=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20||=20feat(ai-proxy):=20Fixed=20the=20issue=20that?= =?UTF-8?q?=20the=20API=20pass-through=20path=20error=20does=20not=20suppo?= =?UTF-8?q?rt=20openaiCustomUrl=20after=20openai=20is=20configured.=20(#23?= =?UTF-8?q?64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Xijun Dai --- .../extensions/ai-proxy/provider/openai.go | 20 +++++++++++-------- .../extensions/ai-proxy/provider/provider.go | 2 ++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/plugins/wasm-go/extensions/ai-proxy/provider/openai.go b/plugins/wasm-go/extensions/ai-proxy/provider/openai.go index 4f51a49c2..f5e0d487b 100644 --- a/plugins/wasm-go/extensions/ai-proxy/provider/openai.go +++ b/plugins/wasm-go/extensions/ai-proxy/provider/openai.go @@ -40,6 +40,7 @@ func (m *openaiProviderInitializer) DefaultCapabilities() map[string]string { string(ApiNameBatches): PathOpenAIBatches, string(ApiNameRetrieveBatch): PathOpenAIRetrieveBatch, string(ApiNameCancelBatch): PathOpenAICancelBatch, + string(ApiNameResponses): PathOpenAIResponses, } } @@ -47,7 +48,11 @@ func isDirectPath(path string) bool { return strings.HasSuffix(path, "/completions") || strings.HasSuffix(path, "/embeddings") || strings.HasSuffix(path, "/audio/speech") || - strings.HasSuffix(path, "/images/generations") + strings.HasSuffix(path, "/images/generations") || + strings.HasSuffix(path, "/images/variations") || + strings.HasSuffix(path, "/images/edits") || + strings.HasSuffix(path, "/models") || + strings.HasSuffix(path, "/responses") } func (m *openaiProviderInitializer) CreateProvider(config ProviderConfig) (Provider, error) { @@ -101,15 +106,14 @@ func (m *openaiProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiNa } func (m *openaiProvider) TransformRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, headers http.Header) { - if m.customPath != "" { - if m.isDirectCustomPath || apiName == "" { - util.OverwriteRequestPathHeader(headers, m.customPath) - } else { - util.OverwriteRequestPathHeaderByCapability(headers, string(apiName), m.config.capabilities) - } - } else { + if m.isDirectCustomPath { + util.OverwriteRequestPathHeader(headers, m.customPath) + } + + if apiName != "" { util.OverwriteRequestPathHeaderByCapability(headers, string(apiName), m.config.capabilities) } + if m.customDomain != "" { util.OverwriteRequestHostHeader(headers, m.customDomain) } else { diff --git a/plugins/wasm-go/extensions/ai-proxy/provider/provider.go b/plugins/wasm-go/extensions/ai-proxy/provider/provider.go index 3d6e08b00..81a4c0add 100644 --- a/plugins/wasm-go/extensions/ai-proxy/provider/provider.go +++ b/plugins/wasm-go/extensions/ai-proxy/provider/provider.go @@ -41,6 +41,7 @@ const ( ApiNameRetrieveBatch ApiName = "openai/v1/retrievebatch" ApiNameCancelBatch ApiName = "openai/v1/cancelbatch" ApiNameModels ApiName = "openai/v1/models" + ApiNameResponses ApiName = "openai/v1/responses" PathOpenAICompletions = "/v1/completions" PathOpenAIChatCompletions = "/v1/chat/completions" @@ -56,6 +57,7 @@ const ( PathOpenAIImageEdit = "/v1/images/edits" PathOpenAIImageVariation = "/v1/images/variations" PathOpenAIAudioSpeech = "/v1/audio/speech" + PathOpenAIResponses = "/v1/responses" // TODO: 以下是一些非标准的API名称,需要进一步确认是否支持 ApiNameCohereV1Rerank ApiName = "cohere/v1/rerank"