Skip to main content

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

koboldapi-0.5.3.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

koboldapi-0.5.3-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

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

Hashes for koboldapi-0.5.3.tar.gz
Algorithm Hash digest
SHA256 89a6f2501354498ce1345999e6d630cdac0a6dd69cf99bbc2f9e76ba41d7040a
MD5 62a40346fadffc8bd78dd0c36698d67f
BLAKE2b-256 2909ee640d4f33c8d109139008e8762b27c3899488dabd201b74db53d0097dbf

See more details on using hashes here.

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

Hashes for koboldapi-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f610f010db2ed037adb916ec66b0d3280f5180e70b4ba6705400dc5ad9025782
MD5 54c186b433f324b000f10069f8f86620
BLAKE2b-256 e15fc99ed31b3f715c5d8e384e7f5a337c73146629401e34aad82f99b399cf38

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page