Skip to main content

AI agent toolkit for AgenTrux - framework-agnostic function calling tools

Project description

agentrux-agent-tools

Beta -- API may change before 1.0.

Framework-agnostic AI agent toolkit for AgenTrux. Exposes publish/subscribe/read operations as tool definitions compatible with OpenAI function calling, Anthropic tool_use, and any other LLM framework.

Installation

pip install agentrux-agent-tools

Or install from source:

cd plugins/agent-sdk
pip install -e .

Quick Start

1. Create the toolkit

import asyncio
from agentrux_agent_tools import AgenTruxToolkit

async def main():
    toolkit = await AgenTruxToolkit.create(
        base_url="https://api.agentrux.com",
        script_id="your-script-id",
        client_secret="your-client-secret",
    )
    # Or use environment variables:
    # export AGENTRUX_BASE_URL=https://api.agentrux.com
    # export AGENTRUX_SCRIPT_ID=...
    # export AGENTRUX_CLIENT_SECRET=...
    # toolkit = await AgenTruxToolkit.create()

2. Get tool definitions

    # OpenAI format
    tools = toolkit.get_tools()

    # Anthropic format
    tools = toolkit.get_tools_anthropic()

3. Execute tool calls from the LLM

    result = await toolkit.execute("publish_event", {
        "topic_id": "550e8400-e29b-41d4-a716-446655440000",
        "event_type": "chat.message",
        "payload": {"text": "Hello from the agent!"},
    })
    print(result)  # JSON string with event_id

Usage with OpenAI

import openai
from agentrux_agent_tools import AgenTruxToolkit

async def agent_loop():
    toolkit = await AgenTruxToolkit.create()
    client = openai.AsyncOpenAI()

    messages = [{"role": "user", "content": "Publish a greeting event"}]

    response = await client.chat.completions.create(
        model="gpt-4o",
        messages=messages,
        tools=toolkit.get_tools(),
    )

    for tool_call in response.choices[0].message.tool_calls or []:
        import json
        args = json.loads(tool_call.function.arguments)
        result = await toolkit.execute(tool_call.function.name, args)
        messages.append(response.choices[0].message)
        messages.append({
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": result,
        })

    # Continue the conversation with tool results...
    await toolkit.close()

Usage with Claude (Anthropic)

import anthropic
from agentrux_agent_tools import AgenTruxToolkit

async def agent_loop():
    toolkit = await AgenTruxToolkit.create()
    client = anthropic.AsyncAnthropic()

    response = await client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=1024,
        tools=toolkit.get_tools_anthropic(),
        messages=[{"role": "user", "content": "List recent events from my topic"}],
    )

    for block in response.content:
        if block.type == "tool_use":
            result = await toolkit.execute(block.name, block.input)
            # Send result back as tool_result...

    await toolkit.close()

Generic Agent Loop

import json
from agentrux_agent_tools import AgenTruxToolkit

async def generic_agent(llm_call, user_prompt: str):
    """Works with any LLM that supports function calling."""
    async with await AgenTruxToolkit.create() as toolkit:
        tools = toolkit.get_tools()
        messages = [{"role": "user", "content": user_prompt}]

        while True:
            response = await llm_call(messages, tools=tools)

            if not response.tool_calls:
                return response.text

            for call in response.tool_calls:
                result = await toolkit.execute(call.name, call.arguments)
                messages.append({"role": "tool", "content": result})

Available Tools

Tool Description
publish_event Publish a JSON event to a topic. Returns the event_id.
list_events List recent events with optional type filter.
get_event Retrieve a single event by ID.
wait_for_event Wait for the next event via SSE (with timeout).

Environment Variables

Variable Description
AGENTRUX_BASE_URL Server URL
AGENTRUX_SCRIPT_ID Script identifier
AGENTRUX_CLIENT_SECRET Client Secret
AGENTRUX_INVITE_CODE Optional invite code for cross-Domo (cross-account) access

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

agentrux_agent_tools-0.3.0b1.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

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

agentrux_agent_tools-0.3.0b1-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file agentrux_agent_tools-0.3.0b1.tar.gz.

File metadata

  • Download URL: agentrux_agent_tools-0.3.0b1.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for agentrux_agent_tools-0.3.0b1.tar.gz
Algorithm Hash digest
SHA256 3169d6326330b2d291edea4dfde4eb975528df9afd60fac2efda106ad49eac02
MD5 7cf3f90f151cd270d00e51b429ecfc36
BLAKE2b-256 6f7a4eaf4a600307236c40576a04210bd7f0b18fa8dc644912978b638b08d1cc

See more details on using hashes here.

File details

Details for the file agentrux_agent_tools-0.3.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for agentrux_agent_tools-0.3.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 e4bc1edf5c90049565caf0dc13923023d527167b64ec203e1553db521d331e9c
MD5 12f67bae40ee9d33fce31f9c45f2c3fc
BLAKE2b-256 ee9a1488e6ecc6e24170f56a468d3c4c6a9c798182d028feb45a35d0bd1f0bbb

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