Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/controllers/modelConfig.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import { validateModel } from "../services/utils/modelValidation.utils.js";
import ConfigurationServices from "../db_services/configuration.service.js";

async function saveUserModelConfiguration(req, res, next) {
const org_id = req.profile.org.id;
const { model_name, service, display_name, status, configuration, outputConfig, validationConfig } = req.body;
const { model_name, service, status, configuration, outputConfig, validationConfig } = req.body;

// check models validity and support
const isModelSupported = await validateModel(service, model_name);
Expand All @@ -20,10 +19,8 @@ async function saveUserModelConfiguration(req, res, next) {
}

const result = await modelConfigDbService.saveModelConfig({
org_id,
service,
model_name,
display_name,
status,
configuration,
outputConfig,
Expand Down
166 changes: 20 additions & 146 deletions src/mongoModel/ModelConfig.model.js
Original file line number Diff line number Diff line change
@@ -1,157 +1,31 @@
import mongoose from "mongoose";

const ConfigurationSchema = new mongoose.Schema({
service: {
type: String,
required: true
},
model_name: {
type: String,
required: true
},
configuration: {
model: {
type: { field: { type: String }, level: { type: Number }, default: { type: String } },
default: undefined,
_id: false
},
creativity_level: {
type: {
field: { type: String },
min: { type: Number },
max: { type: Number },
step: { type: Number },
level: { type: Number },
default: { type: Number }
},
default: undefined,
_id: false
},
max_tokens: {
type: {
field: { type: String },
min: { type: Number },
max: { type: Number },
step: { type: Number },
level: { type: Number },
default: { type: Number }
},
default: undefined,
_id: false
},
probability_cutoff: {
type: {
field: { type: String },
min: { type: Number },
max: { type: Number },
step: { type: Number },
level: { type: Number },
default: { type: Number }
},
default: undefined,
_id: false
},
log_probability: {
type: { field: { type: String }, level: { type: Number }, typeOf: { type: String }, default: { type: Boolean } },
default: undefined,
_id: false
const ConfigurationSchema = new mongoose.Schema(
{
service: {
type: String,
required: true
},
repetition_penalty: {
type: {
field: { type: String },
min: { type: Number },
max: { type: Number },
step: { type: Number },
level: { type: Number },
default: { type: Number }
},
default: undefined,
_id: false
model_name: {
type: String,
required: true
},
novelty_penalty: {
type: {
field: { type: String },
min: { type: Number },
max: { type: Number },
step: { type: Number },
level: { type: Number },
default: { type: Number }
},
default: undefined,
_id: false
configuration: {
type: mongoose.Schema.Types.Mixed,
required: true
},
response_count: {
type: { field: { type: String }, typeOf: { type: String }, level: { type: Number }, default: { type: Number } },
default: undefined,
_id: false
outputConfig: {
type: mongoose.Schema.Types.Mixed,
required: true
},
stop: {
type: { field: { type: String }, level: { type: Number }, default: { type: String } },
default: undefined,
_id: false
validationConfig: {
type: mongoose.Schema.Types.Mixed,
required: true
},
tools: {
type: { field: { type: String }, level: { type: Number }, typeOf: { type: String }, default: { type: Array } },
default: undefined,
_id: false
},
tool_choice: {
type: {
field: { type: String },
options: { type: Array },
level: { type: Number },
typeOf: { type: String },
default: { type: String }
},
default: undefined,
_id: false
},
response_type: {
type: { field: { type: String }, options: { type: Array }, level: { type: Number }, default: { type: Object } },
default: undefined,
_id: false
},
parallel_tool_calls: {
type: { field: { type: String }, level: { type: Number }, typeOf: { type: String }, default: { type: Boolean } },
default: undefined,
_id: false
}
},
outputConfig: {
usage: [
{
prompt_tokens: { type: String },
completion_tokens: { type: String },
total_tokens: { type: String },
cached_tokens: { type: String },
total_cost: {
input_cost: { type: Number },
output_cost: { type: Number },
cached_cost: { type: Number }
}
}
],
message: { type: String },
tools: { type: String },
assistant: { type: String }
},
validationConfig: {
system_prompt: { type: Boolean },
type: { type: String },
vision: { type: Boolean },
tools: { type: Boolean },
specification: {
input_cost: { type: Number },
output_cost: { type: Number },
description: { type: String },
knowledge_cutoff: { type: String },
usecase: [{ type: String }]
}
status: { type: Number, default: 1 }
},
status: { type: Number, default: 1 },
display_name: { type: String, required: false },
org_id: { type: String, required: false }
});
{ strict: true }
);

ConfigurationSchema.index({ model_name: 1, service: 1 }, { unique: true });
const ModelsConfigModel = mongoose.model("modelConfiguration", ConfigurationSchema);
Expand Down
3 changes: 1 addition & 2 deletions src/validation/joi_validation/modelConfig.validation.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ const saveUserModelConfigurationBodySchema = Joi.object({
.pattern(/^[^\s]+$/)
.message("model_name must not contain spaces")
.required(),
display_name: Joi.string().required(),
status: Joi.number().default(1),
status: Joi.number().valid(0, 1).required(),
configuration: Joi.object().unknown(true).required(),
outputConfig: Joi.object().unknown(true).required(),
validationConfig: Joi.object().unknown(true).required()
Expand Down