From 952c9ec5dc7f87db307bc02fca07a1a31787476a Mon Sep 17 00:00:00 2001 From: rinfx <893383980@qq.com> Date: Mon, 14 Oct 2024 12:45:53 +0800 Subject: [PATCH] Ai proxy support coze (#1387) --- plugins/wasm-go/extensions/ai-proxy/README.md | 12 +++++ .../wasm-go/extensions/ai-proxy/README_EN.md | 10 +++++ .../extensions/ai-proxy/provider/coze.go | 44 +++++++++++++++++++ .../extensions/ai-proxy/provider/provider.go | 2 + 4 files changed, 68 insertions(+) create mode 100644 plugins/wasm-go/extensions/ai-proxy/provider/coze.go diff --git a/plugins/wasm-go/extensions/ai-proxy/README.md b/plugins/wasm-go/extensions/ai-proxy/README.md index 51156a81d..2a8a838b1 100644 --- a/plugins/wasm-go/extensions/ai-proxy/README.md +++ b/plugins/wasm-go/extensions/ai-proxy/README.md @@ -669,6 +669,18 @@ provider: timeout: 1200000 ``` +### 使用 original 协议代理 Coze 应用 + +**配置信息** + +```yaml +provider: + type: coze + apiTokens: + - YOUR_COZE_API_KEY + protocol: original +``` + ### 使用月之暗面配合其原生的文件上下文 提前上传文件至月之暗面,以文件内容作为上下文使用其 AI 服务。 diff --git a/plugins/wasm-go/extensions/ai-proxy/README_EN.md b/plugins/wasm-go/extensions/ai-proxy/README_EN.md index 57ef01193..e34546a4e 100644 --- a/plugins/wasm-go/extensions/ai-proxy/README_EN.md +++ b/plugins/wasm-go/extensions/ai-proxy/README_EN.md @@ -656,6 +656,16 @@ providers: timeout: 1200000 ``` +### Using original Protocol Proxy for Coze applications + +```yaml +provider: + type: coze + apiTokens: + - YOUR_COZE_API_KEY + protocol: original +``` + ### Utilizing Moonshot with its Native File Context Upload files to Moonshot in advance and use its AI services based on file content. diff --git a/plugins/wasm-go/extensions/ai-proxy/provider/coze.go b/plugins/wasm-go/extensions/ai-proxy/provider/coze.go new file mode 100644 index 000000000..c163c9566 --- /dev/null +++ b/plugins/wasm-go/extensions/ai-proxy/provider/coze.go @@ -0,0 +1,44 @@ +package provider + +import ( + "errors" + + "github.com/alibaba/higress/plugins/wasm-go/extensions/ai-proxy/util" + "github.com/alibaba/higress/plugins/wasm-go/pkg/wrapper" + "github.com/higress-group/proxy-wasm-go-sdk/proxywasm/types" +) + +const ( + cozeDomain = "api.coze.cn" +) + +type cozeProviderInitializer struct{} + +func (m *cozeProviderInitializer) ValidateConfig(config ProviderConfig) error { + if config.apiTokens == nil || len(config.apiTokens) == 0 { + return errors.New("no apiToken found in provider config") + } + return nil +} + +func (m *cozeProviderInitializer) CreateProvider(config ProviderConfig) (Provider, error) { + return &cozeProvider{ + config: config, + contextCache: createContextCache(&config), + }, nil +} + +type cozeProvider struct { + config ProviderConfig + contextCache *contextCache +} + +func (m *cozeProvider) GetProviderType() string { + return providerTypeCoze +} + +func (m *cozeProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) (types.Action, error) { + _ = util.OverwriteRequestHost(cozeDomain) + _ = util.OverwriteRequestAuthorization("Bearer " + m.config.GetRandomToken()) + return types.ActionContinue, nil +} diff --git a/plugins/wasm-go/extensions/ai-proxy/provider/provider.go b/plugins/wasm-go/extensions/ai-proxy/provider/provider.go index facd8bb28..c9d59fd03 100644 --- a/plugins/wasm-go/extensions/ai-proxy/provider/provider.go +++ b/plugins/wasm-go/extensions/ai-proxy/provider/provider.go @@ -42,6 +42,7 @@ const ( providerTypeMistral = "mistral" providerTypeCohere = "cohere" providerTypeDoubao = "doubao" + providerTypeCoze = "coze" protocolOpenAI = "openai" protocolOriginal = "original" @@ -101,6 +102,7 @@ var ( providerTypeMistral: &mistralProviderInitializer{}, providerTypeCohere: &cohereProviderInitializer{}, providerTypeDoubao: &doubaoProviderInitializer{}, + providerTypeCoze: &cozeProviderInitializer{}, } )