mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-17 01:06:37 +08:00
feat: support Gemini openai compatible api
This commit is contained in:
parent
1ce6a226f6
commit
3f421c4f04
@ -1,18 +1,12 @@
|
|||||||
package gemini
|
package gemini
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/songquanpeng/one-api/relay/adaptor/geminiv2"
|
||||||
|
)
|
||||||
|
|
||||||
// https://ai.google.dev/models/gemini
|
// https://ai.google.dev/models/gemini
|
||||||
|
|
||||||
var ModelList = []string{
|
var ModelList = geminiv2.ModelList
|
||||||
"gemini-pro", "gemini-1.0-pro",
|
|
||||||
// "gemma-2-2b-it", "gemma-2-9b-it", "gemma-2-27b-it",
|
|
||||||
"gemini-1.5-flash", "gemini-1.5-flash-8b",
|
|
||||||
"gemini-1.5-pro", "gemini-1.5-pro-experimental",
|
|
||||||
"text-embedding-004", "aqa",
|
|
||||||
"gemini-2.0-flash", "gemini-2.0-flash-exp",
|
|
||||||
"gemini-2.0-flash-lite-preview-02-05",
|
|
||||||
"gemini-2.0-flash-thinking-exp-01-21",
|
|
||||||
"gemini-2.0-pro-exp-02-05",
|
|
||||||
}
|
|
||||||
|
|
||||||
// ModelsSupportSystemInstruction is the list of models that support system instruction.
|
// ModelsSupportSystemInstruction is the list of models that support system instruction.
|
||||||
//
|
//
|
||||||
|
15
relay/adaptor/geminiv2/constants.go
Normal file
15
relay/adaptor/geminiv2/constants.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package geminiv2
|
||||||
|
|
||||||
|
// https://ai.google.dev/models/gemini
|
||||||
|
|
||||||
|
var ModelList = []string{
|
||||||
|
"gemini-pro", "gemini-1.0-pro",
|
||||||
|
// "gemma-2-2b-it", "gemma-2-9b-it", "gemma-2-27b-it",
|
||||||
|
"gemini-1.5-flash", "gemini-1.5-flash-8b",
|
||||||
|
"gemini-1.5-pro", "gemini-1.5-pro-experimental",
|
||||||
|
"text-embedding-004", "aqa",
|
||||||
|
"gemini-2.0-flash", "gemini-2.0-flash-exp",
|
||||||
|
"gemini-2.0-flash-lite-preview-02-05",
|
||||||
|
"gemini-2.0-flash-thinking-exp-01-21",
|
||||||
|
"gemini-2.0-pro-exp-02-05",
|
||||||
|
}
|
14
relay/adaptor/geminiv2/main.go
Normal file
14
relay/adaptor/geminiv2/main.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package geminiv2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/songquanpeng/one-api/relay/meta"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetRequestURL(meta *meta.Meta) (string, error) {
|
||||||
|
baseURL := strings.TrimSuffix(meta.BaseURL, "/")
|
||||||
|
requestPath := strings.TrimPrefix(meta.RequestURLPath, "/v1")
|
||||||
|
return fmt.Sprintf("%s%s", baseURL, requestPath), nil
|
||||||
|
}
|
@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/songquanpeng/one-api/relay/adaptor/alibailian"
|
"github.com/songquanpeng/one-api/relay/adaptor/alibailian"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/baiduv2"
|
"github.com/songquanpeng/one-api/relay/adaptor/baiduv2"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/doubao"
|
"github.com/songquanpeng/one-api/relay/adaptor/doubao"
|
||||||
|
"github.com/songquanpeng/one-api/relay/adaptor/geminiv2"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/novita"
|
"github.com/songquanpeng/one-api/relay/adaptor/novita"
|
||||||
"github.com/songquanpeng/one-api/relay/channeltype"
|
"github.com/songquanpeng/one-api/relay/channeltype"
|
||||||
@ -59,6 +60,8 @@ func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) {
|
|||||||
return baiduv2.GetRequestURL(meta)
|
return baiduv2.GetRequestURL(meta)
|
||||||
case channeltype.AliBailian:
|
case channeltype.AliBailian:
|
||||||
return alibailian.GetRequestURL(meta)
|
return alibailian.GetRequestURL(meta)
|
||||||
|
case channeltype.GeminiOpenAICompatible:
|
||||||
|
return geminiv2.GetRequestURL(meta)
|
||||||
default:
|
default:
|
||||||
return GetFullRequestURL(meta.BaseURL, meta.RequestURLPath, meta.ChannelType), nil
|
return GetFullRequestURL(meta.BaseURL, meta.RequestURLPath, meta.ChannelType), nil
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/songquanpeng/one-api/relay/adaptor/baiduv2"
|
"github.com/songquanpeng/one-api/relay/adaptor/baiduv2"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/deepseek"
|
"github.com/songquanpeng/one-api/relay/adaptor/deepseek"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/doubao"
|
"github.com/songquanpeng/one-api/relay/adaptor/doubao"
|
||||||
|
"github.com/songquanpeng/one-api/relay/adaptor/geminiv2"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/groq"
|
"github.com/songquanpeng/one-api/relay/adaptor/groq"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/lingyiwanwu"
|
"github.com/songquanpeng/one-api/relay/adaptor/lingyiwanwu"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
||||||
@ -82,6 +83,8 @@ func GetCompatibleChannelMeta(channelType int) (string, []string) {
|
|||||||
return "openrouter", openrouter.ModelList
|
return "openrouter", openrouter.ModelList
|
||||||
case channeltype.AliBailian:
|
case channeltype.AliBailian:
|
||||||
return "alibailian", alibailian.ModelList
|
return "alibailian", alibailian.ModelList
|
||||||
|
case channeltype.GeminiOpenAICompatible:
|
||||||
|
return "geminiv2", geminiv2.ModelList
|
||||||
default:
|
default:
|
||||||
return "openai", ModelList
|
return "openai", ModelList
|
||||||
}
|
}
|
||||||
|
@ -52,5 +52,6 @@ const (
|
|||||||
XunfeiV2
|
XunfeiV2
|
||||||
AliBailian
|
AliBailian
|
||||||
OpenAICompatible
|
OpenAICompatible
|
||||||
|
GeminiOpenAICompatible
|
||||||
Dummy
|
Dummy
|
||||||
)
|
)
|
||||||
|
@ -52,6 +52,8 @@ var ChannelBaseURLs = []string{
|
|||||||
"https://spark-api-open.xf-yun.com", // 48
|
"https://spark-api-open.xf-yun.com", // 48
|
||||||
"https://dashscope.aliyuncs.com", // 49
|
"https://dashscope.aliyuncs.com", // 49
|
||||||
"", // 50
|
"", // 50
|
||||||
|
|
||||||
|
"https://generativelanguage.googleapis.com/v1beta/openai/", // 51
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -7,11 +7,18 @@ export const CHANNEL_OPTIONS = [
|
|||||||
color: 'olive',
|
color: 'olive',
|
||||||
description: 'OpenAI 兼容渠道,支持设置 Base URL',
|
description: 'OpenAI 兼容渠道,支持设置 Base URL',
|
||||||
},
|
},
|
||||||
{ key: 14, text: 'Anthropic Claude', value: 14, color: 'black' },
|
{key: 14, text: 'Anthropic', value: 14, color: 'black'},
|
||||||
{ key: 33, text: 'AWS', value: 33, color: 'black' },
|
{ key: 33, text: 'AWS', value: 33, color: 'black' },
|
||||||
{ key: 3, text: 'Azure OpenAI', value: 3, color: 'olive' },
|
{key: 3, text: 'Azure', value: 3, color: 'olive'},
|
||||||
{ key: 11, text: 'Google PaLM2', value: 11, color: 'orange' },
|
{key: 11, text: 'PaLM2', value: 11, color: 'orange'},
|
||||||
{ key: 24, text: 'Google Gemini', value: 24, color: 'orange' },
|
{key: 24, text: 'Gemini', value: 24, color: 'orange'},
|
||||||
|
{
|
||||||
|
key: 51,
|
||||||
|
text: 'Gemini (OpenAI)',
|
||||||
|
value: 51,
|
||||||
|
color: 'orange',
|
||||||
|
description: 'Gemini OpenAI 兼容格式',
|
||||||
|
},
|
||||||
{ key: 28, text: 'Mistral AI', value: 28, color: 'orange' },
|
{ key: 28, text: 'Mistral AI', value: 28, color: 'orange' },
|
||||||
{ key: 41, text: 'Novita', value: 41, color: 'purple' },
|
{ key: 41, text: 'Novita', value: 41, color: 'purple' },
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user