Changes for version 0.304 - 2026-03-07
- New role: Langertha::Role::HermesTools — extracted Hermes-style XML tool calling into a dedicated role. Engines compose this role instead of setting a hermes_tools flag. Cleaner polymorphic dispatch: Role::Tools provides the tool loop and default native API path, HermesTools overrides build_tool_chat_request to inject tools into the system prompt.
- Role::Tools cleaned up: removed all hermes branching, private _hermes_* methods, and hermes_tools attribute. Five polymorphic methods (format_tools, response_tool_calls, extract_tool_call, format_tool_results, response_text_content) are now provided by either the engine (native) or HermesTools (XML).
- AKI.pm (native API): added tool calling support via HermesTools role with hermes_extract_content override for AKI's response format.
- AKIOpenAI.pm: composes HermesTools role (replaces hermes_tools flag).
- NousResearch.pm: composes HermesTools role (replaces hermes_tools flag).
- Raider and Chat: simplified tool loop — removed all hermes if/else branching, uses polymorphic build_tool_chat_request.
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
Embedding abstraction wrapping an engine with optional model override
AKI.IO native API
AKI.IO via OpenAI-compatible API
Anthropic API
Cerebras Inference API
DeepSeek API
Google Gemini API
GroqCloud API
HuggingFace Inference Providers API
llama.cpp server
MiniMax API (Anthropic-compatible)
Mistral API
Nous Research Inference API
Ollama API
Ollama via OpenAI-compatible API
OpenAI API
Base class for OpenAI-compatible engines
OpenRouter API
Perplexity Sonar API
Base class for all remote engines
Replicate API
Whisper compatible transcription server
vLLM inference server
Image generation abstraction wrapping an engine with optional overrides
Base class for plugins
Langfuse observability plugin for any PluginHost
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
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 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)
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
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
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