From e384893ae038bbda3f94cdf959675b53843d2695 Mon Sep 17 00:00:00 2001
From: archer <545436317@qq.com>
Date: Wed, 3 May 2023 15:50:31 +0800
Subject: [PATCH] feat: select chat model
---
src/constants/model.ts | 13 +++++++++++++
src/pages/model/detail/components/ModelEditForm.tsx | 12 +++++++++---
src/utils/user.ts | 2 +-
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/src/constants/model.ts b/src/constants/model.ts
index c89072b79..53055e020 100644
--- a/src/constants/model.ts
+++ b/src/constants/model.ts
@@ -11,20 +11,31 @@ export enum OpenAiChatEnum {
export type ChatModelType = `${OpenAiChatEnum}`;
+export type ChatModelItemType = {
+ chatModel: ChatModelType;
+ name: string;
+ contextMaxToken: number;
+ maxTemperature: number;
+ price: number;
+};
+
export const ChatModelMap = {
[OpenAiChatEnum.GPT35]: {
+ chatModel: OpenAiChatEnum.GPT35,
name: 'ChatGpt',
contextMaxToken: 4096,
maxTemperature: 1.5,
price: 3
},
[OpenAiChatEnum.GPT4]: {
+ chatModel: OpenAiChatEnum.GPT4,
name: 'Gpt4',
contextMaxToken: 8000,
maxTemperature: 1.5,
price: 30
},
[OpenAiChatEnum.GPT432k]: {
+ chatModel: OpenAiChatEnum.GPT432k,
name: 'Gpt4-32k',
contextMaxToken: 32000,
maxTemperature: 1.5,
@@ -32,6 +43,8 @@ export const ChatModelMap = {
}
};
+export const chatModelList: ChatModelItemType[] = [ChatModelMap[OpenAiChatEnum.GPT35]];
+
export enum ModelStatusEnum {
running = 'running',
training = 'training',
diff --git a/src/pages/model/detail/components/ModelEditForm.tsx b/src/pages/model/detail/components/ModelEditForm.tsx
index 72a397cd2..d694fa7e9 100644
--- a/src/pages/model/detail/components/ModelEditForm.tsx
+++ b/src/pages/model/detail/components/ModelEditForm.tsx
@@ -21,7 +21,7 @@ import {
import { QuestionOutlineIcon } from '@chakra-ui/icons';
import type { ModelSchema } from '@/types/mongoSchema';
import { UseFormReturn } from 'react-hook-form';
-import { ChatModelMap, ModelVectorSearchModeMap } from '@/constants/model';
+import { ChatModelMap, ModelVectorSearchModeMap, chatModelList } from '@/constants/model';
import { formatPrice } from '@/utils/user';
import { useConfirm } from '@/hooks/useConfirm';
import { useSelectFile } from '@/hooks/useSelectFile';
@@ -110,14 +110,20 @@ const ModelEditForm = ({
对话模型:
- {ChatModelMap[getValues('chat.chatModel')].name}
+
价格:
- {formatPrice(ChatModelMap[getValues('chat.chatModel')].price, 1000)}
+ {formatPrice(ChatModelMap[getValues('chat.chatModel')]?.price, 1000)}
元/1K tokens(包括上下文和回答)
diff --git a/src/utils/user.ts b/src/utils/user.ts
index 074cd60b7..5ed9eeb3b 100644
--- a/src/utils/user.ts
+++ b/src/utils/user.ts
@@ -14,6 +14,6 @@ export const clearToken = () => {
/**
* 把数据库读取到的price,转化成元
*/
-export const formatPrice = (val: number, multiple = 1) => {
+export const formatPrice = (val = 0, multiple = 1) => {
return Number(((val / PRICE_SCALE) * multiple).toFixed(10));
};