Skip to main content

dynabots-core

Core primitives for the DynaBots orchestration framework family.

Overview

dynabots-core provides the foundational building blocks shared across all DynaBots orchestration frameworks:

  • Protocols: Agent, LLMProvider, Judge, Tool - interfaces that define contracts
  • Value Objects: TaskResult, LLMMessage, LLMResponse - immutable data structures
  • Providers: Ready-to-use LLM adapters for OpenAI, Ollama, Anthropic

Installation

# Core only (bring your own LLM client)
pip install dynabots-core

# With OpenAI support
pip install dynabots-core[openai]

# With Ollama (local LLMs)
pip install dynabots-core[ollama]

# With all providers
pip install dynabots-core[all]

Quick Start

Define an Agent

from dynabots_core import Agent, TaskResult

class MyAgent:
    @property
    def name(self) -> str:
        return "MyAgent"

    @property
    def capabilities(self) -> list[str]:
        return ["search", "summarize"]

    async def process_task(self, task_description: str, context: dict) -> TaskResult:
        # Your agent logic here
        result = await self._do_work(task_description)
        return TaskResult.success(
            task_id=context["task_id"],
            data=result
        )

Use an LLM Provider

from dynabots_core.providers import OllamaProvider

# Local LLM via Ollama
llm = OllamaProvider(model="qwen2.5:72b")

response = await llm.complete([
    LLMMessage(role="system", content="You are a helpful assistant."),
    LLMMessage(role="user", content="Hello!")
])
print(response.content)

Create a Judge (for Orc!!)

from dynabots_core import Judge, Verdict

class LLMJudge:
    def __init__(self, llm: LLMProvider):
        self.llm = llm

    async def evaluate(self, task: str, submissions: list[dict]) -> Verdict:
        # Compare submissions and pick a winner
        prompt = f"Task: {task}\n\nSubmission A: {submissions[0]}\nSubmission B: {submissions[1]}\n\nWhich is better?"
        response = await self.llm.complete([LLMMessage(role="user", content=prompt)])
        return Verdict(winner=..., reasoning=response.content)

Framework Family

This package is part of the DynaBots framework family:

Package Description
dynabots-core Shared primitives (this package)
dynabots DAG-based orchestration with parallel waves
orc Challenge-based hierarchy with contested leadership

Protocols

Agent

class Agent(Protocol):
    @property
    def name(self) -> str: ...

    @property
    def capabilities(self) -> list[str]: ...

    async def process_task(self, task_description: str, context: dict) -> TaskResult: ...

LLMProvider

class LLMProvider(Protocol):
    async def complete(
        self,
        messages: list[LLMMessage],
        temperature: float = 0.1,
        max_tokens: int = 2000,
        json_mode: bool = False,
    ) -> LLMResponse: ...

Judge

class Judge(Protocol):
    async def evaluate(self, task: str, submissions: list[dict]) -> Verdict: ...

Tool

class Tool(Protocol):
    @property
    def name(self) -> str: ...

    @property
    def description(self) -> str: ...

    @property
    def parameters_schema(self) -> dict: ...

    async def execute(self, **kwargs) -> Any: ...

License

MIT

Metadata

Release files for dynabots-core 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynabots-core 0.1.1
File Size Uploaded Provenance Actions
dynabots_core-0.1.1.tar.gz 34.0 kB Without provenance Details for dynabots_core-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dynabots-core 0.1.1
File Interpreter ABI Platform Actions
dynabots_core-0.1.1-py3-none-any.whl Python 3 none any Details for dynabots_core-0.1.1-py3-none-any.whl

Total release size: 65.8 kB

Release files / dynabots_core-0.1.1.tar.gz

Download URL dynabots_core-0.1.1.tar.gz
Size 34.0 kB
Tags Source
SHA-256 checksum
How to use checksums
019d96c1e117fd7978544b08b5bcf305fdb267ab9e4d6a78b3e47c2025353451
BLAKE2b-256 checksum
How to use checksums
a63118d93baefdba8f098d34d019573c6b47b27b69681bcc79a04672716a2aa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / dynabots_core-0.1.1-py3-none-any.whl

Download URL dynabots_core-0.1.1-py3-none-any.whl
Size 31.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a95dd97c8b394c22f9b84a9b18c4ab05ca85ad6b20e1fc8d98357da7462ef28
BLAKE2b-256 checksum
How to use checksums
c3d3d4994b94d8440e66af681db58af5bd43811e7ca1a32c86b34e93a4d95a45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for dynabots-core 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page