Skip to content

Commit 7c44823

Browse files
authored
✨ feat: add Cohere provider support
1 parent de8df94 commit 7c44823

File tree

13 files changed

+76
-0
lines changed

13 files changed

+76
-0
lines changed

Dockerfile

+2
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ ENV \
157157
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
158158
# Cloudflare
159159
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
160+
# Cohere
161+
COHERE_API_KEY="" COHERE_MODEL_LIST="" \
160162
# DeepSeek
161163
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
162164
# Fireworks AI

Dockerfile.database

+2
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ ENV \
200200
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
201201
# Cloudflare
202202
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
203+
# Cohere
204+
COHERE_API_KEY="" COHERE_MODEL_LIST="" \
203205
# DeepSeek
204206
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
205207
# Fireworks AI

Dockerfile.pglite

+2
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ ENV \
158158
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
159159
# Cloudflare
160160
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
161+
# Cohere
162+
COHERE_API_KEY="" COHERE_MODEL_LIST="" \
161163
# DeepSeek
162164
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
163165
# Fireworks AI

src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
Ai360ProviderCard,
66
AnthropicProviderCard,
77
BaichuanProviderCard,
8+
CohereProviderCard,
89
DeepSeekProviderCard,
910
FireworksAIProviderCard,
1011
GiteeAIProviderCard,
@@ -82,6 +83,7 @@ export const useProviderList = (): ProviderItem[] => {
8283
XAIProviderCard,
8384
JinaProviderCard,
8485
SambaNovaProviderCard,
86+
CohereProviderCard,
8587
QwenProviderCard,
8688
WenxinProviderCard,
8789
HunyuanProviderCard,

src/config/aiModels/cohere.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { AIChatModelCard } from '@/types/aiModel';
2+
3+
const cohereChatModels: AIChatModelCard[] = [
4+
{
5+
abilities: {
6+
functionCall: true,
7+
},
8+
contextWindowTokens: 16_000,
9+
description: '',
10+
displayName: 'Command',
11+
enabled: true,
12+
id: 'command',
13+
pricing: {
14+
input: 0.6,
15+
output: 1.2
16+
},
17+
type: 'chat'
18+
},
19+
]
20+
21+
export const allModels = [...cohereChatModels];
22+
23+
export default allModels;

src/config/aiModels/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { default as azureai } from './azureai';
88
import { default as baichuan } from './baichuan';
99
import { default as bedrock } from './bedrock';
1010
import { default as cloudflare } from './cloudflare';
11+
import { default as cohere } from './cohere';
1112
import { default as deepseek } from './deepseek';
1213
import { default as doubao } from './doubao';
1314
import { default as fireworksai } from './fireworksai';
@@ -77,6 +78,7 @@ export const LOBE_DEFAULT_MODEL_LIST = buildDefaultModelList({
7778
baichuan,
7879
bedrock,
7980
cloudflare,
81+
cohere,
8082
deepseek,
8183
doubao,
8284
fireworksai,
@@ -127,6 +129,7 @@ export { default as azureai } from './azureai';
127129
export { default as baichuan } from './baichuan';
128130
export { default as bedrock } from './bedrock';
129131
export { default as cloudflare } from './cloudflare';
132+
export { default as cohere } from './cohere';
130133
export { default as deepseek } from './deepseek';
131134
export { default as doubao } from './doubao';
132135
export { default as fireworksai } from './fireworksai';

src/config/llm.ts

+6
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ export const getLLMConfig = () => {
150150

151151
ENABLED_PPIO: z.boolean(),
152152
PPIO_API_KEY: z.string().optional(),
153+
154+
ENABLED_COHERE: z.boolean(),
155+
COHERE_API_KEY: z.string().optional(),
153156
},
154157
runtimeEnv: {
155158
API_KEY_SELECT_MODE: process.env.API_KEY_SELECT_MODE,
@@ -298,6 +301,9 @@ export const getLLMConfig = () => {
298301

299302
ENABLED_PPIO: !!process.env.PPIO_API_KEY,
300303
PPIO_API_KEY: process.env.PPIO_API_KEY,
304+
305+
ENABLED_COHERE: !!process.env.COHERE_API_KEY,
306+
COHERE_API_KEY: process.env.COHERE_API_KEY,
301307
},
302308
});
303309
};

src/config/modelProviders/cohere.ts

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { ModelProviderCard } from '@/types/llm';
2+
3+
const Cohere: ModelProviderCard = {
4+
chatModels: [],
5+
checkModel: 'command',
6+
description: 'Cohere',
7+
//disableBrowserRequest: true,
8+
id: 'cohere',
9+
modelsUrl: 'https://docs.cohere.com/v2/docs/models',
10+
name: 'Cohere',
11+
settings: {
12+
//disableBrowserRequest: true,
13+
sdkType: 'openai',
14+
},
15+
url: 'https://cohere.com',
16+
};
17+
18+
export default Cohere;

src/config/modelProviders/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import AzureAIProvider from './azureai';
88
import BaichuanProvider from './baichuan';
99
import BedrockProvider from './bedrock';
1010
import CloudflareProvider from './cloudflare';
11+
import CohereProvider from './cohere';
1112
import DeepSeekProvider from './deepseek';
1213
import DoubaoProvider from './doubao';
1314
import FireworksAIProvider from './fireworksai';
@@ -75,6 +76,7 @@ export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
7576
XAIProvider.chatModels,
7677
JinaProvider.chatModels,
7778
SambaNovaProvider.chatModels,
79+
CohereProvider.chatModels,
7880
ZeroOneProvider.chatModels,
7981
StepfunProvider.chatModels,
8082
NovitaProvider.chatModels,
@@ -124,6 +126,7 @@ export const DEFAULT_MODEL_PROVIDER_LIST = [
124126
XAIProvider,
125127
JinaProvider,
126128
SambaNovaProvider,
129+
CohereProvider,
127130
QwenProvider,
128131
WenxinProvider,
129132
TencentcloudProvider,
@@ -164,6 +167,7 @@ export { default as AzureAIProviderCard } from './azureai';
164167
export { default as BaichuanProviderCard } from './baichuan';
165168
export { default as BedrockProviderCard } from './bedrock';
166169
export { default as CloudflareProviderCard } from './cloudflare';
170+
export { default as CohereProviderCard } from './cohere';
167171
export { default as DeepSeekProviderCard } from './deepseek';
168172
export { default as DoubaoProviderCard } from './doubao';
169173
export { default as FireworksAIProviderCard } from './fireworksai';
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ModelProvider } from '../types';
2+
import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
3+
4+
export const LobeCohereAI = LobeOpenAICompatibleFactory({
5+
baseURL: 'https://api.cohere.ai/compatibility/v1',
6+
debug: {
7+
chatCompletion: () => process.env.DEBUG_COHERE_CHAT_COMPLETION === '1',
8+
},
9+
provider: ModelProvider.Cohere,
10+
});

src/libs/agent-runtime/runtimeMap.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { LobeAzureAI } from './azureai';
66
import { LobeBaichuanAI } from './baichuan';
77
import LobeBedrockAI from './bedrock';
88
import { LobeCloudflareAI } from './cloudflare';
9+
import { LobeCohereAI } from './cohere';
910
import { LobeDeepSeekAI } from './deepseek';
1011
import { LobeFireworksAI } from './fireworksai';
1112
import { LobeGiteeAI } from './giteeai';
@@ -54,6 +55,7 @@ export const providerRuntimeMap = {
5455
baichuan: LobeBaichuanAI,
5556
bedrock: LobeBedrockAI,
5657
cloudflare: LobeCloudflareAI,
58+
cohere: LobeCohereAI,
5759
deepseek: LobeDeepSeekAI,
5860
doubao: LobeVolcengineAI,
5961
fireworksai: LobeFireworksAI,

src/libs/agent-runtime/types/type.ts

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export enum ModelProvider {
3030
Baichuan = 'baichuan',
3131
Bedrock = 'bedrock',
3232
Cloudflare = 'cloudflare',
33+
Cohere = 'cohere',
3334
DeepSeek = 'deepseek',
3435
/**
3536
* @deprecated

src/types/user/settings/keyVaults.ts

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export interface UserKeyVaults extends SearchEngineKeyVaults {
4141
baichuan?: OpenAICompatibleKeyVault;
4242
bedrock?: AWSBedrockKeyVault;
4343
cloudflare?: CloudflareKeyVault;
44+
cohere?: OpenAICompatibleKeyVault;
4445
deepseek?: OpenAICompatibleKeyVault;
4546
doubao?: OpenAICompatibleKeyVault;
4647
fireworksai?: OpenAICompatibleKeyVault;

0 commit comments

Comments
 (0)