Skip to main content

Python client for the Condensation.ai API

Project description

Condy: Python Client for Condensation.ai

A modern, async Python client library for interacting with the Condensation.ai API, providing seamless access to document processing and RAG (Retrieval-Augmented Generation) capabilities.

Features

  • 🚀 Fully async implementation using httpx
  • 📄 Document processing and chunking
  • 🔍 RAG (Retrieval-Augmented Generation) querying
  • 💪 Type hints and modern Python practices
  • ⚡ Efficient markdown processing and page management
  • 🛡️ Comprehensive error handling
  • 📝 Rich document metadata support

Installation

pip install condy

Quick Start

import asyncio
from condy import CondyClient

async def main():
    # Initialize the client
    client = CondyClient(api_key="your-api-key")
    
    # Process a document from URL with metadata
    doc_output = await client.process_document(
        url="https://example.com/document.md",
        filename="document.md",
        file_key="custom-key",
        public_url="https://example.com/document.md"
    )
    
    # Query the document using RAG
    response = await client.query_rag(
        question="What are the key points?",
        document_id=doc_output.document_id
    )
    
    print(response.answer)

asyncio.run(main())

Core Features

Document Processing

# Upload pages directly with metadata
pages = {
    1: "Page 1 content",
    2: "Page 2 content"
}
doc_output = await client.upload_pages(
    pages=pages,
    filename="document.txt",
    file_key="unique-identifier",
    public_url="https://example.com/document.txt"
)

# Or process markdown from URL with metadata
doc_output = await client.process_document(
    url="https://example.com/document.md",
    filename="document.md",
    file_key="doc-123",
    public_url="https://example.com/document.md"
)

RAG Queries

# Query a document
response = await client.query_rag(
    question="What does the document say about X?",
    document_id="doc-id",
    max_chunks=5
)

# Access the response
print(response.answer)
print(response.source_pages)  # List of source pages used

Chunk Management

# Fetch document chunks
chunks = await client.fetch_chunks(
    document_id="doc-id",
    include_embeddings=False  # Set to True to include vector embeddings
)

Configuration

The client can be configured with custom settings:

client = CondyClient(
    api_key="your-api-key",
    base_url="https://custom-url.example.com",  # Optional
    timeout=60.0  # Custom timeout in seconds
)

Document Metadata

The library supports rich document metadata:

# Process document with full metadata
doc_output = await client.process_document(
    url="https://example.com/doc.pdf",
    content_type="pdf",
    filename="important-doc.pdf",  # Optional: Custom filename
    file_key="doc-2023-01",       # Optional: Unique identifier
    public_url="https://example.com/doc.pdf"  # Optional: Public access URL
)

Error Handling

The library provides specific exceptions for different error cases:

  • NetworkError: For connection and network-related issues
  • TimeoutError: For request timeout issues
  • APIError: For API-specific errors with status codes and details
from condy import NetworkError, TimeoutError, APIError

try:
    response = await client.query_rag(question="...", document_id="...")
except TimeoutError:
    print("Request timed out")
except NetworkError:
    print("Network error occurred")
except APIError as e:
    print(f"API error: {e.status_code} - {e.detail}")

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

The usage of the library is subject to the Condensation.ai Terms of Service.

Support

For support, please contact support@condensation.ai.

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

condy-0.2.91.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

condy-0.2.91-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file condy-0.2.91.tar.gz.

File metadata

  • Download URL: condy-0.2.91.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for condy-0.2.91.tar.gz
Algorithm Hash digest
SHA256 91b3f35b1e4e18c174a964fc9b008df8e1757cfa85c3433e2a32f279effc9b80
MD5 060fb1f0afc36652dd03c732db3767c4
BLAKE2b-256 52403eee31691c836b3eb023b13fbfa05c5ea877e135992826529942defd175f

See more details on using hashes here.

File details

Details for the file condy-0.2.91-py3-none-any.whl.

File metadata

  • Download URL: condy-0.2.91-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for condy-0.2.91-py3-none-any.whl
Algorithm Hash digest
SHA256 0b5efb767045145117d19c8e24ff8715e04242cfddd692d74fe0d7a6421b3541
MD5 d013cfaa41bbbbbaf9003c214262fe13
BLAKE2b-256 4604295977e033b7f9b105a7949f6a14d3fb634f3d79b8db0711d58fcaf96e66

See more details on using hashes here.

Supported by

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