Skip to main content

Testing framework for LLM tool-call accuracy — audio & text

Project description

russo

Testing framework for LLM tool-call accuracy — audio & text

PyPI version Supported Python versions CI License


Documentation: https://mohit2152sharma.github.io/russo

Source Code: https://github.com/mohit2152sharma/russo


russo is a testing framework for verifying that LLM agents make the correct tool calls when given audio (or text) input. Think of it as pytest for voice AI tool-calling accuracy.

Key Features

  • Provider-agnostic — works with Gemini, OpenAI, or any custom agent via protocols
  • Audio-first — synthesize text prompts to audio, send to your agent, evaluate tool calls
  • pytest integration — use markers, fixtures, and familiar test patterns
  • Built-in caching — skip TTS on repeated runs, saving time and money
  • Extensible — swap synthesizers, agents, evaluators, and parsers via structural typing

Quick Start

pip install russo

With optional providers:

pip install "russo[openai]"    # OpenAI support
pip install "russo[ws]"        # WebSocket agents
pip install "russo[all]"       # Everything

Minimal Example

import russo
from russo.synthesizers import GoogleSynthesizer
from russo.adapters import GeminiLiveAgent
from russo.evaluators import ExactEvaluator

result = await russo.run(
    prompt="Book a flight from Berlin to Rome for tomorrow",
    synthesizer=GoogleSynthesizer(api_key="..."),
    agent=GeminiLiveAgent(api_key="...", tools=[...]),
    evaluator=ExactEvaluator(),
    expect=[
        russo.tool_call("book_flight", from_city="Berlin", to_city="Rome"),
    ],
)

russo.assert_tool_calls(result)

pytest Integration

import pytest
import russo

@pytest.mark.russo(
    prompt="Book a flight from NYC to LA",
    expect=[russo.tool_call("book_flight", from_city="NYC", to_city="LA")],
)
async def test_book_flight(russo_result):
    russo.assert_tool_calls(russo_result)

License

This project is licensed under the terms of the MIT license.

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

russo-0.3.0.tar.gz (130.8 kB view details)

Uploaded Source

Built Distribution

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

russo-0.3.0-py3-none-any.whl (38.7 kB view details)

Uploaded Python 3

File details

Details for the file russo-0.3.0.tar.gz.

File metadata

  • Download URL: russo-0.3.0.tar.gz
  • Upload date:
  • Size: 130.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for russo-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5728ef2f6c7d4dca30f15d26daa4710db0f978d52d180bdd1ddeb1cbbe13d507
MD5 20352ced9c9d1942af68876b980a133a
BLAKE2b-256 1dc0470e82c8e14fa5ad7944b0034d54846a43b1fb9a9d61f0206c8d86ce92cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for russo-0.3.0.tar.gz:

Publisher: publish.yml on mohit2152sharma/russo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file russo-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: russo-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 38.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for russo-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f61941cdf11fcd8d18e93cca79f502a6c2c760ee4f1753422616dc1b71dc5097
MD5 830620f083b461f81c9bf268eea5dd20
BLAKE2b-256 9620d872a7f6a1369c785cb26c2924da4d2b2724d6c41ae1434ce98ace77edef

See more details on using hashes here.

Provenance

The following attestation bundles were made for russo-0.3.0-py3-none-any.whl:

Publisher: publish.yml on mohit2152sharma/russo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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