Skip to main content

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 experience
  • research: Research findings
  • report: Generated reports
  • pattern: Code/architecture patterns
  • config: Configuration examples
  • error_fix: Bug fixes and solutions

Categories

  • database: Database operations
  • ml: Machine learning
  • devops: DevOps/infrastructure
  • security: Security practices
  • frontend: Frontend development
  • backend: Backend development
  • general: 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)

Uploaded Source

Built Distribution

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

dakb_client-1.0.1-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

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

Hashes for dakb_client-1.0.1.tar.gz
Algorithm Hash digest
SHA256 be5f5501a2abfb5d2e94d50bcf90f3cea784cd93f69bfa8eced45a443fbe1393
MD5 bef915ef708052841f8e367c5abfcd70
BLAKE2b-256 680bc5b6f77579a8d2b35b2af0c780a933aed0b9460fd56ede51e77360287dc4

See more details on using hashes here.

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

Hashes for dakb_client-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6bbd11bc851c1a4ae0a8fe1668f30609f4a10d6814e3ac40ea9f1496f4dcfb27
MD5 b33b9af3a1d6386a095fd31f43124330
BLAKE2b-256 a9ca5b0ec92963e993aab9937c77b8d2582f4c02f9120f81ac59b81947b689f5

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