Merge pull request #19: 修复 Gemini 兼容平台版本路径重复拼接
ci / verify (push) Successful in 9m45s
release-ci / verify-tag (push) Successful in 9m54s
ci / verify (push) Successful in 9m45s
release-ci / verify-tag (push) Successful in 9m54s
修复 Gemini 兼容平台已包含 /v1 时重复追加 /v1beta 的问题。 验证:精确 ci / verify (pull_request) 已通过。
This commit was merged in pull request #19.
This commit is contained in:
@@ -1558,11 +1558,40 @@ func TestGeminiClientChatConvertsFunctionCallResponse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGeminiURLAcceptsVersionedBaseURL(t *testing.T) {
|
func TestGeminiURLAcceptsVersionedBaseURL(t *testing.T) {
|
||||||
got := geminiURL("https://generativelanguage.googleapis.com/v1beta", "gemini-2.5-flash", "test-key")
|
tests := []struct {
|
||||||
want := "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=test-key"
|
name string
|
||||||
if got != want {
|
baseURL string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "default version",
|
||||||
|
baseURL: "https://generativelanguage.googleapis.com",
|
||||||
|
want: "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=test-key",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "google beta version",
|
||||||
|
baseURL: "https://generativelanguage.googleapis.com/v1beta",
|
||||||
|
want: "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=test-key",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "compatible v1 endpoint",
|
||||||
|
baseURL: "https://cloud.dataeyes.ai/v1",
|
||||||
|
want: "https://cloud.dataeyes.ai/v1/models/gemini-2.5-flash:generateContent?key=test-key",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "openai suffix after version",
|
||||||
|
baseURL: "https://generativelanguage.googleapis.com/v1beta/openai",
|
||||||
|
want: "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=test-key",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
got := geminiURL(test.baseURL, "gemini-2.5-flash", "test-key")
|
||||||
|
if got != test.want {
|
||||||
t.Fatalf("unexpected gemini url: %s", got)
|
t.Fatalf("unexpected gemini url: %s", got)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVolcesClientImageEditUsesGenerationEndpoint(t *testing.T) {
|
func TestVolcesClientImageEditUsesGenerationEndpoint(t *testing.T) {
|
||||||
|
|||||||
@@ -61,11 +61,13 @@ func geminiURL(baseURL string, model string, apiKey string) string {
|
|||||||
base = "https://generativelanguage.googleapis.com"
|
base = "https://generativelanguage.googleapis.com"
|
||||||
}
|
}
|
||||||
base = strings.TrimSuffix(base, "/openai")
|
base = strings.TrimSuffix(base, "/openai")
|
||||||
if strings.HasSuffix(base, "/v1beta") {
|
if !strings.HasSuffix(base, "/v1") &&
|
||||||
base = strings.TrimSuffix(base, "/v1beta")
|
!strings.HasSuffix(base, "/v1beta") &&
|
||||||
|
!strings.HasSuffix(base, "/v1alpha") {
|
||||||
|
base += "/v1beta"
|
||||||
}
|
}
|
||||||
escapedModel := url.PathEscape(model)
|
escapedModel := url.PathEscape(model)
|
||||||
return fmt.Sprintf("%s/v1beta/models/%s:generateContent?key=%s", base, escapedModel, url.QueryEscape(apiKey))
|
return fmt.Sprintf("%s/models/%s:generateContent?key=%s", base, escapedModel, url.QueryEscape(apiKey))
|
||||||
}
|
}
|
||||||
|
|
||||||
func geminiBody(request Request) map[string]any {
|
func geminiBody(request Request) map[string]any {
|
||||||
|
|||||||
Reference in New Issue
Block a user