mirror of
https://github.com/pacnpal/markov-discord.git
synced 2025-12-20 03:01:04 -05:00
3.8 KiB
Executable File
3.8 KiB
Executable File
Technical Context
Last Updated: 2024-12-27
Core Technologies
Current Stack
- Node.js/TypeScript
- Discord.js for Discord API
- TypeORM for database management
- SQLite for data storage
- markov-strings-db for response generation
LLM Integration Stack
- OpenAI API for primary LLM capabilities
- sentence-transformers for embeddings
- Vector extensions for SQLite
- Redis (optional) for context caching
Integration Patterns
Database Schema Extensions
-- New tables for LLM integration
-- Store message embeddings
CREATE TABLE message_embeddings (
id TEXT PRIMARY KEY,
message_id TEXT NOT NULL,
embedding BLOB NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES messages(id)
);
-- Store conversation contexts
CREATE TABLE conversation_contexts (
id TEXT PRIMARY KEY,
channel_id TEXT NOT NULL,
context_window TEXT NOT NULL,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (channel_id) REFERENCES channels(id)
);
API Integration
interface LLMConfig {
provider: 'openai' | 'local';
model: string;
apiKey?: string;
maxTokens: number;
temperature: number;
contextWindow: number;
}
interface ResponseGenerator {
generateResponse(options: {
prompt: string;
context: Message[];
guildId: string;
channelId: string;
}): Promise<string>;
}
Message Processing Pipeline
interface MessageProcessor {
processMessage(message: Discord.Message): Promise<void>;
generateEmbedding(text: string): Promise<Float32Array>;
updateContext(channelId: string, message: Discord.Message): Promise<void>;
}
Key Libraries/Frameworks
Current Dependencies
- discord.js: ^14.x
- typeorm: ^0.x
- markov-strings-db: Custom fork
- sqlite3: ^5.x
New Dependencies
{
"dependencies": {
"@openai/api": "^4.x",
"onnxruntime-node": "^1.x",
"sentence-transformers": "^2.x",
"sqlite-vss": "^0.1.x",
"redis": "^4.x"
}
}
Infrastructure Choices
Deployment
- Continue with current deployment pattern
- Add environment variables for LLM configuration
- Optional Redis for high-traffic servers
Scaling Considerations
-
Message Processing
- Batch embedding generation
- Background processing queue
- Rate limiting for API calls
-
Response Generation
- Caching frequent responses
- Fallback to Markov when rate limited
- Load balancing between providers
-
Storage
- Regular embedding pruning
- Context window management
- Backup strategy for embeddings
Technical Constraints
API Limitations
-
OpenAI
- Rate limits
- Token quotas
- Cost considerations
-
Discord
- Message rate limits
- Response time requirements
- Attachment handling
Resource Usage
-
Memory
- Embedding model size
- Context window storage
- Cache management
-
Storage
- Embedding data size
- Context history retention
- Backup requirements
-
Processing
- Embedding generation load
- Response generation time
- Background task management
Development Environment
Setup Requirements
# Core dependencies
npm install
# LLM integration
npm install @openai/api onnxruntime-node sentence-transformers sqlite-vss
# Optional caching
npm install redis
Environment Variables
# LLM Configuration
OPENAI_API_KEY=sk-...
LLM_PROVIDER=openai
LLM_MODEL=gpt-3.5-turbo
LLM_MAX_TOKENS=150
LLM_TEMPERATURE=0.7
CONTEXT_WINDOW_SIZE=10
# Optional Redis
REDIS_URL=redis://localhost:6379
Testing Strategy
-
Unit Tests
- Message processing
- Embedding generation
- Context management
-
Integration Tests
- LLM API interaction
- Database operations
- Discord event handling
-
Performance Tests
- Response time benchmarks
- Memory usage monitoring
- Rate limit compliance