Python library for interacting with KoboldCPP API
Project description
KoboldAPI
A Python library for interacting with KoboldCPP APIs, providing high-level abstractions for text processing, image handling, and generation tasks.
Features
-
Text Processing
- Intelligent text chunking
- Streaming generation capabilities
- Token counting and management
-
Image Processing
- Support for multiple image formats (JPEG, PNG, GIF, TIFF, WEBP, HEIF, RAW)
- Automatic image resizing and optimization
- RAW image processing with thumbnail extraction
- Base64 encoding for API transmission
-
Template Management
- Flexible template system for different LLM models
- Custom template directory support
- Built-in default templates
- Jinja2 templating integration
-
API Integration
- Robust error handling
- Connection management
- Streaming support
- Comprehensive API endpoint coverage
Installation
pip install koboldapi
Quick Start
Text Processing Example
from koboldapi import KoboldAPICore, ChunkingProcessor
# Initialize the API client
core = KoboldAPICore(api_url="http://localhost:5001")
# Create a chunking processor
chunker = ChunkingProcessor(core.api_client, max_chunk_length=2048)
# Process text
chunks, metadata = chunker.chunk_file("document.txt")
for chunk, token_count in chunks:
response = core.wrap_and_generate(
instruction="Summarize this text:",
content=chunk
)
print(response)
Image Processing Example
from koboldapi import KoboldAPICore, ImageProcessor
# Initialize processors
core = KoboldAPICore(api_url="http://localhost:5001")
processor = ImageProcessor(max_dimension=1024)
# Process image
encoded_image, img_path = processor.process_image("image.jpg")
response = core.wrap_and_generate(
instruction="Describe this image:",
images=[encoded_image]
)
print(response)
Streaming Generation Example
from koboldapi import KoboldAPICore
import asyncio
async def stream_example():
core = KoboldAPICore(api_url="http://localhost:5001")
# Stream tokens as they're generated
async for token in core.api_client.stream_generate(
prompt="Write a story about a robot:",
max_length=200
):
print(token, end='', flush=True)
# Or collect all tokens into final result
result = await core.api_client.generate_sync(
prompt="Write a story about a robot:",
max_length=200
)
print(result)
if __name__ == "__main__":
asyncio.run(stream_example())
Detailed Documentation
KoboldAPICore
The main interface for interacting with KoboldCPP APIs.
core = KoboldAPICore(
api_url="http://localhost:5001",
api_password=None, # Optional API password
generation_params={ # Optional generation parameters
'temp': 0.7,
'top_k': 40,
'top_p': 0.9
},
templates_directory="path/to/templates" # Optional custom templates
)
Text Processing
The ChunkingProcessor class handles text segmentation and processing:
chunker = ChunkingProcessor(
api_client, # KoboldAPI instance
max_chunk_length=2048, # Maximum tokens per chunk
max_total_chunks=1000 # Maximum number of chunks
)
# Process a file
chunks, metadata = chunker.chunk_file("document.txt")
# Process raw text
chunks = chunker.chunk_text("Your text content here")
Image Processing
The ImageProcessor class handles image preparation and optimization:
processor = ImageProcessor(
max_dimension=1024, # Maximum image dimension
patch_sizes=[8, 14, 16, 32], # Patch size options
max_file_size=50 * 1024 * 1024 # Maximum file size in bytes
)
# Process an image
encoded_image, path = processor.process_image("image.jpg")
Template Management
Custom templates can be provided in JSON format:
{
"template_name": {
"name": ["model_name_pattern"],
"system_start": "\nSystem: ",
"system_end": "\n",
"user_start": "User: ",
"user_end": "\n",
"assistant_start": "Assistant: "
}
}
Command Line Tools
The package includes example scripts for common tasks:
Text Processing Script
python text-example.py input.txt \
--task translate \
--api-url http://localhost:5001 \
--language French \
--max-chunk-size 8192
Available tasks:
- translate: Translate text to specified language
- summary: Generate text summary
- correct: Fix grammar and spelling
- distill: Create concise version
Image Processing Script
python image-example.py image.jpg \
--api-url http://localhost:5001 \
--instruction "Describe the image in detail."
Error Handling
The library provides custom exceptions for error handling:
try:
result = core.wrap_and_generate(instruction="Your instruction")
except KoboldAPIError as e:
print(f"API Error: {e}")
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GPLv3 License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file koboldapi-0.5.3.tar.gz.
File metadata
- Download URL: koboldapi-0.5.3.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89a6f2501354498ce1345999e6d630cdac0a6dd69cf99bbc2f9e76ba41d7040a
|
|
| MD5 |
62a40346fadffc8bd78dd0c36698d67f
|
|
| BLAKE2b-256 |
2909ee640d4f33c8d109139008e8762b27c3899488dabd201b74db53d0097dbf
|
File details
Details for the file koboldapi-0.5.3-py3-none-any.whl.
File metadata
- Download URL: koboldapi-0.5.3-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f610f010db2ed037adb916ec66b0d3280f5180e70b4ba6705400dc5ad9025782
|
|
| MD5 |
54c186b433f324b000f10069f8f86620
|
|
| BLAKE2b-256 |
e15fc99ed31b3f715c5d8e384e7f5a337c73146629401e34aad82f99b399cf38
|