Python client SDK for DAKB (Distributed Agent Knowledge Base)
Project description
DAKB Python Client SDK
Python client library for the DAKB (Distributed Agent Knowledge Base) service.
Features
- Synchronous Client (
DAKBClient): For blocking operations - Asynchronous Client (
DAKBAsyncClient): For async/await patterns - MCP Client (
DAKBMCPClient): Native MCP HTTP protocol support - Full type hints and Pydantic models
- Connection pooling and retry logic
- SSE subscription for real-time notifications
Installation
pip install dakb-client
Or install from source:
cd packages/dakb_client
pip install -e .
Quick Start
Synchronous Usage
from dakb_client import DAKBClient
# Create client
client = DAKBClient(
base_url="http://localhost:3100",
token="your-auth-token"
)
# Search knowledge
results = client.search("machine learning patterns", limit=5)
# Store knowledge
entry = client.store_knowledge(
title="PPO Training Tips",
content="Always normalize rewards before training...",
content_type="lesson_learned",
category="ml",
tags=["ppo", "reinforcement-learning"]
)
# Send message
client.send_message(
recipient_id="backend",
subject="Task Complete",
content="The migration finished successfully.",
priority="high"
)
# Close when done
client.close()
Asynchronous Usage
import asyncio
from dakb_client import DAKBAsyncClient
async def main():
async with DAKBAsyncClient(
base_url="http://localhost:3100",
token="your-auth-token"
) as client:
# Search knowledge
results = await client.search("error handling patterns")
# Store knowledge
entry = await client.store_knowledge(
title="Redis Caching Pattern",
content="Use TTL-based caching for session data...",
content_type="pattern",
category="backend"
)
asyncio.run(main())
MCP HTTP Protocol
import asyncio
from dakb_client import DAKBMCPClient
async def main():
async with DAKBMCPClient(
base_url="http://localhost:3100",
token="your-auth-token"
) as client:
# Initialize MCP session
await client.initialize()
# List available tools
tools = await client.list_tools()
print(f"Available tools: {len(tools)}")
# Call a tool directly
result = await client.call_tool("dakb_search", {
"query": "database optimization",
"limit": 5
})
# Subscribe to notifications
async for event in client.subscribe():
print(f"Event: {event['type']}")
if event["type"] == "message/received":
print(f"New message: {event['data']}")
asyncio.run(main())
API Reference
Knowledge Operations
| Method | Description |
|---|---|
store_knowledge(title, content, content_type, category, ...) |
Store new knowledge |
search(query, limit=5, min_score=0.3, category=None) |
Semantic search |
get_knowledge(knowledge_id) |
Get full entry by ID |
vote(knowledge_id, vote, comment=None) |
Vote on quality |
Messaging Operations
| Method | Description |
|---|---|
send_message(recipient_id, subject, content, ...) |
Send direct message |
get_messages(status=None, priority=None, ...) |
Get inbox messages |
mark_read(message_id=None, message_ids=None) |
Mark as read |
broadcast(subject, content, priority="normal") |
Broadcast to all |
get_message_stats() |
Get message statistics |
Status Operations
| Method | Description |
|---|---|
status() |
Check service health |
get_stats() |
Get KB statistics |
ping() |
Quick health check |
Advanced Operations
| Method | Description |
|---|---|
advanced(operation, params) |
Proxy to advanced ops |
Exception Handling
from dakb_client import (
DAKBError,
DAKBConnectionError,
DAKBAuthenticationError,
DAKBNotFoundError,
DAKBValidationError,
DAKBRateLimitError,
DAKBServerError,
)
try:
result = client.get_knowledge("invalid_id")
except DAKBNotFoundError as e:
print(f"Knowledge not found: {e}")
except DAKBAuthenticationError as e:
print(f"Auth failed: {e}")
except DAKBConnectionError as e:
print(f"Connection failed: {e}")
except DAKBError as e:
print(f"DAKB error: {e}")
Configuration
| Parameter | Default | Description |
|---|---|---|
base_url |
Required | DAKB gateway URL |
token |
Required | Authentication token |
timeout |
30.0 | Request timeout (seconds) |
max_retries |
3 | Retry attempts |
verify_ssl |
True | SSL verification |
Content Types
lesson_learned: Insights from experienceresearch: Research findingsreport: Generated reportspattern: Code/architecture patternsconfig: Configuration exampleserror_fix: Bug fixes and solutions
Categories
database: Database operationsml: Machine learningdevops: DevOps/infrastructuresecurity: Security practicesfrontend: Frontend developmentbackend: Backend developmentgeneral: General knowledge
License
MIT
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
dakb_client-1.0.1.tar.gz
(20.2 kB
view details)
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 dakb_client-1.0.1.tar.gz.
File metadata
- Download URL: dakb_client-1.0.1.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be5f5501a2abfb5d2e94d50bcf90f3cea784cd93f69bfa8eced45a443fbe1393
|
|
| MD5 |
bef915ef708052841f8e367c5abfcd70
|
|
| BLAKE2b-256 |
680bc5b6f77579a8d2b35b2af0c780a933aed0b9460fd56ede51e77360287dc4
|
File details
Details for the file dakb_client-1.0.1-py3-none-any.whl.
File metadata
- Download URL: dakb_client-1.0.1-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bbd11bc851c1a4ae0a8fe1668f30609f4a10d6814e3ac40ea9f1496f4dcfb27
|
|
| MD5 |
b33b9af3a1d6386a095fd31f43124330
|
|
| BLAKE2b-256 |
a9ca5b0ec92963e993aab9937c77b8d2582f4c02f9120f81ac59b81947b689f5
|