Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ feat: add Gitee AI model provider #4716

Merged
merged 12 commits into from
Nov 25, 2024
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -158,6 +158,8 @@ ENV \
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
# Fireworks AI
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
# Gitee
GITEE_API_KEY="" GITEE_MODEL_LIST="" \
hezhijie0327 marked this conversation as resolved.
Show resolved Hide resolved
# GitHub
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
# Google
2 changes: 2 additions & 0 deletions Dockerfile.database
Original file line number Diff line number Diff line change
@@ -193,6 +193,8 @@ ENV \
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
# Fireworks AI
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
# Gitee
GITEE_API_KEY="" GITEE_MODEL_LIST="" \
hezhijie0327 marked this conversation as resolved.
Show resolved Hide resolved
# GitHub
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
# Google
2 changes: 2 additions & 0 deletions src/app/(main)/settings/llm/ProviderList/providers.tsx
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ import {
BaichuanProviderCard,
DeepSeekProviderCard,
FireworksAIProviderCard,
GiteeProviderCard,
hezhijie0327 marked this conversation as resolved.
Show resolved Hide resolved
GoogleProviderCard,
GroqProviderCard,
HunyuanProviderCard,
@@ -88,6 +89,7 @@ export const useProviderList = (): ProviderItem[] => {
TaichuProviderCard,
InternLMProviderCard,
SiliconCloudProviderCard,
GiteeProviderCard,
hezhijie0327 marked this conversation as resolved.
Show resolved Hide resolved
],
[
AzureProvider,
6 changes: 6 additions & 0 deletions src/config/llm.ts
Original file line number Diff line number Diff line change
@@ -102,6 +102,9 @@ export const getLLMConfig = () => {
SILICONCLOUD_API_KEY: z.string().optional(),
SILICONCLOUD_PROXY_URL: z.string().optional(),

ENABLED_GITEE: z.boolean(),
GITEE_API_KEY: z.string().optional(),
hezhijie0327 marked this conversation as resolved.
Show resolved Hide resolved

ENABLED_UPSTAGE: z.boolean(),
UPSTAGE_API_KEY: z.string().optional(),

@@ -227,6 +230,9 @@ export const getLLMConfig = () => {
SILICONCLOUD_API_KEY: process.env.SILICONCLOUD_API_KEY,
SILICONCLOUD_PROXY_URL: process.env.SILICONCLOUD_PROXY_URL,

ENABLED_GITEE: !!process.env.GITEE_API_KEY,
GITEE_API_KEY: process.env.GITEE_API_KEY,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ENABLED_GITEE: !!process.env.GITEE_API_KEY,
GITEE_API_KEY: process.env.GITEE_API_KEY,
ENABLED_GITEE_AI: !!process.env.GITEE_AI_API_KEY,
GITEE_AI_API_KEY: process.env.GITEE_AI_API_KEY,


ENABLED_UPSTAGE: !!process.env.UPSTAGE_API_KEY,
UPSTAGE_API_KEY: process.env.UPSTAGE_API_KEY,

66 changes: 66 additions & 0 deletions src/config/modelProviders/gitee.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { ModelProviderCard } from '@/types/llm';

// ref: https://ai.gitee.com/serverless-api/packages/1493
const Gitee: ModelProviderCard = {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const Gitee: ModelProviderCard = {
const GiteeAI: ModelProviderCard = {

chatModels: [
{
description: 'Qwen2.5-72B-Instruct 支持 16k 上下文, 生成长文本超过 8K 。支持 function call 与外部系统无缝交互,极大提升了灵活性和扩展性。模型知识明显增加,并且大大提高了编码和数学能力, 多语言支持超过 29 种',
displayName: 'Qwen2.5 72B Instruct',
enabled: true,
functionCall: true,
id: 'Qwen2.5-72B-Instruct',
tokens: 16_000,
},
{
description: 'Qwen2 是 Qwen 模型的最新系列,支持 128k 上下文,对比当前最优的开源模型,Qwen2-72B 在自然语言理解、知识、代码、数学及多语言等多项能力上均显著超越当前领先的模型。',
displayName: 'Qwen2 72B Instruct',
id: 'Qwen2-72B-Instruct',
tokens: 6000,
},
{
description: 'Qwen2 是 Qwen 模型的最新系列,能够超越同等规模的最优开源模型甚至更大规模的模型,Qwen2 7B 在多个评测上取得显著的优势,尤其是代码及中文理解上。',
displayName: 'Qwen2 7B Instruct',
id: 'Qwen2-7B-Instruct',
tokens: 32_000,
},
{
description: 'GLM-4-9B-Chat 在语义、数学、推理、代码和知识等多方面均表现出较高性能。还具备网页浏览、代码执行、自定义工具调用和长文本推理。 支持包括日语,韩语,德语在内的 26 种语言。',
displayName: 'GLM4 9B Chat',
enabled: true,
id: 'glm-4-9b-chat',
tokens: 32_000,
},
{
description: 'Yi-1.5-34B 在保持原系列模型优秀的通用语言能力的前提下,通过增量训练 5 千亿高质量 token,大幅提高了数学逻辑、代码能力。',
displayName: 'Yi 34B Chat',
enabled: true,
id: 'Yi-34B-Chat',
tokens: 4000,
},
{
description: 'DeepSeek Coder 33B 是一个代码语言模型, 基于 2 万亿数据训练而成,其中 87% 为代码, 13% 为中英文语言。模型引入 16K 窗口大小和填空任务,提供项目级别的代码补全和片段填充功能。',
displayName: 'DeepSeek Coder 33B Instruct',
enabled: true,
id: 'deepseek-coder-33B-instruct',
tokens: 8000,
},
{
description: 'CodeGeeX4-ALL-9B 是一个多语言代码生成模型,支持包括代码补全和生成、代码解释器、网络搜索、函数调用、仓库级代码问答在内的全面功能,覆盖软件开发的各种场景。是参数少于 10B 的顶尖代码生成模型。',
displayName: 'CodeGeeX4 All 9B',
enabled: true,
id: 'codegeex4-all-9b',
tokens: 40_000,
},
],
checkModel: 'Qwen2-7B-Instruct',
description:
'Gitee AI 的 Serverless API 为 AI 开发者提供开箱即用的大模型推理 API 服务。',
disableBrowserRequest: true,
id: 'gitee',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
id: 'gitee',
id: 'giteeai',

modelList: { showModelFetcher: true },
modelsUrl: 'https://ai.gitee.com/docs/openapi/v1#tag/serverless/POST/chat/completions',
name: 'Gitee AI',
url: 'https://ai.gitee.com',
};

export default Gitee;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export default Gitee;
export default GiteeAI;

4 changes: 4 additions & 0 deletions src/config/modelProviders/index.ts
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ import BedrockProvider from './bedrock';
import CloudflareProvider from './cloudflare';
import DeepSeekProvider from './deepseek';
import FireworksAIProvider from './fireworksai';
import GiteeProvider from './gitee';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
import GiteeProvider from './gitee';
import GiteeAIProvider from './giteeai';

import GithubProvider from './github';
import GoogleProvider from './google';
import GroqProvider from './groq';
@@ -64,6 +65,7 @@ export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
CloudflareProvider.chatModels,
Ai360Provider.chatModels,
SiliconCloudProvider.chatModels,
GiteeProvider.chatModels,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
GiteeProvider.chatModels,
GiteeAIProvider.chatModels,

UpstageProvider.chatModels,
SparkProvider.chatModels,
Ai21Provider.chatModels,
@@ -109,6 +111,7 @@ export const DEFAULT_MODEL_PROVIDER_LIST = [
TaichuProvider,
InternLMProvider,
SiliconCloudProvider,
GiteeProvider,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
GiteeProvider,
GiteeAIProvider,

];

export const filterEnabledModels = (provider: ModelProviderCard) => {
@@ -129,6 +132,7 @@ export { default as BedrockProviderCard } from './bedrock';
export { default as CloudflareProviderCard } from './cloudflare';
export { default as DeepSeekProviderCard } from './deepseek';
export { default as FireworksAIProviderCard } from './fireworksai';
export { default as GiteeProviderCard } from './gitee';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export { default as GiteeProviderCard } from './gitee';
export { default as GiteeAIProviderCard } from './giteeai';

export { default as GithubProviderCard } from './github';
export { default as GoogleProviderCard } from './google';
export { default as GroqProviderCard } from './groq';
7 changes: 7 additions & 0 deletions src/libs/agent-runtime/AgentRuntime.ts
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ import { LobeBedrockAI, LobeBedrockAIParams } from './bedrock';
import { LobeCloudflareAI, LobeCloudflareParams } from './cloudflare';
import { LobeDeepSeekAI } from './deepseek';
import { LobeFireworksAI } from './fireworksai';
import { LobeGiteeAI } from './gitee';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
import { LobeGiteeAI } from './gitee';
import { LobeGiteeAI } from './giteeai';

import { LobeGithubAI } from './github';
import { LobeGoogleAI } from './google';
import { LobeGroq } from './groq';
@@ -137,6 +138,7 @@ class AgentRuntime {
cloudflare: Partial<LobeCloudflareParams>;
deepseek: Partial<ClientOptions>;
fireworksai: Partial<ClientOptions>;
gitee: Partial<ClientOptions>;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
gitee: Partial<ClientOptions>;
giteeai: Partial<ClientOptions>;

github: Partial<ClientOptions>;
google: { apiKey?: string; baseURL?: string };
groq: Partial<ClientOptions>;
@@ -303,6 +305,11 @@ class AgentRuntime {
break;
}

case ModelProvider.Gitee: {
runtimeModel = new LobeGiteeAI(params.gitee);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
runtimeModel = new LobeGiteeAI(params.gitee);
runtimeModel = new LobeGiteeAI(params.giteeai);

break;
}

case ModelProvider.Upstage: {
runtimeModel = new LobeUpstageAI(params.upstage);
break;
Loading