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

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
    doc_output = await client.process_document("https://example.com/document.md") | await client.process_document("https://example.com/document.pdf")
    
    # 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
pages = {
    1: "Page 1 content",
    2: "Page 2 content"
}
doc_output = await client.upload_pages(pages)

# Or process markdown from URL
doc_output = await client.process_document("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
)

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

[License information here]

Support

For support, please [contact information here]

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.3.tar.gz (7.7 kB view hashes)

Uploaded Source

Built Distribution

condy-0.2.3-py3-none-any.whl (7.3 kB view hashes)

Uploaded Python 3

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