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

Install from source:

cd packages/dakb_client
pip install -e .

Note: PyPI package coming soon. For now, install from the repository.

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.0.tar.gz (3.9 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.0-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file dakb_client-1.0.0.tar.gz.

File metadata

  • Download URL: dakb_client-1.0.0.tar.gz
  • Upload date:
  • Size: 3.9 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.0.tar.gz
Algorithm Hash digest
SHA256 06301e3148769ed105539fdc56a1dc8242e8afd350a15cca54b8f7253444c4b6
MD5 be395f4854689d7a6f63a36dfc0bed29
BLAKE2b-256 73cb3640357f0a3795f141f3cd763666a2a06f668c57761a9e894f053632d13c

See more details on using hashes here.

File details

Details for the file dakb_client-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dakb_client-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86e3363504914d9ecb39de16403e7e099b952212fc92a1144cae581048e4d87e
MD5 ab15c90270a2d77d76960ccc4fe7b872
BLAKE2b-256 5c71bef81e602fa36a23892bd35deb768dd4787517b644a6367d3865783f3a31

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