feat: add support for bytedance's doubao (#1438)
* 增加豆包大模型支持 * chore: update channel options & add prompt --------- Co-authored-by: 康龙彪 <longbiao.kang@i-tudou.com> Co-authored-by: JustSong <songquanpeng@foxmail.com>
This commit is contained in:
parent
9321427c6e
commit
98669d5d48
@ -68,6 +68,7 @@ _✨ 通过标准的 OpenAI API 格式访问所有的大模型,开箱即用
|
|||||||
+ [x] [Anthropic Claude 系列模型](https://anthropic.com) (支持 AWS Claude)
|
+ [x] [Anthropic Claude 系列模型](https://anthropic.com) (支持 AWS Claude)
|
||||||
+ [x] [Google PaLM2/Gemini 系列模型](https://developers.generativeai.google)
|
+ [x] [Google PaLM2/Gemini 系列模型](https://developers.generativeai.google)
|
||||||
+ [x] [Mistral 系列模型](https://mistral.ai/)
|
+ [x] [Mistral 系列模型](https://mistral.ai/)
|
||||||
|
+ [x] [字节跳动豆包大模型](https://console.volcengine.com/ark/region:ark+cn-beijing/model)
|
||||||
+ [x] [百度文心一言系列模型](https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html)
|
+ [x] [百度文心一言系列模型](https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html)
|
||||||
+ [x] [阿里通义千问系列模型](https://help.aliyun.com/document_detail/2400395.html)
|
+ [x] [阿里通义千问系列模型](https://help.aliyun.com/document_detail/2400395.html)
|
||||||
+ [x] [讯飞星火认知大模型](https://www.xfyun.cn/doc/spark/Web.html)
|
+ [x] [讯飞星火认知大模型](https://www.xfyun.cn/doc/spark/Web.html)
|
||||||
@ -76,7 +77,6 @@ _✨ 通过标准的 OpenAI API 格式访问所有的大模型,开箱即用
|
|||||||
+ [x] [腾讯混元大模型](https://cloud.tencent.com/document/product/1729)
|
+ [x] [腾讯混元大模型](https://cloud.tencent.com/document/product/1729)
|
||||||
+ [x] [Moonshot AI](https://platform.moonshot.cn/)
|
+ [x] [Moonshot AI](https://platform.moonshot.cn/)
|
||||||
+ [x] [百川大模型](https://platform.baichuan-ai.com)
|
+ [x] [百川大模型](https://platform.baichuan-ai.com)
|
||||||
+ [ ] [字节云雀大模型](https://www.volcengine.com/product/ark) (WIP)
|
|
||||||
+ [x] [MINIMAX](https://api.minimax.chat/)
|
+ [x] [MINIMAX](https://api.minimax.chat/)
|
||||||
+ [x] [Groq](https://wow.groq.com/)
|
+ [x] [Groq](https://wow.groq.com/)
|
||||||
+ [x] [Ollama](https://github.com/ollama/ollama)
|
+ [x] [Ollama](https://github.com/ollama/ollama)
|
||||||
|
13
relay/adaptor/doubao/constants.go
Normal file
13
relay/adaptor/doubao/constants.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package doubao
|
||||||
|
|
||||||
|
// https://console.volcengine.com/ark/region:ark+cn-beijing/model
|
||||||
|
|
||||||
|
var ModelList = []string{
|
||||||
|
"Doubao-pro-128k",
|
||||||
|
"Doubao-pro-32k",
|
||||||
|
"Doubao-pro-4k",
|
||||||
|
"Doubao-lite-128k",
|
||||||
|
"Doubao-lite-32k",
|
||||||
|
"Doubao-lite-4k",
|
||||||
|
"Doubao-embedding",
|
||||||
|
}
|
14
relay/adaptor/doubao/main.go
Normal file
14
relay/adaptor/doubao/main.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package doubao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/songquanpeng/one-api/relay/meta"
|
||||||
|
"github.com/songquanpeng/one-api/relay/relaymode"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetRequestURL(meta *meta.Meta) (string, error) {
|
||||||
|
if meta.Mode == relaymode.ChatCompletions {
|
||||||
|
return fmt.Sprintf("%s/api/v3/chat/completions", meta.BaseURL), nil
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("unsupported relay mode %d for doubao", meta.Mode)
|
||||||
|
}
|
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor"
|
"github.com/songquanpeng/one-api/relay/adaptor"
|
||||||
|
"github.com/songquanpeng/one-api/relay/adaptor/doubao"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
"github.com/songquanpeng/one-api/relay/adaptor/minimax"
|
||||||
"github.com/songquanpeng/one-api/relay/channeltype"
|
"github.com/songquanpeng/one-api/relay/channeltype"
|
||||||
"github.com/songquanpeng/one-api/relay/meta"
|
"github.com/songquanpeng/one-api/relay/meta"
|
||||||
@ -45,6 +46,8 @@ func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) {
|
|||||||
return GetFullRequestURL(meta.BaseURL, requestURL, meta.ChannelType), nil
|
return GetFullRequestURL(meta.BaseURL, requestURL, meta.ChannelType), nil
|
||||||
case channeltype.Minimax:
|
case channeltype.Minimax:
|
||||||
return minimax.GetRequestURL(meta)
|
return minimax.GetRequestURL(meta)
|
||||||
|
case channeltype.Doubao:
|
||||||
|
return doubao.GetRequestURL(meta)
|
||||||
default:
|
default:
|
||||||
return GetFullRequestURL(meta.BaseURL, meta.RequestURLPath, meta.ChannelType), nil
|
return GetFullRequestURL(meta.BaseURL, meta.RequestURLPath, meta.ChannelType), nil
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"github.com/songquanpeng/one-api/relay/adaptor/ai360"
|
"github.com/songquanpeng/one-api/relay/adaptor/ai360"
|
||||||
"github.com/songquanpeng/one-api/relay/adaptor/baichuan"
|
"github.com/songquanpeng/one-api/relay/adaptor/baichuan"
|
||||||
"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/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"
|
||||||
@ -20,6 +21,7 @@ var CompatibleChannels = []int{
|
|||||||
channeltype.Moonshot,
|
channeltype.Moonshot,
|
||||||
channeltype.Baichuan,
|
channeltype.Baichuan,
|
||||||
channeltype.Minimax,
|
channeltype.Minimax,
|
||||||
|
channeltype.Doubao,
|
||||||
channeltype.Mistral,
|
channeltype.Mistral,
|
||||||
channeltype.Groq,
|
channeltype.Groq,
|
||||||
channeltype.LingYiWanWu,
|
channeltype.LingYiWanWu,
|
||||||
@ -52,6 +54,8 @@ func GetCompatibleChannelMeta(channelType int) (string, []string) {
|
|||||||
return "deepseek", deepseek.ModelList
|
return "deepseek", deepseek.ModelList
|
||||||
case channeltype.TogetherAI:
|
case channeltype.TogetherAI:
|
||||||
return "together.ai", togetherai.ModelList
|
return "together.ai", togetherai.ModelList
|
||||||
|
case channeltype.Doubao:
|
||||||
|
return "doubao", doubao.ModelList
|
||||||
default:
|
default:
|
||||||
return "openai", ModelList
|
return "openai", ModelList
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,6 @@ const (
|
|||||||
Cloudflare
|
Cloudflare
|
||||||
DeepL
|
DeepL
|
||||||
TogetherAI
|
TogetherAI
|
||||||
|
Doubao
|
||||||
Dummy
|
Dummy
|
||||||
)
|
)
|
||||||
|
@ -41,6 +41,7 @@ var ChannelBaseURLs = []string{
|
|||||||
"https://api.cloudflare.com", // 37
|
"https://api.cloudflare.com", // 37
|
||||||
"https://api-free.deepl.com", // 38
|
"https://api-free.deepl.com", // 38
|
||||||
"https://api.together.xyz", // 39
|
"https://api.together.xyz", // 39
|
||||||
|
"https://ark.cn-beijing.volces.com", // 40
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -47,6 +47,12 @@ export const CHANNEL_OPTIONS = {
|
|||||||
value: 28,
|
value: 28,
|
||||||
color: 'warning'
|
color: 'warning'
|
||||||
},
|
},
|
||||||
|
40: {
|
||||||
|
key: 40,
|
||||||
|
text: '字节跳动豆包',
|
||||||
|
value: 40,
|
||||||
|
color: 'primary'
|
||||||
|
},
|
||||||
15: {
|
15: {
|
||||||
key: 15,
|
key: 15,
|
||||||
text: '百度文心千帆',
|
text: '百度文心千帆',
|
||||||
|
@ -6,6 +6,7 @@ export const CHANNEL_OPTIONS = [
|
|||||||
{key: 11, text: 'Google PaLM2', value: 11, color: 'orange'},
|
{key: 11, text: 'Google PaLM2', value: 11, color: 'orange'},
|
||||||
{key: 24, text: 'Google Gemini', value: 24, color: 'orange'},
|
{key: 24, text: 'Google Gemini', value: 24, color: 'orange'},
|
||||||
{key: 28, text: 'Mistral AI', value: 28, color: 'orange'},
|
{key: 28, text: 'Mistral AI', value: 28, color: 'orange'},
|
||||||
|
{key: 40, text: '字节跳动豆包', value: 40, color: 'blue'},
|
||||||
{key: 15, text: '百度文心千帆', value: 15, color: 'blue'},
|
{key: 15, text: '百度文心千帆', value: 15, color: 'blue'},
|
||||||
{key: 17, text: '阿里通义千问', value: 17, color: 'orange'},
|
{key: 17, text: '阿里通义千问', value: 17, color: 'orange'},
|
||||||
{key: 18, text: '讯飞星火认知', value: 18, color: 'blue'},
|
{key: 18, text: '讯飞星火认知', value: 18, color: 'blue'},
|
||||||
|
@ -362,6 +362,13 @@ const EditChannel = () => {
|
|||||||
</Message>
|
</Message>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
inputs.type === 40 && (
|
||||||
|
<Message>
|
||||||
|
对于豆包而言,需要手动去 <a target="_blank" href="https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint">模型推理页面</a> 创建推理接入点,以接入点名称作为模型名称,例如:`ep-20240608051426-tkxvl`。
|
||||||
|
</Message>
|
||||||
|
)
|
||||||
|
}
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Form.Dropdown
|
<Form.Dropdown
|
||||||
label='模型'
|
label='模型'
|
||||||
|
Loading…
Reference in New Issue
Block a user