Skip to content

Commit 952c9ec

Browse files
authored
Ai proxy support coze (#1387)
1 parent 1a53c7b commit 952c9ec

File tree

4 files changed

+68
-0
lines changed

4 files changed

+68
-0
lines changed

plugins/wasm-go/extensions/ai-proxy/README.md

+12
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,18 @@ provider:
669669
timeout: 1200000
670670
```
671671
672+
### 使用 original 协议代理 Coze 应用
673+
674+
**配置信息**
675+
676+
```yaml
677+
provider:
678+
type: coze
679+
apiTokens:
680+
- YOUR_COZE_API_KEY
681+
protocol: original
682+
```
683+
672684
### 使用月之暗面配合其原生的文件上下文
673685
674686
提前上传文件至月之暗面,以文件内容作为上下文使用其 AI 服务。

plugins/wasm-go/extensions/ai-proxy/README_EN.md

+10
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,16 @@ providers:
656656
timeout: 1200000
657657
```
658658
659+
### Using original Protocol Proxy for Coze applications
660+
661+
```yaml
662+
provider:
663+
type: coze
664+
apiTokens:
665+
- YOUR_COZE_API_KEY
666+
protocol: original
667+
```
668+
659669
### Utilizing Moonshot with its Native File Context
660670
661671
Upload files to Moonshot in advance and use its AI services based on file content.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package provider
2+
3+
import (
4+
"errors"
5+
6+
"github.com/alibaba/higress/plugins/wasm-go/extensions/ai-proxy/util"
7+
"github.com/alibaba/higress/plugins/wasm-go/pkg/wrapper"
8+
"github.com/higress-group/proxy-wasm-go-sdk/proxywasm/types"
9+
)
10+
11+
const (
12+
cozeDomain = "api.coze.cn"
13+
)
14+
15+
type cozeProviderInitializer struct{}
16+
17+
func (m *cozeProviderInitializer) ValidateConfig(config ProviderConfig) error {
18+
if config.apiTokens == nil || len(config.apiTokens) == 0 {
19+
return errors.New("no apiToken found in provider config")
20+
}
21+
return nil
22+
}
23+
24+
func (m *cozeProviderInitializer) CreateProvider(config ProviderConfig) (Provider, error) {
25+
return &cozeProvider{
26+
config: config,
27+
contextCache: createContextCache(&config),
28+
}, nil
29+
}
30+
31+
type cozeProvider struct {
32+
config ProviderConfig
33+
contextCache *contextCache
34+
}
35+
36+
func (m *cozeProvider) GetProviderType() string {
37+
return providerTypeCoze
38+
}
39+
40+
func (m *cozeProvider) OnRequestHeaders(ctx wrapper.HttpContext, apiName ApiName, log wrapper.Log) (types.Action, error) {
41+
_ = util.OverwriteRequestHost(cozeDomain)
42+
_ = util.OverwriteRequestAuthorization("Bearer " + m.config.GetRandomToken())
43+
return types.ActionContinue, nil
44+
}

plugins/wasm-go/extensions/ai-proxy/provider/provider.go

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const (
4242
providerTypeMistral = "mistral"
4343
providerTypeCohere = "cohere"
4444
providerTypeDoubao = "doubao"
45+
providerTypeCoze = "coze"
4546

4647
protocolOpenAI = "openai"
4748
protocolOriginal = "original"
@@ -101,6 +102,7 @@ var (
101102
providerTypeMistral: &mistralProviderInitializer{},
102103
providerTypeCohere: &cohereProviderInitializer{},
103104
providerTypeDoubao: &doubaoProviderInitializer{},
105+
providerTypeCoze: &cozeProviderInitializer{},
104106
}
105107
)
106108

0 commit comments

Comments
 (0)