doc gpt V0.2

This commit is contained in:
archer
2023-02-19 14:35:25 +08:00
parent cc5cf99e7a
commit 0ecf576e4e
124 changed files with 11780 additions and 573 deletions

View File

@@ -0,0 +1,24 @@
import { Schema, model, models } from 'mongoose';
const AuthCodeSchema = new Schema({
email: {
type: String,
required: true
},
code: {
type: String,
required: true,
length: 6
},
type: {
type: String,
enum: ['register', 'findPassword'],
required: true
},
expiredTime: {
type: Number,
default: () => Date.now() + 5 * 60 * 1000
}
});
export const AuthCode = models['auth_code'] || model('auth_code', AuthCodeSchema);

View File

@@ -0,0 +1,26 @@
import { Schema, model, models } from 'mongoose';
const ChatSchema = new Schema({
userId: {
type: Schema.Types.ObjectId,
ref: 'user',
required: true
},
modelId: {
type: Schema.Types.ObjectId,
ref: 'model',
required: true
},
expiredTime: {
// 过期时间
type: Number,
required: true
},
loadAmount: {
// 剩余加载次数
type: Number,
required: true
}
});
export const Chat = models['chat'] || model('chat', ChatSchema);

View File

@@ -0,0 +1,28 @@
import { Schema, model, models } from 'mongoose';
const ChatWindowSchema = new Schema({
chatId: {
type: Schema.Types.ObjectId,
ref: 'chat',
required: true
},
updateTime: {
type: Number,
required: true
},
content: [
{
obj: {
type: String,
required: true,
enum: ['Human', 'AI', 'SYSTEM']
},
value: {
type: String,
required: true
}
}
]
});
export const ChatWindow = models['chatWindow'] || model('chatWindow', ChatWindowSchema);

View File

@@ -0,0 +1,86 @@
import { Schema, model, models } from 'mongoose';
const ModelSchema = new Schema({
name: {
type: String,
required: true
},
avatar: {
type: String,
default: '/imgs/modelAvatar.png'
},
systemPrompt: {
type: String,
default: ''
},
userId: {
type: Schema.Types.ObjectId,
ref: 'user',
required: true
},
status: {
type: String,
required: true,
enum: ['waiting', 'running', 'training', 'closed']
},
updateTime: {
type: Date,
default: () => new Date()
},
trainingTimes: {
type: Number,
default: 0
},
service: {
company: {
type: String,
required: true,
enum: ['openai']
},
trainId: {
// 训练时需要的 ID
type: String,
required: true
},
chatModel: {
// 聊天时使用的模型
type: String,
required: true
},
modelName: {
// 底层模型的名称
type: String,
required: true
}
},
security: {
type: {
domain: {
type: [String],
default: ['*']
},
contextMaxLen: {
type: Number,
default: 20
},
contentMaxLen: {
type: Number,
default: 4000
},
expiredTime: {
type: Number,
default: 1,
set: (val: number) => val * (60 * 60 * 1000)
},
maxLoadAmount: {
// 负数代表不限制
type: Number,
default: -1
}
},
default: {},
required: true
}
});
export const Model = models['model'] || model('model', ModelSchema);

View File

@@ -0,0 +1,28 @@
import { Schema, model, models } from 'mongoose';
const TrainingSChema = new Schema({
serviceName: {
// 模型厂商名
type: String,
required: true
},
tuneId: {
// 微调进程 ID
type: String,
required: true
},
modelId: {
// 关联模型的 ID
type: Schema.Types.ObjectId,
ref: 'model',
required: true
},
status: {
// 状态值
type: String,
required: true,
enum: ['pending', 'succeed', 'errored', 'canceled']
}
});
export const Training = models['training'] || model('training', TrainingSChema);

View File

@@ -0,0 +1,40 @@
import { Schema, model, models } from 'mongoose';
import { hashPassword } from '@/service/utils/tools';
const UserSchema = new Schema({
email: {
type: String,
required: true,
unique: true // 唯一
},
password: {
type: String,
required: true,
set: (val: string) => hashPassword(val),
get: (val: string) => hashPassword(val),
select: false
},
balance: {
type: Number,
default: 0
},
accounts: [
{
type: {
type: String,
required: true,
enum: ['openai'] // 定义允许的type
},
value: {
type: String,
required: true
}
}
],
createTime: {
type: Date,
default: () => new Date()
}
});
export const User = models['user'] || model('user', UserSchema);