Skip to main content

Python SDK for RAG Agent API - A comprehensive client library for RAG Agent services

Reason this release was yanked:

bug

Project description

RAG Agent SDK for Python

A comprehensive Python SDK for interacting with RAG Agent API services.

Installation

pip install rag-agent-sdk

Quick Start (3 Lines)

from rag_agent_sdk import SyncRagAgentClient

client = SyncRagAgentClient(api_key="your-key")  # Or use RAG_AGENT_API_KEY env var
response = client.query.query("dataset-id", "What is RAG?")
print(response.response)

Async Quick Start

import asyncio
from rag_agent_sdk import RagAgentClient

async def main():
    # Initialize client (reads from environment variables if not specified)
    async with RagAgentClient(api_key="your-api-key") as client:
        
        # Create a dataset
        dataset = await client.datasets.create(
            name="my-knowledge-base",
            description="My first knowledge base"
        )
        print(f"Created dataset: {dataset.dataset_uuid}")
        
        # Upload a document
        result = await client.documents.upload(
            dataset_id=dataset.dataset_uuid,
            file="./documents/handbook.pdf"
        )
        print(f"Upload status: {result.status}")
        
        # Query the dataset
        response = await client.query.query(
            dataset_id=dataset.dataset_uuid,
            query="What is this document about?",
            mode="mix"
        )
        print(f"Answer: {response.response}")

asyncio.run(main())

Authentication

The SDK supports multiple authentication methods:

API Key Authentication

client = RagAgentClient(
    base_url="http://localhost:9621",
    api_key="your-api-key"
)

JWT Token Authentication

client = RagAgentClient(
    base_url="http://localhost:9621",
    jwt_token="your-jwt-token"
)

Supabase Authentication

client = RagAgentClient(
    base_url="http://localhost:9621",
    supabase_url="https://xxx.supabase.co",
    supabase_anon_key="your-anon-key",
    supabase_access_token="user-access-token"
)

Username/Password Authentication

client = RagAgentClient(
    base_url="http://localhost:9621",
    username="admin",
    password="password"
)

Features

Dataset Management

# List datasets
datasets = await client.datasets.list(page=1, page_size=20)

# Get dataset by ID
dataset = await client.datasets.get("dataset-uuid")

# Update dataset
updated = await client.datasets.update(
    dataset_id="dataset-uuid",
    description="Updated description"
)

# Delete dataset
await client.datasets.delete("dataset-uuid")

Document Processing

# Upload file
result = await client.documents.upload(
    dataset_id="dataset-uuid",
    file="./doc.pdf"
)

# Insert text
result = await client.documents.insert_text(
    dataset_id="dataset-uuid",
    text="Your text content here",
    source="manual-input"
)

# Batch insert
result = await client.documents.insert_batch(
    dataset_id="dataset-uuid",
    texts=["Text 1", "Text 2", "Text 3"],
    sources=["source1", "source2", "source3"]
)

# List documents
docs = await client.documents.list(dataset_id="dataset-uuid")

# Delete document
await client.documents.delete(dataset_id="dataset-uuid", doc_id="doc-id")

RAG Queries

# Basic query
response = await client.query.query(
    dataset_id="dataset-uuid",
    query="What is the main topic?",
    mode="mix"  # local, global, hybrid, naive, mix, bypass
)

# Streaming query
async for chunk in client.query.query_stream(
    dataset_id="dataset-uuid",
    query="Explain the concept in detail"
):
    print(chunk, end="", flush=True)

# Cross-dataset query
response = await client.query.cross_dataset_query(
    query="Compare the topics",
    dataset_ids=["uuid1", "uuid2"],
    enable_rerank=True
)

# Get context only (without LLM response)
context = await client.query.get_context(
    dataset_id="dataset-uuid",
    query="Find relevant information"
)
print(f"Entities: {context.entities}")
print(f"Chunks: {context.chunks}")

Knowledge Graph

# Get knowledge graph
graph = await client.graph.get_knowledge_graph(
    dataset_id="dataset-uuid",
    label="Person",
    max_depth=2,
    max_nodes=100
)

# Get all labels
labels = await client.graph.get_labels(dataset_id="dataset-uuid")

# Check entity exists
exists = await client.graph.check_entity_exists(
    dataset_id="dataset-uuid",
    entity_name="John Doe"
)

# Edit entity
await client.graph.edit_entity(
    dataset_id="dataset-uuid",
    entity_name="John Doe",
    updated_data={"description": "Updated description"},
    allow_rename=False
)

Error Handling

from rag_agent_sdk import (
    RagAgentError,
    AuthenticationError,
    AuthorizationError,
    NotFoundError,
    DatasetNotFoundError,
    ValidationError,
)

try:
    dataset = await client.datasets.get("non-existent-id")
except DatasetNotFoundError as e:
    print(f"Dataset not found: {e.dataset_id}")
except AuthenticationError:
    print("Authentication failed - check your credentials")
except AuthorizationError:
    print("Permission denied")
except RagAgentError as e:
    print(f"API error: {e.message} (status: {e.status_code})")

Sync vs Async Clients

# Async client (recommended for production)
from rag_agent_sdk import RagAgentClient

async with RagAgentClient(api_key="your-key") as client:
    response = await client.query.query("dataset-id", "query")

# Sync client (for simple scripts)
from rag_agent_sdk import SyncRagAgentClient

with SyncRagAgentClient(api_key="your-key") as client:
    response = client.query.query("dataset-id", "query")

Environment Variables

The SDK automatically reads configuration from environment variables:

Variable Description Default
RAG_AGENT_BASE_URL Server URL http://localhost:9621
RAG_AGENT_API_KEY API key -
RAG_AGENT_JWT_TOKEN JWT token -
RAG_AGENT_TIMEOUT Timeout (seconds) 30
RAG_AGENT_MAX_RETRIES Max retries 3
RAG_AGENT_DEBUG Enable debug logging false
# Uses environment variables automatically
from rag_agent_sdk import SyncRagAgentClient

client = SyncRagAgentClient()  # No parameters needed!

Logging & Debugging

from rag_agent_sdk import configure_logging

# Enable debug logging
configure_logging(level="DEBUG")

# Or enable debug mode on client
client = SyncRagAgentClient(debug=True)

Mock Client for Testing

from rag_agent_sdk import MockRagAgentClient

# Use mock client in tests (no real server needed)
client = MockRagAgentClient()

# Set custom responses
client.query.set_response("What is RAG?", "RAG is Retrieval-Augmented Generation...")

# Use like normal client
dataset = await client.datasets.create(name="test-kb")
response = await client.query.query(dataset.dataset_uuid, "What is RAG?")
assert "Retrieval-Augmented" in response.response

Configuration Options

Parameter Type Default Description
base_url str localhost:9621 RAG Agent server URL
api_key str None API key for authentication
jwt_token str None JWT token for authentication
timeout float 30.0 Request timeout in seconds
max_retries int 3 Maximum retry attempts
debug bool False Enable debug logging

License

MIT License

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

rag_agent_sdk-0.1.0.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

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

rag_agent_sdk-0.1.0-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file rag_agent_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: rag_agent_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rag_agent_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1cc113fc40e9a7fad09d547511e1922e4a4687c193732942b182f841e85d1c5a
MD5 4cbb4623fdbd9ae38942fe1aaa9a31d8
BLAKE2b-256 3f05ca7710c2b53b2070b62a6095c144cba2786fe31a676dee5591dc6b37cfe2

See more details on using hashes here.

File details

Details for the file rag_agent_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rag_agent_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rag_agent_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df5b631dbfc642cdc9e6aaad64d4de94f0901e37279fe672fc922ed71ab64adc
MD5 04738ad667012f6a62416238d2f0b5c1
BLAKE2b-256 448999921aba073b3ff57acba91200a6973318ab0198ac08bfd68831aef30b62

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