Changes for version 0.501 - 2026-05-14
- New Langertha::Engine::OpenAIResponses for OpenAI's Responses API (POST /v1/responses) - serves reasoning-only models like gpt-5.5-pro and o3-pro that are not available on the Chat Completions endpoint. Maps input/instructions/output to the same messages/system/choices contract that Langertha::Response expects. Normalises input_tokens/output_tokens and output_tokens_details.reasoning_tokens to the chat-style names Goldmine's cost lookup expects. Streaming not supported.
- Langertha::ToolCall gained from_responses() constructor for extracting tool calls from Responses API output[type=message].content[type=function_call] blocks. ToolCall::extract now also searches the Responses output array when the chat-completions path finds nothing.
- Langertha::ToolChoice gained to_responses() serializer: type => 'function', name => N for named tool forcing, plain strings for auto/none/required.
- Langertha::Tool gained to_responses() serializer: flat {type, name, description, parameters} object (no nested {type:'function', function: ... } wrapper).
- New test: t/60_responses_requests.t - 17 tests covering engine creation, request building, response parsing, tool call extraction, and format conversions for the Responses API path.
Documentation
Simple chat with Ollama
Simple chat with OpenAI
Simple script to check the model list on an OpenAI compatible API
Simple transcription with a Whisper compatible server or OpenAI
Modules
The clan of fierce vikings with 🪓 and 🛡️ to AId your rAId
Chat abstraction wrapping an engine with optional overrides
Base role for canonical multimodal content blocks with cross-provider serialization
Canonical image content block with cross-provider conversion (OpenAI / Anthropic / Gemini)
Immutable value object for the monetary cost of a single LLM call
Embedding abstraction wrapping an engine with optional model override
AKI.IO native API
AKI.IO via OpenAI-compatible API
Anthropic API
Base class for Anthropic-compatible engines
Cerebras Inference API
DeepSeek API
Google Gemini API
GroqCloud API
HuggingFace Inference Providers API
LM Studio native REST API
LM Studio via Anthropic-compatible API
LM Studio via OpenAI-compatible API
llama.cpp server
MiniMax API (OpenAI-compatible)
MiniMax API via Anthropic-compatible endpoint (legacy)
Mistral API
Nous Research Inference API
Ollama API
Ollama via OpenAI-compatible API
OpenAI API
Base class for OpenAI-compatible engines
OpenAI Responses API (reasoning models like gpt-5.5-pro)
OpenRouter API
Perplexity Sonar API
Base class for all remote engines
Replicate API
SGLang inference server
Scaleway Generative APIs
T-Systems AI Foundation Services (LLM Hub)
Base class for OpenAI-compatible transcription-only engines
Whisper compatible transcription server
vLLM inference server
Image generation abstraction wrapping an engine with optional overrides
Request input transformation helpers
Backwards-compat facade over Langertha::Tool / Langertha::ToolChoice
Backwards-compat facade over Langertha::Usage / Pricing / Cost / UsageRecord
Response output transformation helpers
Backwards-compat facade over Langertha::ToolCall
Base class for plugins
Langfuse observability plugin for any PluginHost
Model→price catalog producing Langertha::Cost from Langertha::Usage
Base class for orchestrating Runnable steps
Looping Raid orchestrator
Parallel Raid orchestrator with branched context isolation
Sequential Raid orchestrator
Autonomous agent with conversation history and MCP tools
Result object from a Raider raid
Rate limit information from API response headers
A HTTP Request inside of Langertha
LLM response with metadata
Common result object for Raider and Raid execution
Engine-capability registry derived from composed roles
Role for APIs with normal chat functionality
Role for an engine where you can specify the context size (in tokens)
Role for APIs with embedding functionality
Role for HTTP APIs
Hermes-style tool calling via XML tags
Role for engines that support image generation
Role for JSON
Role for engines that support keep-alive duration
Langfuse observability integration
Role for APIs with several models
Role for OpenAI-compatible API format
Role for APIs with OpenAPI definition
Role for an engine that supports parallel tool calling control
Role for objects that host plugins (Raider, Engine)
Role for an engine where you can specify structured output
Role for an engine where you can specify the response size (in tokens)
Common async execution contract for Raider and Raid nodes
Role for an engine that can set a seed
Role for engines with a hardcoded model list
Role for streaming support
Role for APIs with system prompt
Role for an engine that can have a temperature setting
Configurable think tag filtering for reasoning models
Role for MCP tool calling support
Role for APIs with transcription functionality
Shared execution context for Raid and Raider runs
Pre-computed OpenAPI operations for LM Studio native API
Pre-computed OpenAPI operations for Mistral
Pre-computed OpenAPI operations for Ollama
Pre-computed OpenAPI operations for OpenAI
Iterator for streaming responses
Represents a single chunk from a streaming response
Immutable canonical tool definition with cross-provider format conversion
Immutable canonical tool invocation emitted by an LLM
Immutable canonical tool-selection policy with cross-provider conversion
Immutable value object for LLM token usage with cross-provider conversion
Tagged ledger entry combining Usage, Cost, and request metadata
Bring your own viking!
Examples
- ex/async_await.pl
- ex/ctx.pl
- ex/embedding.pl
- ex/hermes_tools.pl
- ex/ircbot.pl
- ex/json_grammar.pl
- ex/langfuse-k8s.yaml
- ex/langfuse.pl
- ex/logic.pl
- ex/mcp_inprocess.pl
- ex/mcp_stdio.pl
- ex/ollama.pl
- ex/ollama_image.pl
- ex/raider.pl
- ex/raider_plugin_sugar.pl
- ex/raider_rag.pl
- ex/raider_run.pl
- ex/response.pl
- ex/sample.ogg
- ex/streaming_anthropic.pl
- ex/streaming_callback.pl
- ex/streaming_future.pl
- ex/streaming_gemini.pl
- ex/streaming_iterator.pl
- ex/streaming_mojo.pl
- ex/structured_code.pl
- ex/structured_output.pl
- ex/structured_sentences.pl
- ex/synopsis.pl
- ex/transcription.pl