Langertha
view release on metacpan or search on metacpan
lib/Langertha/Engine/Ollama.pm view on Meta::CPAN
my $r = $_;
{
role => 'tool',
content => $self->json->encode($r->{result}{content}),
}
} @$results
);
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Langertha::Engine::Ollama - Ollama API
=head1 VERSION
version 0.502
=head1 SYNOPSIS
use Langertha::Engine::Ollama;
my $ollama = Langertha::Engine::Ollama->new(
url => $ENV{OLLAMA_URL},
model => 'llama3.3',
system_prompt => 'You are a helpful assistant',
context_size => 2048,
temperature => 0.5,
);
print $ollama->simple_chat('Say something nice');
my $embedding = $ollama->embedding($content);
# Get OpenAI-compatible API access to Ollama
my $ollama_openai = $ollama->openai;
# List available models
my $models = $ollama->simple_tags;
# Show running models
my $running = $ollama->simple_ps;
=head1 DESCRIPTION
Provides access to Ollama, which runs large language models locally. Ollama
supports many popular open-source models including C<llama3.3> (default),
C<qwen2.5>, C<deepseek-coder-v2>, C<mixtral>, and C<mxbai-embed-large>
(default embedding model).
Supports chat, embeddings, streaming, MCP tool calling (OpenAI-compatible
format), and an OpenAI-compatible API via L</openai>. Not all models support
tool calling; known working models include C<qwen3:8b> and C<llama3.2:3b>.
For Hermes-format tool calling in models without API-level tool support,
compose L<Langertha::Role::HermesTools>. See L<Langertha::Role::HermesTools>
for details.
B<THIS API IS WORK IN PROGRESS>
=head2 openai
my $oai = $ollama->openai;
my $oai = $ollama->openai(model => 'different_model');
Returns a L<Langertha::Engine::OllamaOpenAI> instance configured for Ollama's
C</v1> OpenAI-compatible endpoint, inheriting the current model, embedding
model, system prompt, and temperature settings. Supports streaming, embeddings,
and MCP tool calling.
=head2 new_openai
my $oai = Langertha::Engine::Ollama->new_openai(
url => 'http://localhost:11434',
model => 'llama3.3',
tools => \@mcp_tools,
);
Class method. Constructs a native Ollama engine and immediately returns an
L<Langertha::Engine::OllamaOpenAI> instance from its C<openai()> method.
The optional C<tools> list is passed to C<openai()>.
=head2 json_format
When set to a true value, passes C<format => 'json'> to the Ollama API,
requesting JSON-formatted output from the model. Defaults to C<0>.
=head2 tags
my $request = $ollama->tags;
Returns an HTTP request object for the Ollama C<GET /api/tags> endpoint.
Execute it with C<simple_tags> or pass it to an async HTTP client.
=head2 simple_tags
my $models = $ollama->simple_tags;
# Returns: [{name => 'llama3.3', model => 'llama3.3', ...}, ...]
Synchronously fetches and returns the list of locally available models from
the Ollama C</api/tags> endpoint. Also updates the engine's C<models> list.
=head2 ps
my $request = $ollama->ps;
Returns an HTTP request object for the Ollama C<GET /api/ps> endpoint which
lists currently loaded (running) models.
=head2 simple_ps
my $running = $ollama->simple_ps;
# Returns: [{name => 'llama3.3', ...}, ...]
Synchronously fetches and returns the list of models currently loaded in
Ollama's memory from the C</api/ps> endpoint.
=head2 list_models
my $model_ids = $ollama->list_models;
my $models = $ollama->list_models(full => 1);
my $models = $ollama->list_models(force_refresh => 1);
Fetches locally available models from Ollama via L</simple_tags> with caching.
Returns an ArrayRef of model name strings by default, or full model objects
when C<full => 1> is passed. Results are cached for C<models_cache_ttl>
seconds (default: 3600).
( run in 0.637 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )