Contex Python SDK
Official Python client for Contex - Semantic context routing for AI agents.
Installation
pip install contex-python
Quick Start
Async Client (Recommended)
from contex import ContexAsyncClient
async def main():
async with ContexAsyncClient(
url="http://localhost:8001",
api_key="ck_your_api_key_here"
) as client:
# Publish data
await client.publish(
project_id="my-app",
data_key="coding_standards",
data={
"style": "PEP 8",
"max_line_length": 100,
"quotes": "double"
}
)
# Register agent
response = await client.register_agent(
agent_id="code-reviewer",
project_id="my-app",
data_needs=[
"coding standards and style guidelines",
"testing requirements and coverage goals"
]
)
print(f"Matched needs: {response.matched_needs}")
print(f"Notification channel: {response.notification_channel}")
# Query for data
results = await client.query(
project_id="my-app",
query="authentication configuration"
)
for result in results.results:
print(f"{result.data_key}: {result.data}")
import asyncio
asyncio.run(main())
Sync Client
from contex import ContexClient
client = ContexClient(
url="http://localhost:8001",
api_key="ck_your_api_key_here"
)
# Publish data
client.publish(
project_id="my-app",
data_key="config",
data={"env": "prod", "debug": False}
)
# Register agent
response = client.register_agent(
agent_id="my-agent",
project_id="my-app",
data_needs=["configuration", "secrets"]
)
Features
- ✅ Async & Sync: Both async and synchronous interfaces
- ✅ Type Hints: Full type annotations with Pydantic models
- ✅ Error Handling: Comprehensive exception hierarchy
- ✅ Retry Logic: Automatic retries with exponential backoff
- ✅ Rate Limiting: Built-in rate limit handling
- ✅ Authentication: API key authentication support
API Reference
Client Initialization
client = ContexAsyncClient(
url="http://localhost:8001", # Contex server URL
api_key="ck_...", # API key for authentication
timeout=30.0, # Request timeout in seconds
max_retries=3, # Maximum number of retries
)
Publishing Data
await client.publish(
project_id="my-app", # Project identifier
data_key="unique-key", # Unique key for this data
data={"any": "json"}, # Data payload
data_format="json", # Format: json, yaml, toml, text
metadata={"tags": ["prod"]}, # Optional metadata
)
Registering Agents
response = await client.register_agent(
agent_id="agent-1", # Unique agent ID
project_id="my-app", # Project ID
data_needs=["config", "secrets"], # Data needs (natural language)
notification_method="redis", # redis or webhook
webhook_url="https://...", # Optional webhook URL
webhook_secret="secret", # Optional webhook secret
last_seen_sequence="0", # Last seen sequence
)
Querying Data
results = await client.query(
project_id="my-app",
query="authentication settings",
max_results=10,
)
for result in results.results:
print(f"{result.data_key}: {result.similarity_score}")
API Key Management
# Create API key
key_response = await client.create_api_key(name="production-key")
print(f"API Key: {key_response.key}") # Store this securely!
# List keys
keys = await client.list_api_keys()
# Revoke key
await client.revoke_api_key(key_id="key-123")
Health Checks
# Comprehensive health
health = await client.health()
# Readiness check
ready = await client.ready()
# Rate limit status
rate_limit = await client.rate_limit_status()
print(f"Remaining: {rate_limit.remaining}/{rate_limit.limit}")
Exception Handling
from contex import (
ContexError,
AuthenticationError,
RateLimitError,
ValidationError,
NotFoundError,
ServerError,
)
try:
await client.publish(...)
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after} seconds")
except ValidationError as e:
print(f"Validation error: {e}")
except NotFoundError:
print("Resource not found")
except ServerError:
print("Server error")
except ContexError as e:
print(f"Contex error: {e}")
Development
Setup
cd sdk/python
pip install -e ".[dev]"
Running Tests
pytest
Code Formatting
black contex/
ruff check contex/
mypy contex/
Examples
See the examples directory for more usage examples:
basic_usage.py- Basic publish and queryagent_registration.py- Agent registration and updateswebhook_agent.py- Webhook-based agenterror_handling.py- Error handling patternsbatch_operations.py- Batch publishing
License
MIT License - see LICENSE for details.
Links
Metadata
Release files for contex-python 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| contex_python-0.3.3.tar.gz | 19.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| contex_python-0.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.6 kB
Release files / contex_python-0.3.3.tar.gz
| Download URL | contex_python-0.3.3.tar.gz |
|---|---|
| Size | 19.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbeeeb613dbd3661f0bf4eb02a85782d5962a07ab83467c51506fa40829cf0db
|
|
BLAKE2b-256 checksum How to use checksums |
48cd50b838356cfc703ebbbb462ae35cf3e01b76bfba6030181a592e68137b71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / contex_python-0.3.3-py3-none-any.whl
| Download URL | contex_python-0.3.3-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5d97d1989b37318c0e7ceb18f3eaef2ad8e571fc1d137d65abf495149c4b00f
|
|
BLAKE2b-256 checksum How to use checksums |
d55d2bca050ce2bbb6f7cc72dd0633734a2021737a9d5b66042354afe6a12400
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|