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.3.6.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

condy-0.3.6-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: condy-0.3.6.tar.gz
  • Upload date:
  • Size: 9.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.3.6.tar.gz
Algorithm Hash digest
SHA256 829cb371c61cb925f7f6376d7930a1acb9fc2b6df611b27d583c1ee3a60b0eb0
MD5 ab3cc1274d2465fd27c8f59d0275c34f
BLAKE2b-256 7f5b8d0907f5b68fa959c3b4d195283e10e83b54d39befa5862222c2cfa76a7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: condy-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 9.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.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f137fa8a6bc5ae0c0f7719624b3bc81e4a33b12190ab0e7d554b1ea2d68d8375
MD5 95dd0f65d4b03d878f8df258e0b548cd
BLAKE2b-256 828d696b56399410bfdee8528daf3f8b897dd7abb519396f40bbb440a8a96a81

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