diff --git a/client/public/docs/chatProblem.md b/client/public/docs/chatProblem.md
index 6a14c5d25..34a98accb 100644
--- a/client/public/docs/chatProblem.md
+++ b/client/public/docs/chatProblem.md
@@ -15,7 +15,8 @@
| 计费项 | 价格: 元/ 1K tokens(包含上下文)|
| --- | --- |
| 知识库 - 索引 | 0.001 |
-| chatgpt - 对话 | 0.025 |
+| chatgpt - 对话 | 0.022 |
+| chatgpt16K - 对话 | 0.025 |
| gpt4 - 对话 | 0.5 |
| 文件拆分 | 0.025 |
diff --git a/client/public/docs/intro.md b/client/public/docs/intro.md
index 49bb21015..0eb929950 100644
--- a/client/public/docs/intro.md
+++ b/client/public/docs/intro.md
@@ -19,7 +19,8 @@ FastGpt 项目完全开源,可随意私有化部署,去除平台风险忧虑
| 计费项 | 价格: 元/ 1K tokens(包含上下文)|
| --- | --- |
| 知识库 - 索引 | 0.001 |
-| chatgpt - 对话 | 0.025 |
+| chatgpt - 对话 | 0.022 |
+| chatgpt16K - 对话 | 0.025 |
| gpt4 - 对话 | 0.5 |
| 文件拆分 | 0.025 |
diff --git a/client/src/constants/model.ts b/client/src/constants/model.ts
index 073190bd2..95efdf870 100644
--- a/client/src/constants/model.ts
+++ b/client/src/constants/model.ts
@@ -7,7 +7,8 @@ export const embeddingPrice = 0.1;
export type EmbeddingModelType = 'text-embedding-ada-002';
export enum OpenAiChatEnum {
- 'GPT35' = 'gpt-3.5-turbo-16k',
+ 'GPT35' = 'gpt-3.5-turbo',
+ 'GPT3516k' = 'gpt-3.5-turbo-16k',
'GPT4' = 'gpt-4',
'GPT432k' = 'gpt-4-32k'
}
@@ -29,7 +30,15 @@ export type ChatModelItemType = {
export const ChatModelMap = {
[OpenAiChatEnum.GPT35]: {
chatModel: OpenAiChatEnum.GPT35,
- name: 'ChatGpt',
+ name: 'Gpt35-4k',
+ contextMaxToken: 4096,
+ systemMaxToken: 2400,
+ maxTemperature: 1.2,
+ price: 2.2
+ },
+ [OpenAiChatEnum.GPT3516k]: {
+ chatModel: OpenAiChatEnum.GPT3516k,
+ name: 'Gpt35-16k',
contextMaxToken: 16000,
systemMaxToken: 8000,
maxTemperature: 1.2,
diff --git a/client/src/pages/_app.tsx b/client/src/pages/_app.tsx
index 6968709fa..04d5c31a4 100644
--- a/client/src/pages/_app.tsx
+++ b/client/src/pages/_app.tsx
@@ -49,14 +49,20 @@ export default function App({ Component, pageProps }: AppProps) {
/>
-
-
-
+
+
+
{googleVerKey && (
-
+ <>
+
+
+ >
)}
diff --git a/client/src/pages/api/openapi/kb/pushData.ts b/client/src/pages/api/openapi/kb/pushData.ts
index 59a7a1c62..7ca3b8e4f 100644
--- a/client/src/pages/api/openapi/kb/pushData.ts
+++ b/client/src/pages/api/openapi/kb/pushData.ts
@@ -78,7 +78,7 @@ export async function pushDataToKb({
if (mode === TrainingModeEnum.qa) {
// count token
- const token = modelToolMap[OpenAiChatEnum.GPT35].countTokens({
+ const token = modelToolMap[OpenAiChatEnum.GPT3516k].countTokens({
messages: [{ obj: 'System', value: item.q }]
});
if (token > modeMaxToken[TrainingModeEnum.qa]) {
diff --git a/client/src/pages/api/system/getModels.ts b/client/src/pages/api/system/getModels.ts
index 843d5c512..58d331e26 100644
--- a/client/src/pages/api/system/getModels.ts
+++ b/client/src/pages/api/system/getModels.ts
@@ -8,6 +8,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
const chatModelList: ChatModelItemType[] = [];
if (global.systemEnv.openAIKeys) {
+ chatModelList.push(ChatModelMap[OpenAiChatEnum.GPT3516k]);
chatModelList.push(ChatModelMap[OpenAiChatEnum.GPT35]);
}
if (global.systemEnv.gpt4Key) {
diff --git a/client/src/pages/kb/components/SelectFileModal.tsx b/client/src/pages/kb/components/SelectFileModal.tsx
index 925b218f6..f1b7d636e 100644
--- a/client/src/pages/kb/components/SelectFileModal.tsx
+++ b/client/src/pages/kb/components/SelectFileModal.tsx
@@ -31,12 +31,12 @@ const modeMap = {
[TrainingModeEnum.qa]: {
maxLen: 8000,
slideLen: 3000,
- price: ChatModelMap[OpenAiChatEnum.GPT35].price,
+ price: ChatModelMap[OpenAiChatEnum.GPT3516k].price,
isPrompt: true
},
[TrainingModeEnum.index]: {
- maxLen: 1400,
- slideLen: 700,
+ maxLen: 1000,
+ slideLen: 500,
price: embeddingPrice,
isPrompt: false
}
diff --git a/client/src/pages/number/components/PayModal.tsx b/client/src/pages/number/components/PayModal.tsx
index 67cae9f4e..6b7ba0b33 100644
--- a/client/src/pages/number/components/PayModal.tsx
+++ b/client/src/pages/number/components/PayModal.tsx
@@ -114,7 +114,8 @@ const PayModal = ({ onClose }: { onClose: () => void }) => {
| 计费项 | 价格: 元/ 1K tokens(包含上下文)|
| --- | --- |
| 知识库 - 索引 | 0.001 |
-| chatgpt - 对话 | 0.025 |
+| chatgpt - 对话 | 0.022 |
+| chatgpt16K - 对话 | 0.025 |
| gpt4 - 对话 | 0.5 |
| 文件拆分 | 0.025 |`}
/>
diff --git a/client/src/service/events/generateQA.ts b/client/src/service/events/generateQA.ts
index f603a6bcd..2c7fcc9ee 100644
--- a/client/src/service/events/generateQA.ts
+++ b/client/src/service/events/generateQA.ts
@@ -87,7 +87,7 @@ export async function generateQA(): Promise {
// 请求 chatgpt 获取回答
const response = await Promise.all(
[data.q].map((text) =>
- modelServiceToolMap[OpenAiChatEnum.GPT35]
+ modelServiceToolMap[OpenAiChatEnum.GPT3516k]
.chatCompletion({
apiKey: systemAuthKey,
temperature: 0.8,
diff --git a/client/src/service/events/pushBill.ts b/client/src/service/events/pushBill.ts
index 52f4171d1..110a9b10b 100644
--- a/client/src/service/events/pushBill.ts
+++ b/client/src/service/events/pushBill.ts
@@ -104,7 +104,7 @@ export const pushSplitDataBill = async ({
await connectToDatabase();
// 获取模型单价格, 都是用 gpt35 拆分
- const unitPrice = ChatModelMap[OpenAiChatEnum.GPT35].price || 3;
+ const unitPrice = ChatModelMap[OpenAiChatEnum.GPT3516k].price || 3;
// 计算价格
const price = unitPrice * totalTokens;
@@ -112,7 +112,7 @@ export const pushSplitDataBill = async ({
const res = await Bill.create({
userId,
type,
- modelName: OpenAiChatEnum.GPT35,
+ modelName: OpenAiChatEnum.GPT3516k,
textLen,
tokenLen: totalTokens,
price
diff --git a/client/src/service/models/model.ts b/client/src/service/models/model.ts
index ba96eb9d2..b4c86ce0b 100644
--- a/client/src/service/models/model.ts
+++ b/client/src/service/models/model.ts
@@ -57,7 +57,7 @@ const ModelSchema = new Schema({
// 聊天时使用的模型
type: String,
enum: Object.keys(ChatModelMap),
- default: OpenAiChatEnum.GPT35
+ default: OpenAiChatEnum.GPT3516k
}
},
share: {
diff --git a/client/src/service/utils/auth.ts b/client/src/service/utils/auth.ts
index 2e534f9de..98787c625 100644
--- a/client/src/service/utils/auth.ts
+++ b/client/src/service/utils/auth.ts
@@ -162,6 +162,10 @@ export const getApiKey = async ({
userOpenAiKey: user.openaiKey || '',
systemAuthKey: getSystemOpenAiKey(type) as string
},
+ [OpenAiChatEnum.GPT3516k]: {
+ userOpenAiKey: user.openaiKey || '',
+ systemAuthKey: getSystemOpenAiKey(type) as string
+ },
[OpenAiChatEnum.GPT4]: {
userOpenAiKey: user.openaiKey || '',
systemAuthKey: getGpt4Key() as string
diff --git a/client/src/service/utils/chat/index.ts b/client/src/service/utils/chat/index.ts
index 51219572d..413cd46f6 100644
--- a/client/src/service/utils/chat/index.ts
+++ b/client/src/service/utils/chat/index.ts
@@ -48,6 +48,15 @@ export const modelServiceToolMap: Record<
...data
})
},
+ [OpenAiChatEnum.GPT3516k]: {
+ chatCompletion: (data: ChatCompletionType) =>
+ chatResponse({ model: OpenAiChatEnum.GPT3516k, ...data }),
+ streamResponse: (data: StreamResponseType) =>
+ openAiStreamResponse({
+ model: OpenAiChatEnum.GPT3516k,
+ ...data
+ })
+ },
[OpenAiChatEnum.GPT4]: {
chatCompletion: (data: ChatCompletionType) =>
chatResponse({ model: OpenAiChatEnum.GPT4, ...data }),
diff --git a/client/src/store/chat.ts b/client/src/store/chat.ts
index 3536bc722..e6aabb164 100644
--- a/client/src/store/chat.ts
+++ b/client/src/store/chat.ts
@@ -53,7 +53,7 @@ const defaultChatData = {
intro: '',
canUse: false
},
- chatModel: OpenAiChatEnum.GPT35,
+ chatModel: OpenAiChatEnum.GPT3516k,
history: []
};
const defaultShareChatData: ShareChatType = {
@@ -64,7 +64,7 @@ const defaultShareChatData: ShareChatType = {
avatar: '/icon/logo.png',
intro: ''
},
- chatModel: OpenAiChatEnum.GPT35,
+ chatModel: OpenAiChatEnum.GPT3516k,
history: []
};
diff --git a/client/src/utils/plugin/index.ts b/client/src/utils/plugin/index.ts
index a714e2005..7eb59b650 100644
--- a/client/src/utils/plugin/index.ts
+++ b/client/src/utils/plugin/index.ts
@@ -20,6 +20,11 @@ export const modelToolMap: Record<
sliceText: (data) => openAiSliceTextByToken({ model: OpenAiChatEnum.GPT35, ...data }),
tokenSlice: (data) => gpt_chatItemTokenSlice({ model: OpenAiChatEnum.GPT35, ...data })
},
+ [OpenAiChatEnum.GPT3516k]: {
+ countTokens: ({ messages }) => countOpenAIToken({ model: OpenAiChatEnum.GPT3516k, messages }),
+ sliceText: (data) => openAiSliceTextByToken({ model: OpenAiChatEnum.GPT3516k, ...data }),
+ tokenSlice: (data) => gpt_chatItemTokenSlice({ model: OpenAiChatEnum.GPT3516k, ...data })
+ },
[OpenAiChatEnum.GPT4]: {
countTokens: ({ messages }) => countOpenAIToken({ model: OpenAiChatEnum.GPT4, messages }),
sliceText: (data) => openAiSliceTextByToken({ model: OpenAiChatEnum.GPT4, ...data }),
diff --git a/client/src/utils/plugin/openai.ts b/client/src/utils/plugin/openai.ts
index 7ebfa46df..e19151d6c 100644
--- a/client/src/utils/plugin/openai.ts
+++ b/client/src/utils/plugin/openai.ts
@@ -16,6 +16,11 @@ export const getOpenAiEncMap = () => {
'<|im_end|>': 100265,
'<|im_sep|>': 100266
}),
+ [OpenAiChatEnum.GPT3516k]: encoding_for_model('gpt-3.5-turbo', {
+ '<|im_start|>': 100264,
+ '<|im_end|>': 100265,
+ '<|im_sep|>': 100266
+ }),
[OpenAiChatEnum.GPT4]: encoding_for_model('gpt-4', {
'<|im_start|>': 100264,
'<|im_end|>': 100265,
@@ -36,6 +41,11 @@ export const getOpenAiEncMap = () => {
'<|im_end|>': 100265,
'<|im_sep|>': 100266
}),
+ [OpenAiChatEnum.GPT3516k]: encoding_for_model('gpt-3.5-turbo', {
+ '<|im_start|>': 100264,
+ '<|im_end|>': 100265,
+ '<|im_sep|>': 100266
+ }),
[OpenAiChatEnum.GPT4]: encoding_for_model('gpt-4', {
'<|im_start|>': 100264,
'<|im_end|>': 100265,
@@ -55,6 +65,11 @@ export const getOpenAiEncMap = () => {
'<|im_end|>': 100265,
'<|im_sep|>': 100266
}),
+ [OpenAiChatEnum.GPT3516k]: encoding_for_model('gpt-3.5-turbo', {
+ '<|im_start|>': 100264,
+ '<|im_end|>': 100265,
+ '<|im_sep|>': 100266
+ }),
[OpenAiChatEnum.GPT4]: encoding_for_model('gpt-4', {
'<|im_start|>': 100264,
'<|im_end|>': 100265,