36 lines
1.4 KiB
SQL
36 lines
1.4 KiB
SQL
-- LLM Configurations Table
|
|
CREATE TABLE IF NOT EXISTS llm_configs (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
provider VARCHAR(50) NOT NULL,
|
|
api_key_encrypted TEXT NOT NULL,
|
|
model VARCHAR(100),
|
|
temperature DECIMAL(3, 2) DEFAULT 0.7,
|
|
max_tokens INTEGER DEFAULT 2048,
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|
updated_at TIMESTAMP DEFAULT NOW(),
|
|
UNIQUE(user_id, provider)
|
|
);
|
|
|
|
CREATE INDEX idx_llm_configs_user ON llm_configs(user_id);
|
|
|
|
-- LLM Chat History Table
|
|
CREATE TABLE IF NOT EXISTS llm_chat_history (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
provider VARCHAR(50) NOT NULL,
|
|
role VARCHAR(20) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
tokens_used INTEGER,
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_llm_history_user_provider ON llm_chat_history(user_id, provider, created_at DESC);
|
|
|
|
-- Add comments
|
|
COMMENT ON TABLE llm_configs IS 'Stores encrypted API keys and configurations for LLM providers';
|
|
COMMENT ON TABLE llm_chat_history IS 'Stores chat message history for each provider';
|
|
COMMENT ON COLUMN llm_configs.api_key_encrypted IS 'AES-256-GCM encrypted API key';
|
|
COMMENT ON COLUMN llm_configs.temperature IS 'LLM temperature parameter (0.0 - 2.0)';
|
|
COMMENT ON COLUMN llm_configs.max_tokens IS 'Maximum tokens for LLM responses';
|