contaigents
Version:
Modular AI Content Ecosystem with Audio Generation
246 lines (187 loc) • 7.02 kB
Markdown
# Image Context Integration
## Overview
The chat service now automatically detects and includes images in LLM conversations! When you mention image files in your messages, they are automatically processed and sent to vision-capable LLMs like Gemini for analysis.
## How It Works
### Automatic Detection
The system automatically detects image references in your messages using smart pattern matching:
```
"analyze screenshot.png" → Detects: screenshot.png
"what's in ./images/photo.jpg?" → Detects: ./images/photo.jpg
"check this image: demo/test.jpeg" → Detects: demo/test.jpeg
"compare image1.png and image2.jpg" → Detects: image1.png, image2.jpg
```
### Seamless Processing
1. **Detection**: Scans your message for image file references
2. **Loading**: Reads and validates the image files
3. **Encoding**: Converts images to base64 for LLM context
4. **Integration**: Includes images alongside your text in the conversation
## Supported Formats
✅ **Image Formats**: JPG, JPEG, PNG, GIF, WEBP, BMP, TIFF, SVG
✅ **File Size**: Up to 20MB per image
✅ **Multiple Images**: Process multiple images in one message
✅ **Path Types**: Relative paths, quoted paths, directory paths
## Usage Examples
### Basic Image Analysis
```bash
# Direct image reference
"analyze screenshot.png"
# With directory path
"what's in ./images/photo.jpg?"
# After keywords
"check this image: demo/test.jpeg"
```
### Multiple Images
```bash
# Compare multiple images
"compare image1.png and image2.jpg and tell me the differences"
# Analyze a series
"look at slide1.png, slide2.png, and slide3.png and summarize the presentation"
```
### Complex Queries
```bash
# Detailed analysis
"analyze ui_mockup.png and suggest improvements for the user interface design"
# Technical analysis
"examine error_screenshot.png and help me debug this issue"
# Creative analysis
"look at artwork.jpg and describe the artistic style and techniques used"
```
## Detection Patterns
The system recognizes various ways you might reference images:
### Direct References
- `image.jpg`
- `screenshot.png`
- `photo.jpeg`
### Path References
- `./images/photo.jpg`
- `../assets/logo.png`
- `demo/screenshot.jpeg`
### Quoted Paths
- `"path with spaces/image.png"`
- `'./folder/photo.jpg'`
### Keyword-Based
- `image: photo.jpg`
- `picture: screenshot.png`
- `photo: demo.jpeg`
## Supported LLM Providers
### ✅ Gemini (Google)
- **Models**: All Gemini models support vision
- **Setup**: Configure with `contaigents configure`
- **Features**: High-quality image analysis, OCR, scene understanding
### 🔄 Coming Soon
- **OpenAI GPT-4V**: Vision capabilities
- **Claude 3**: Anthropic's vision model
- **Other providers**: As they add vision support
## Configuration
### 1. Configure Gemini
```bash
contaigents configure
# Select Google provider
# Enter your Gemini API key
```
### 2. Test Image Analysis
```bash
# Place an image in your project
# Use chat with image reference
contaigents chat
> "analyze demo/test_image.jpg"
```
## Security & Validation
### Path Security
- ✅ Files must be within the project directory
- ✅ Path traversal attacks prevented
- ✅ Only allowed file extensions processed
### File Validation
- ✅ File existence checks
- ✅ MIME type validation
- ✅ File size limits (20MB max)
- ✅ Graceful error handling
### Privacy
- ✅ Images processed locally
- ✅ Base64 encoding for secure transmission
- ✅ No permanent storage of image data
## Technical Details
### Image Processing Pipeline
1. **Pattern Matching**: Regex-based detection of image references
2. **Path Resolution**: Convert relative paths to absolute paths
3. **Security Validation**: Ensure paths are within allowed directories
4. **File Loading**: Read image files from disk
5. **Format Detection**: Identify MIME types from extensions
6. **Base64 Encoding**: Convert binary data for LLM transmission
7. **Context Integration**: Include images in conversation messages
### Performance Characteristics
- **Detection Speed**: ~1ms for typical messages
- **Processing Speed**: ~10-50ms per image (depends on size)
- **Memory Usage**: Temporary base64 encoding in memory
- **Network**: Images sent as base64 in API requests
## Error Handling
### Common Issues & Solutions
**Image not found**
```
❌ Image file not found: screenshot.png
✅ Check file path and ensure image exists
```
**File too large**
```
❌ Image "large_image.png" is too large (25.3MB). Maximum size: 20MB
✅ Resize image or use a smaller file
```
**Unsupported format**
```
❌ Unsupported image format for "document.pdf"
✅ Use JPG, PNG, GIF, WEBP, BMP, TIFF, or SVG
```
**Path outside directory**
```
❌ Image path "../../../etc/passwd" is outside the allowed directory
✅ Use paths within your project directory
```
## Integration Examples
### With Existing Tools
```bash
# Analyze UI screenshots
"look at ui_screenshot.png and suggest improvements, then use the text-to-image tool to create a mockup"
# Process video frames
"analyze frame1.jpg, frame2.jpg, frame3.jpg from the video and describe the sequence"
# Document analysis
"examine document_scan.png and extract the text content"
```
### Workflow Integration
```bash
# Design review workflow
"analyze design_v1.png and design_v2.png, compare them, and create a summary report"
# Bug reporting workflow
"look at error_screenshot.png, identify the issue, and suggest debugging steps"
# Content creation workflow
"analyze reference_image.jpg and create similar content using the image generation tool"
```
## Best Practices
### 1. Clear Image References
- Use descriptive filenames: `ui_mockup.png` vs `img1.png`
- Include file extensions: `photo.jpg` not just `photo`
- Use relative paths from project root
### 2. Optimize Image Sizes
- Keep images under 5MB for faster processing
- Use appropriate formats (JPG for photos, PNG for screenshots)
- Resize large images before analysis
### 3. Descriptive Queries
- Be specific about what you want to analyze
- Ask focused questions for better results
- Combine image analysis with follow-up actions
### 4. Multiple Images
- Reference all images in one message for comparison
- Use clear descriptions when referencing multiple files
- Consider the context window limits
## Future Enhancements
### Planned Features
- 🔄 **Drag & Drop**: Direct image upload in chat interfaces
- 🔄 **Image URLs**: Support for web image URLs
- 🔄 **Batch Processing**: Analyze entire image directories
- 🔄 **OCR Integration**: Enhanced text extraction capabilities
- 🔄 **Image Generation**: Create images based on analysis results
### Provider Expansion
- 🔄 **OpenAI GPT-4V**: Vision model integration
- 🔄 **Claude 3**: Anthropic vision capabilities
- 🔄 **Local Models**: Offline vision model support
- 🔄 **Specialized Models**: OCR, object detection, etc.
This feature transforms the chat experience by making it truly multimodal - now you can have conversations about visual content as naturally as text!