386 lines
10 KiB
Markdown
386 lines
10 KiB
Markdown
# AI Integration Guide
|
|
|
|
This guide covers the AI-powered task management features integrated into the Directus Task Management system.
|
|
|
|
## Overview
|
|
|
|
The AI integration provides natural language task creation, intelligent task breakdown, and context-aware recommendations using OpenAI GPT-4-turbo and LangChain.js.
|
|
|
|
## Features
|
|
|
|
- **Natural Language Task Creation**: Convert plain English descriptions into structured tasks
|
|
- **Intelligent Task Breakdown**: Automatically break complex tasks into manageable subtasks
|
|
- **Context-Aware Suggestions**: Get AI-powered task recommendations based on project state
|
|
- **Token Usage Tracking**: Monitor API usage and costs
|
|
- **Caching Layer**: Redis-based caching to minimize API calls
|
|
- **Rate Limiting**: Prevent API quota exhaustion
|
|
|
|
## API Endpoints
|
|
|
|
### Create Task from Natural Language
|
|
|
|
```http
|
|
POST /api/ai/create-task
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"prompt": "Implement user authentication with JWT tokens",
|
|
"projectId": "project-123",
|
|
"context": {
|
|
"projectDescription": "E-commerce platform",
|
|
"currentTasks": ["Database setup", "API structure"],
|
|
"completedTasks": ["Project initialization"],
|
|
"userRole": "developer"
|
|
}
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"title": "Implement User Authentication",
|
|
"description": "Add JWT-based authentication system to the application",
|
|
"priority": "high",
|
|
"complexity": "major",
|
|
"estimatedHours": 16,
|
|
"acceptanceCriteria": [
|
|
"Users can register with email/password",
|
|
"Users can login and receive JWT token",
|
|
"Protected routes require valid token",
|
|
"Token refresh mechanism works"
|
|
],
|
|
"tags": ["auth", "security", "jwt"],
|
|
"subtasks": [
|
|
{
|
|
"title": "Setup database schema",
|
|
"description": "Create user tables and indexes",
|
|
"estimatedHours": 2
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Break Down Task into Subtasks
|
|
|
|
```http
|
|
POST /api/ai/breakdown/:taskId
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"taskDescription": "Implement user authentication with JWT tokens",
|
|
"context": "Node.js Express application with PostgreSQL database"
|
|
}
|
|
```
|
|
|
|
### Get Task Suggestions
|
|
|
|
```http
|
|
GET /api/ai/suggestions/:projectId?projectDescription=E-commerce platform&completedTasks=Setup database,Create API¤tTasks=Build UI&goals=Launch MVP
|
|
```
|
|
|
|
### Update Task Context
|
|
|
|
```http
|
|
PUT /api/ai/update-context/:taskId
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"feedback": "Task needs more specific acceptance criteria for security requirements"
|
|
}
|
|
```
|
|
|
|
### Health Check
|
|
|
|
```http
|
|
GET /api/ai/health
|
|
```
|
|
|
|
### Usage Statistics
|
|
|
|
```http
|
|
GET /api/ai/usage
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
```env
|
|
# OpenAI Configuration
|
|
OPENAI_API_KEY=sk-...
|
|
OPENAI_MODEL=gpt-4-turbo
|
|
OPENAI_MAX_TOKENS=4096
|
|
OPENAI_TEMPERATURE=0.7
|
|
OPENAI_RETRY_ATTEMPTS=3
|
|
OPENAI_RETRY_DELAY_MS=1000
|
|
OPENAI_TIMEOUT=30000
|
|
|
|
# LangChain Configuration
|
|
LANGCHAIN_VERBOSE=false
|
|
LANGCHAIN_CACHE_ENABLED=true
|
|
LANGCHAIN_CACHE_TTL=3600
|
|
LANGCHAIN_MAX_CONCURRENCY=5
|
|
LANGCHAIN_MEMORY_BUFFER_SIZE=10
|
|
|
|
# Rate Limiting
|
|
AI_MAX_REQUESTS_PER_MINUTE=60
|
|
AI_MAX_TOKENS_PER_MINUTE=90000
|
|
AI_MAX_REQUESTS_PER_DAY=10000
|
|
|
|
# Monitoring
|
|
AI_TRACK_TOKEN_USAGE=true
|
|
AI_LOG_LEVEL=info
|
|
AI_METRICS_ENABLED=true
|
|
```
|
|
|
|
### Redis Configuration
|
|
|
|
Redis is used for caching AI responses and rate limiting:
|
|
|
|
```typescript
|
|
// Cache TTL values
|
|
- NLP Task Creation: 1 hour
|
|
- Task Breakdown: 2 hours
|
|
- Task Suggestions: 30 minutes
|
|
```
|
|
|
|
## Service Architecture
|
|
|
|
### OpenAI Service
|
|
|
|
- **File**: `src/services/ai/openai.service.ts`
|
|
- **Purpose**: Direct integration with OpenAI API
|
|
- **Features**:
|
|
- Exponential backoff retry logic
|
|
- Token counting and cost estimation
|
|
- Streaming support
|
|
- Error handling with retryable detection
|
|
|
|
### LangChain Service
|
|
|
|
- **File**: `src/services/ai/langchain.service.ts`
|
|
- **Purpose**: Chain-based AI operations for complex workflows
|
|
- **Features**:
|
|
- Multiple chain patterns (completion, conversation, task breakdown)
|
|
- Memory management for conversation context
|
|
- JSON schema validation for structured outputs
|
|
- Agent patterns for task processing
|
|
|
|
### AI Task Service
|
|
|
|
- **File**: `src/services/ai/ai-task.service.ts`
|
|
- **Purpose**: High-level AI task management operations
|
|
- **Features**:
|
|
- Natural language task creation
|
|
- Context management with caching
|
|
- Rate limiting integration
|
|
- Task suggestion algorithms
|
|
- Cache warming capabilities
|
|
|
|
## Error Handling
|
|
|
|
### Rate Limiting
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "Rate limit exceeded",
|
|
"message": "Too many requests. Please try again later."
|
|
}
|
|
```
|
|
|
|
### Validation Errors
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "Validation error",
|
|
"details": [
|
|
{
|
|
"path": ["prompt"],
|
|
"message": "String must contain at least 1 character(s)"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Service Unavailable
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "AI service temporarily unavailable",
|
|
"message": "OpenAI API is not responding. Please try again later."
|
|
}
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### Prompt Engineering
|
|
|
|
1. **Be Specific**: Provide clear, detailed task descriptions
|
|
2. **Include Context**: Add project context, current state, and goals
|
|
3. **Use Examples**: Reference similar completed tasks when possible
|
|
4. **Specify Constraints**: Include technology stack, deadlines, or resource limits
|
|
|
|
**Good Prompt Example:**
|
|
```text
|
|
Implement user authentication for our React/Node.js e-commerce platform.
|
|
Users should be able to register with email/password, login, and access
|
|
protected routes. Use JWT tokens with refresh mechanism. Follow security
|
|
best practices for password hashing and token storage.
|
|
```
|
|
|
|
**Poor Prompt Example:**
|
|
```text
|
|
Add login
|
|
```
|
|
|
|
### Performance Optimization
|
|
|
|
1. **Use Caching**: Cache common queries to reduce API calls
|
|
2. **Warm Cache**: Pre-populate cache during low-traffic periods
|
|
3. **Monitor Usage**: Track token consumption and costs
|
|
4. **Batch Operations**: Group related AI operations when possible
|
|
|
|
### Error Recovery
|
|
|
|
1. **Graceful Degradation**: Provide fallback behavior when AI services are unavailable
|
|
2. **Retry Logic**: Implement exponential backoff for transient failures
|
|
3. **User Feedback**: Allow users to provide feedback for continuous improvement
|
|
4. **Monitoring**: Set up alerts for service degradation
|
|
|
|
## Usage Examples
|
|
|
|
### Creating a Complex Feature
|
|
|
|
```javascript
|
|
// 1. Create main task from natural language
|
|
const mainTask = await fetch('/api/ai/create-task', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
prompt: 'Build a real-time chat system with message history, user presence, and file sharing',
|
|
projectId: 'chat-app',
|
|
context: {
|
|
projectDescription: 'Real-time collaboration platform',
|
|
currentTasks: ['User management', 'Basic UI'],
|
|
completedTasks: ['Project setup', 'Database design'],
|
|
userRole: 'full-stack developer'
|
|
}
|
|
})
|
|
});
|
|
|
|
// 2. Break down into subtasks
|
|
const breakdown = await fetch(`/api/ai/breakdown/${mainTask.data.id}`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
taskDescription: mainTask.data.description,
|
|
context: 'React frontend with Node.js/Socket.io backend'
|
|
})
|
|
});
|
|
|
|
// 3. Get additional suggestions
|
|
const suggestions = await fetch(
|
|
`/api/ai/suggestions/${projectId}?` + new URLSearchParams({
|
|
projectDescription: 'Real-time collaboration platform',
|
|
completedTasks: 'Project setup,Database design,User management',
|
|
currentTasks: 'Real-time chat system',
|
|
goals: 'Launch beta,Scale to 1000 users'
|
|
})
|
|
);
|
|
```
|
|
|
|
### Monitoring and Health Checks
|
|
|
|
```javascript
|
|
// Check AI service health
|
|
const health = await fetch('/api/ai/health');
|
|
console.log('AI Services Status:', health.data);
|
|
|
|
// Monitor usage and costs
|
|
const usage = await fetch('/api/ai/usage');
|
|
console.log('Token Usage:', usage.data.openai.totalTokensUsed);
|
|
console.log('Estimated Cost:', usage.data.openai.estimatedCost);
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **High Token Usage**
|
|
- Solution: Implement more aggressive caching, reduce prompt complexity
|
|
- Monitor: Check `/api/ai/usage` regularly
|
|
|
|
2. **Rate Limiting**
|
|
- Solution: Implement request queuing, reduce concurrent requests
|
|
- Configure: Adjust `AI_MAX_REQUESTS_PER_MINUTE` environment variable
|
|
|
|
3. **Poor Task Quality**
|
|
- Solution: Improve prompt engineering, add more context
|
|
- Feedback: Use `/api/ai/update-context` to provide training data
|
|
|
|
4. **Service Timeouts**
|
|
- Solution: Increase `OPENAI_TIMEOUT`, implement fallback mechanisms
|
|
- Monitor: Check `/api/ai/health` for service status
|
|
|
|
### Debug Mode
|
|
|
|
Enable detailed logging:
|
|
|
|
```env
|
|
AI_LOG_LEVEL=debug
|
|
LANGCHAIN_VERBOSE=true
|
|
```
|
|
|
|
### Performance Monitoring
|
|
|
|
Track key metrics:
|
|
- Response times for AI operations
|
|
- Cache hit/miss ratios
|
|
- Token usage trends
|
|
- Error rates by endpoint
|
|
|
|
## Cost Management
|
|
|
|
### Token Usage Optimization
|
|
|
|
1. **Cache Aggressively**: Use Redis caching for repeated queries
|
|
2. **Optimize Prompts**: Remove unnecessary context or verbosity
|
|
3. **Use Appropriate Models**: Consider using smaller models for simple tasks
|
|
4. **Batch Processing**: Group related operations to reduce overhead
|
|
|
|
### Cost Monitoring
|
|
|
|
```javascript
|
|
// Set up usage alerts
|
|
const usage = await fetch('/api/ai/usage');
|
|
const dailyCost = usage.data.openai.estimatedCost;
|
|
|
|
if (dailyCost > DAILY_BUDGET_LIMIT) {
|
|
// Trigger alert or disable non-critical AI features
|
|
console.warn('Daily AI budget exceeded:', dailyCost);
|
|
}
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
1. **API Key Protection**: Store OpenAI API keys securely, rotate regularly
|
|
2. **Input Validation**: Validate all user inputs before sending to AI services
|
|
3. **Output Sanitization**: Sanitize AI responses before displaying to users
|
|
4. **Rate Limiting**: Implement user-level rate limiting to prevent abuse
|
|
5. **Audit Logging**: Log all AI interactions for security monitoring
|
|
|
|
## Future Enhancements
|
|
|
|
Planned improvements:
|
|
|
|
1. **Fine-tuning**: Custom model training on project-specific data
|
|
2. **Multi-model Support**: Integration with additional AI providers
|
|
3. **Advanced Agents**: Complex multi-step task automation
|
|
4. **Voice Interface**: Speech-to-text task creation
|
|
5. **Visual Task Design**: AI-powered task visualization and workflow design |