Skip to content

HTTP Adapter

HTTP agent adapter — sends audio to an API endpoint.

http

HTTP agent adapter — sends audio to an API endpoint.

HttpAgent

HttpAgent(*, url: str, parser: ResponseParser | None = None, method: str = 'POST', headers: dict[str, str] | None = None, audio_field: str = 'audio', format_field: str = 'format', timeout: float = 60.0)

Agent adapter that sends audio to an HTTP endpoint.

Sends audio as base64-encoded JSON and parses the response using an optional ResponseParser.

Usage

agent = HttpAgent( url="http://localhost:8000/voice-agent", parser=russo.parsers.GeminiResponseParser(), ) response = await agent.run(audio)

Source code in src/russo/adapters/http.py
def __init__(
    self,
    *,
    url: str,
    parser: ResponseParser | None = None,
    method: str = "POST",
    headers: dict[str, str] | None = None,
    audio_field: str = "audio",
    format_field: str = "format",
    timeout: float = 60.0,
) -> None:
    self.url = url
    self.parser = parser
    self.method = method
    self.headers = headers or {}
    self.audio_field = audio_field
    self.format_field = format_field
    self.timeout = timeout

run async

run(audio: Audio) -> AgentResponse

Send audio to the HTTP endpoint and parse the response.

Source code in src/russo/adapters/http.py
async def run(self, audio: Audio) -> AgentResponse:
    """Send audio to the HTTP endpoint and parse the response."""
    payload = {
        self.audio_field: base64.b64encode(audio.data).decode("ascii"),
        self.format_field: audio.format,
    }

    raw_response = await self._send(payload)

    if self.parser:
        return self.parser.parse(raw_response)

    return self._default_parse(raw_response)