DDL schemas for Trading Platform: - User management - Authentication - Payments - Education - ML predictions - Trading data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
99 lines
3.1 KiB
SQL
99 lines
3.1 KiB
SQL
-- =====================================================
|
|
-- LLM SCHEMA - MESSAGES TABLE
|
|
-- =====================================================
|
|
-- Description: Individual messages in conversations
|
|
-- Schema: llm
|
|
-- Author: Database Agent
|
|
-- Date: 2025-12-06
|
|
-- =====================================================
|
|
|
|
CREATE TABLE llm.messages (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
-- Conversación
|
|
conversation_id UUID NOT NULL REFERENCES llm.conversations(id) ON DELETE CASCADE,
|
|
|
|
-- Rol y contenido
|
|
role llm.message_role NOT NULL,
|
|
content TEXT NOT NULL,
|
|
|
|
-- Metadata de LLM
|
|
model_name VARCHAR(100), -- claude-opus-4-5, gpt-4, etc.
|
|
prompt_tokens INTEGER,
|
|
completion_tokens INTEGER,
|
|
total_tokens INTEGER,
|
|
|
|
-- Contexto utilizado
|
|
context_used JSONB, -- RAG context, market data, user profile, etc.
|
|
|
|
-- Tools/Functions llamadas
|
|
tool_calls JSONB, -- Function calls realizadas
|
|
tool_results JSONB, -- Resultados de tool calls
|
|
|
|
-- Metadata de procesamiento
|
|
response_time_ms INTEGER,
|
|
temperature DECIMAL(3,2),
|
|
|
|
-- Feedback del usuario
|
|
user_rating INTEGER CHECK (user_rating >= 1 AND user_rating <= 5),
|
|
user_feedback TEXT,
|
|
|
|
-- Referencias
|
|
references_symbols VARCHAR(20)[] DEFAULT '{}',
|
|
references_concepts TEXT[] DEFAULT '{}',
|
|
|
|
-- Metadata
|
|
metadata JSONB,
|
|
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Índices
|
|
CREATE INDEX idx_messages_conversation ON llm.messages(conversation_id);
|
|
CREATE INDEX idx_messages_role ON llm.messages(role);
|
|
CREATE INDEX idx_messages_created ON llm.messages(created_at DESC);
|
|
CREATE INDEX idx_messages_conversation_created ON llm.messages(conversation_id, created_at ASC);
|
|
CREATE INDEX idx_messages_rated ON llm.messages(user_rating) WHERE user_rating IS NOT NULL;
|
|
|
|
-- Comentarios
|
|
COMMENT ON TABLE llm.messages IS 'Individual messages in LLM conversations';
|
|
COMMENT ON COLUMN llm.messages.role IS 'Message sender: user, assistant, system, or tool';
|
|
COMMENT ON COLUMN llm.messages.content IS 'Message text content';
|
|
COMMENT ON COLUMN llm.messages.model_name IS 'LLM model used to generate response';
|
|
COMMENT ON COLUMN llm.messages.context_used IS 'Context provided to LLM (RAG docs, market data, user profile)';
|
|
COMMENT ON COLUMN llm.messages.tool_calls IS 'Functions/tools called by LLM during response generation';
|
|
COMMENT ON COLUMN llm.messages.user_rating IS 'User satisfaction rating (1-5 stars)';
|
|
|
|
-- Ejemplo de context_used JSONB:
|
|
COMMENT ON COLUMN llm.messages.context_used IS
|
|
'Example: {
|
|
"market_data": {
|
|
"symbol": "BTCUSDT",
|
|
"price": 45234.12,
|
|
"change_24h": 0.0234
|
|
},
|
|
"user_profile": {
|
|
"risk_profile": "moderate",
|
|
"preferred_symbols": ["BTCUSDT", "ETHUSDT"]
|
|
},
|
|
"rag_documents": [
|
|
{"doc_id": "123", "relevance": 0.89, "snippet": "..."},
|
|
{"doc_id": "456", "relevance": 0.76, "snippet": "..."}
|
|
]
|
|
}';
|
|
|
|
-- Ejemplo de tool_calls JSONB:
|
|
COMMENT ON COLUMN llm.messages.tool_calls IS
|
|
'Example: [
|
|
{
|
|
"tool": "get_market_data",
|
|
"params": {"symbol": "BTCUSDT", "timeframe": "1h"},
|
|
"result": {...}
|
|
},
|
|
{
|
|
"tool": "calculate_indicator",
|
|
"params": {"indicator": "rsi", "period": 14},
|
|
"result": {"rsi": 65.42}
|
|
}
|
|
]';
|