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-Alias (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.4.0b1.tar.gz (19.6 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.4.0b1-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: agentrux_agent_tools-0.4.0b1.tar.gz
  • Upload date:
  • Size: 19.6 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.4.0b1.tar.gz
Algorithm Hash digest
SHA256 195821b5d9834d80a6d40c9b58d945c1680f31ca0edab44f8b8ccf75e5441858
MD5 644fb92e8de098c961a343301ce90624
BLAKE2b-256 947e40684dcbbff55383fd99e7a6034e090053d198600a870cd18dcbc88dc123

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for agentrux_agent_tools-0.4.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 61dfa429f09d9e6dfcf5c34341e354866059e8506e116a75a64feea5d247d6f8
MD5 f9261da71e4df73dfab4f1b06850e8bc
BLAKE2b-256 b43fc41609f6639732c0feb9c662046da0c6922a3d23ada8ed93b208e3460828

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