Skip to content

Commit e454164

Browse files
zijiren233jinjianmingming
authored andcommitted
feat: vertexai support proxy url(example: cloudflare ai gateway) and fix some vertexai bug (songquanpeng#1642)
* feat: vertexai support proxy url(example: cloudflare ai gateway) * fix: do resp model mapping * fix: missing system * fix: stream need query alt=sse
1 parent fe3585f commit e454164

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

relay/adaptor/vertexai/adaptor.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var _ adaptor.Adaptor = new(Adaptor)
1919

2020
const channelName = "vertexai"
2121

22-
type Adaptor struct {}
22+
type Adaptor struct{}
2323

2424
func (a *Adaptor) Init(meta *meta.Meta) {
2525
}
@@ -38,7 +38,7 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, request *model.G
3838
}
3939

4040
func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta *meta.Meta) (usage *model.Usage, err *model.ErrorWithStatusCode) {
41-
adaptor := GetAdaptor(meta.OriginModelName)
41+
adaptor := GetAdaptor(meta.ActualModelName)
4242
if adaptor == nil {
4343
return nil, &relaymodel.ErrorWithStatusCode{
4444
StatusCode: http.StatusInternalServerError,
@@ -63,20 +63,36 @@ func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) {
6363
suffix := ""
6464
if strings.HasPrefix(meta.ActualModelName, "gemini") {
6565
if meta.IsStream {
66-
suffix = "streamGenerateContent"
66+
suffix = "streamGenerateContent?alt=sse"
6767
} else {
6868
suffix = "generateContent"
6969
}
7070
} else {
7171
if meta.IsStream {
72-
suffix = "streamRawPredict"
72+
suffix = "streamRawPredict?alt=sse"
7373
} else {
7474
suffix = "rawPredict"
7575
}
7676
}
7777

78-
baseUrl := fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1/projects/%s/locations/%s/publishers/google/models/%s:%s", meta.Config.Region, meta.Config.VertexAIProjectID, meta.Config.Region, meta.ActualModelName, suffix)
79-
return baseUrl, nil
78+
if meta.BaseURL != "" {
79+
return fmt.Sprintf(
80+
"%s/v1/projects/%s/locations/%s/publishers/google/models/%s:%s",
81+
meta.BaseURL,
82+
meta.Config.VertexAIProjectID,
83+
meta.Config.Region,
84+
meta.ActualModelName,
85+
suffix,
86+
), nil
87+
}
88+
return fmt.Sprintf(
89+
"https://%s-aiplatform.googleapis.com/v1/projects/%s/locations/%s/publishers/google/models/%s:%s",
90+
meta.Config.Region,
91+
meta.Config.VertexAIProjectID,
92+
meta.Config.Region,
93+
meta.ActualModelName,
94+
suffix,
95+
), nil
8096
}
8197

8298
func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, meta *meta.Meta) error {

relay/adaptor/vertexai/claude/adapter.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, request *model.G
3030
req := Request{
3131
AnthropicVersion: anthropicVersion,
3232
// Model: claudeReq.Model,
33-
Messages: claudeReq.Messages,
34-
MaxTokens: claudeReq.MaxTokens,
35-
Temperature: claudeReq.Temperature,
36-
TopP: claudeReq.TopP,
37-
TopK: claudeReq.TopK,
38-
Stream: claudeReq.Stream,
39-
Tools: claudeReq.Tools,
33+
Messages: claudeReq.Messages,
34+
System: claudeReq.System,
35+
MaxTokens: claudeReq.MaxTokens,
36+
Temperature: claudeReq.Temperature,
37+
TopP: claudeReq.TopP,
38+
TopK: claudeReq.TopK,
39+
Stream: claudeReq.Stream,
40+
Tools: claudeReq.Tools,
4041
}
4142

4243
c.Set(ctxkey.RequestModel, request.Model)

0 commit comments

Comments
 (0)