74 lines
4.2 KiB
MySQL
74 lines
4.2 KiB
MySQL
|
|
-- Таблица для хранения настроек пользователей
|
|||
|
|
CREATE TABLE IF NOT EXISTS user_settings (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
user_id VARCHAR(100) NOT NULL,
|
|||
|
|
setting_key VARCHAR(100) NOT NULL,
|
|||
|
|
setting_value TEXT NOT NULL,
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
UNIQUE(user_id, setting_key)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- Индексы для быстрого поиска
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_user_settings_user_id ON user_settings(user_id);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_user_settings_key ON user_settings(setting_key);
|
|||
|
|
|
|||
|
|
-- Таблица для хранения доступных моделей от провайдеров
|
|||
|
|
CREATE TABLE IF NOT EXISTS llm_models (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
provider VARCHAR(50) NOT NULL,
|
|||
|
|
model_id VARCHAR(100) NOT NULL,
|
|||
|
|
model_name VARCHAR(200) NOT NULL,
|
|||
|
|
description TEXT,
|
|||
|
|
context_length INTEGER,
|
|||
|
|
pricing_input DECIMAL(10,4),
|
|||
|
|
pricing_output DECIMAL(10,4),
|
|||
|
|
is_active BOOLEAN DEFAULT true,
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
UNIQUE(provider, model_id)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- Индексы
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_llm_models_provider ON llm_models(provider);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_llm_models_active ON llm_models(is_active);
|
|||
|
|
|
|||
|
|
-- Вставляем базовые модели OpenAI
|
|||
|
|
INSERT INTO llm_models (provider, model_id, model_name, description, context_length, pricing_input, pricing_output) VALUES
|
|||
|
|
('openai', 'gpt-4o-mini', 'GPT-4o Mini', 'Быстрая и дешёвая модель для чата', 128000, 0.15, 0.60),
|
|||
|
|
('openai', 'gpt-4o', 'GPT-4o', 'Самая умная модель OpenAI', 128000, 5.00, 15.00),
|
|||
|
|
('openai', 'gpt-4-turbo', 'GPT-4 Turbo', 'Мощная модель для сложных задач', 128000, 10.00, 30.00),
|
|||
|
|
('openai', 'gpt-3.5-turbo', 'GPT-3.5 Turbo', 'Быстрая модель для простых задач', 16385, 0.50, 1.50),
|
|||
|
|
('openai', 'gpt-4', 'GPT-4', 'Классическая GPT-4', 8192, 30.00, 60.00),
|
|||
|
|
('openai', 'o1-preview', 'O1 Preview', 'Модель рассуждений', 128000, 15.00, 60.00),
|
|||
|
|
('openai', 'o1-mini', 'O1 Mini', 'Компактная модель рассуждений', 128000, 3.00, 12.00),
|
|||
|
|
|
|||
|
|
-- Модели OpenRouter
|
|||
|
|
('openrouter', 'anthropic/claude-3-haiku', 'Claude 3 Haiku', 'Быстрая модель Anthropic', 200000, 0.25, 1.25),
|
|||
|
|
('openrouter', 'anthropic/claude-3-sonnet', 'Claude 3 Sonnet', 'Сбалансированная модель Anthropic', 200000, 3.00, 15.00),
|
|||
|
|
('openrouter', 'anthropic/claude-3-opus', 'Claude 3 Opus', 'Самая мощная модель Anthropic', 200000, 15.00, 75.00),
|
|||
|
|
('openrouter', 'google/gemini-pro', 'Gemini Pro', 'Модель Google', 30720, 0.50, 1.50),
|
|||
|
|
('openrouter', 'google/gemini-pro-vision', 'Gemini Pro Vision', 'Модель Google с видением', 30720, 0.50, 1.50),
|
|||
|
|
('openrouter', 'meta-llama/llama-3.1-8b-instruct', 'Llama 3.1 8B', 'Модель Meta Llama', 131072, 0.20, 0.20),
|
|||
|
|
('openrouter', 'meta-llama/llama-3.1-70b-instruct', 'Llama 3.1 70B', 'Большая модель Meta Llama', 131072, 0.90, 0.90),
|
|||
|
|
('openrouter', 'mistralai/mistral-7b-instruct', 'Mistral 7B', 'Модель Mistral', 32768, 0.20, 0.20),
|
|||
|
|
('openrouter', 'mistralai/mixtral-8x7b-instruct', 'Mixtral 8x7B', 'Смешанная модель Mistral', 32768, 0.27, 0.27),
|
|||
|
|
|
|||
|
|
-- Модели Ollama (локальные)
|
|||
|
|
('ollama', 'llama3.1', 'Llama 3.1', 'Локальная модель Llama', 131072, 0.00, 0.00),
|
|||
|
|
('ollama', 'codellama', 'Code Llama', 'Модель для программирования', 131072, 0.00, 0.00),
|
|||
|
|
('ollama', 'mistral', 'Mistral', 'Локальная модель Mistral', 32768, 0.00, 0.00),
|
|||
|
|
('ollama', 'gemma', 'Gemma', 'Модель Google Gemma', 8192, 0.00, 0.00),
|
|||
|
|
('ollama', 'phi3', 'Phi-3', 'Модель Microsoft Phi-3', 128000, 0.00, 0.00)
|
|||
|
|
|
|||
|
|
ON CONFLICT (provider, model_id) DO UPDATE SET
|
|||
|
|
model_name = EXCLUDED.model_name,
|
|||
|
|
description = EXCLUDED.description,
|
|||
|
|
context_length = EXCLUDED.context_length,
|
|||
|
|
pricing_input = EXCLUDED.pricing_input,
|
|||
|
|
pricing_output = EXCLUDED.pricing_output,
|
|||
|
|
updated_at = CURRENT_TIMESTAMP;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|