Simple LightRAG API client
Project description
🚀 lightrag-api
Simple LightRAG API client for Python.
This library provides both synchronous and asynchronous clients for interacting with the LightRAG API, enabling document management, RAG queries, knowledge graph operations, and more.
📦 Installation
Install from source using uv or pip:
# Using uv
uv add lightrag-api
# Using pip
pip install lightrag-api
Requirements:
- 🐍 Python >= 3.10
- 📡 httpx >= 0.28.1
- ✅ pydantic >= 2.12.5
⚡ Quick Start
Synchronous Client
from lightrag.api import SyncLightRagClient
# Initialize client with API key
client = SyncLightRagClient(
base_url="https://your-lightrag-server.com",
api_key="your-api-key"
)
# Execute a query
response = client.query("What is machine learning?")
print(response.response)
# Don't forget to close the client
client.close()
Asynchronous Client
from lightrag.api import AsyncLightRagClient
async def main():
# Initialize client with OAuth token
client = AsyncLightRagClient(
base_url="https://your-lightrag-server.com",
oauth_token="your-oauth-token"
)
try:
# Execute a query
response = await client.query("What is machine learning?")
print(response.response)
finally:
await client.close()
# Run the async function
import asyncio
asyncio.run(main())
✨ Features
- 📄 Document Management: Upload documents, insert text, delete documents, and manage document pipelines
- 🔍 RAG Queries: Execute queries with multiple modes (local, global, hybrid, naive, mix, bypass), streaming support, and conversation history
- 🕸️ Knowledge Graph Operations: Create, update, merge, and delete entities and relations
- ⚙️ Pipeline Management: Monitor and control document processing pipelines
- 🔄 Dual Client Support: Both synchronous (
SyncLightRagClient) and asynchronous (AsyncLightRagClient) clients - 🛡️ Type Safety: Full Pydantic model support for request/response validation
💡 Usage Examples
🔧 Initialize Client
from lightrag.api import SyncLightRagClient, AsyncLightRagClient
# Sync client with API key
sync_client = SyncLightRagClient(
base_url="https://api.example.com",
api_key="your-api-key"
)
# Async client with OAuth token
async_client = AsyncLightRagClient(
base_url="https://api.example.com",
oauth_token="your-oauth-token"
)
❓ Simple Query
# Synchronous query
response = sync_client.query(
query="Explain quantum computing",
mode="mix",
include_references=True
)
print(response.response)
print(response.references)
# Asynchronous query
response = await async_client.query(
query="Explain quantum computing",
mode="mix",
include_references=True
)
📤 Upload Document
# Upload a file
response = sync_client.upload_document("path/to/document.pdf")
print(f"Document ID: {response.doc_id}")
# Or upload from bytes
with open("document.pdf", "rb") as f:
response = sync_client.upload_document(f.read())
📝 Insert Text
# Insert single text
response = sync_client.insert_text(
text="Your document content here...",
file_source="manual_input.txt"
)
# Insert multiple texts
response = sync_client.insert_texts(
texts=["Text 1", "Text 2", "Text 3"],
file_sources=["doc1.txt", "doc2.txt", "doc3.txt"]
)
📚 API Overview
📄 Document Management
upload_document(file)- Upload a document fileinsert_text(text, file_source)- Insert text into the systeminsert_texts(texts, file_sources)- Insert multiple textsget_documents()- Get statuses of all documentsget_documents_paginated(page, page_size)- Get paginated document listdelete_document(doc_ids, delete_file, delete_llm_cache)- Delete documents by IDclear_documents()- Clear all documentsget_pipeline_status()- Get document processing pipeline statuscancel_pipeline()- Cancel current processing pipelinereprocess_failed()- Reprocess failed documentsget_status_counts()- Get document status countsget_track_status(track_id)- Track document processing statusscan_documents()- Scan for new documents
🔍 Query Methods
query(query, mode, include_references, ...)- Execute RAG queryquery_stream(query, mode, ...)- Execute streaming RAG queryquery_data(query, mode, ...)- Execute query and return structured data
🕸️ Knowledge Graph Operations
create_entity(name, description, labels)- Create a new entityupdate_entity(name, description, labels)- Update an existing entitydelete_entity(entity_name)- Delete an entitymerge_entities(source_name, target_name)- Merge two entitiescreate_relation(source, target, relation, description)- Create a relationupdate_relation(source, target, relation, description)- Update a relationdelete_relation(source, target, relation)- Delete a relationget_knowledge_graph(limit)- Get knowledge graph dataget_graph_labels()- Get all graph labelsget_popular_labels(limit)- Get popular labelssearch_labels(q, limit)- Search labelscheck_entity_exists(name)- Check if entity exists
🛠️ Utility Methods
clear_cache()- Clear LLM response cacheget_version()- Get API versionget_tags()- Get available tagsget_running_models()- Get running modelsget_health()- Check API health statusget_auth_status()- Get authentication statuslogin(username, password)- Login and get tokengenerate(**kwargs)- Generate textchat(**kwargs)- Chat with the API
For detailed method signatures and parameters, refer to the source code documentation in src/lightrag/api/_sync_client.py and src/lightrag/api/_async_client.py.
🔐 Authentication
The client supports two authentication methods:
🔑 API Key Authentication
client = SyncLightRagClient(
base_url="https://api.example.com",
api_key="your-api-key"
)
The API key is sent in the X-API-Key header.
🎫 OAuth Token Authentication
client = SyncLightRagClient(
base_url="https://api.example.com",
oauth_token="your-oauth-token"
)
The OAuth token is sent in the Authorization: Bearer header.
Note: ⚠️ If both are provided, OAuth token takes priority.
⚠️ Error Handling
The library provides two exception types:
LightRagError- Base exception for all LightRAG API errorsLightRagHttpError- Exception for HTTP-related errors
from lightrag.api import SyncLightRagClient, LightRagError, LightRagHttpError
client = SyncLightRagClient(base_url="https://api.example.com", api_key="key")
try:
response = client.query("test query")
except LightRagHttpError as e:
print(f"HTTP error occurred: {e}")
except LightRagError as e:
print(f"LightRAG error occurred: {e}")
🔗 Links
- 📖 LightRAG Documentation - Official LightRAG project documentation
❓ FAQ
Why do you write code manually? There is an
openapi-python-clientgenerator.
openapi-python-client generates slop client code.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lightrag_api-0.1.1.tar.gz.
File metadata
- Download URL: lightrag_api-0.1.1.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
106f06067ffb1b8ee7438bd58837c1c641fd9ad0e8c4460c93c60159ae51a906
|
|
| MD5 |
e8d10ee8cb83eaa02aac9b7e95f7146f
|
|
| BLAKE2b-256 |
6c5e1338018337f552825a3b79c24f07172ee6b64dba9a18403b7c7461a504dd
|
File details
Details for the file lightrag_api-0.1.1-py3-none-any.whl.
File metadata
- Download URL: lightrag_api-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff97954e588782366f2f2b95a082c39031d6df8237fefe7f47f8c42aa9f536ee
|
|
| MD5 |
1108a3fd492b42ac73b7fc7af138f6cb
|
|
| BLAKE2b-256 |
2d6c0dedada635167e99e349c16daac46b8a6b5c97ea66e9cac71c931a58a06e
|