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.3.tar.gz (20.3 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.3-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dakb_client-1.0.3.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.12

File hashes

Hashes for dakb_client-1.0.3.tar.gz
Algorithm Hash digest
SHA256 9badae6bd986ed8880a0732718a9155183f753febea75682b7936a64a16c0b41
MD5 e3de036bc1bbc6299a9830b66db9e811
BLAKE2b-256 a8cf1acb60d1c61a2038e8d935cc4ac60d4560f24d59535ec3d4b4f159bb6207

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dakb_client-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.12

File hashes

Hashes for dakb_client-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5fcba182a35027eb6a3024ed7736cb9de446cbdd0dc0572e23c3a511b555b80b
MD5 cf30c674403c1d5f481caa547fa05a19
BLAKE2b-256 413bc285d703dd0525b842fdcd131c0130c1b96cebfc541ff541baddecc1b161

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