AI-Anthropic
view release on metacpan or search on metacpan
## Synopsis
```perl
use AI::Anthropic;
my $claude = AI::Anthropic->new(
api_key => 'sk-ant-api03-your-key-here',
);
# Simple message
print $claude->message("What is the meaning of life?");
# With system prompt
my $response = $claude->chat(
system => 'You are a helpful Perl programmer.',
messages => [
{ role => 'user', content => 'How do I read a file?' },
],
);
print "Response: ", $response->text, "\n";
print "Tokens: ", $response->total_tokens, "\n";
```
## Installation
From CPAN:
```bash
cpanm AI::Anthropic
```
## Quick Start
```perl
use AI::Anthropic;
my $claude = AI::Anthropic->new(
api_key => 'sk-ant-api03-your-key-here',
);
print $claude->message("Hello!");
```
## Streaming
```perl
$claude->chat(
messages => [ { role => 'user', content => 'Tell me a story' } ],
stream => sub {
my ($chunk) = @_;
print $chunk;
STDOUT->flush;
},
);
```
## Vision (Images)
```perl
# From file
my $response = $claude->chat(
$response->text; # Response text
$response->model; # Model used
$response->stop_reason; # Why generation stopped
$response->input_tokens; # Tokens in prompt
$response->output_tokens; # Tokens in response
$response->total_tokens; # Total tokens
$response->raw_response; # Full API response hashref
# Stringifies to text
print "$response";
```
## Configuration
```perl
my $claude = AI::Anthropic->new(
api_key => 'sk-ant-...', # or use ANTHROPIC_API_KEY env
model => 'claude-opus-4-20250514', # default: claude-sonnet-4-20250514
max_tokens => 8192, # default: 4096
timeout => 300, # default: 120 seconds
examples/basic.pl view on Meta::CPAN
say "\n4. Streaming:";
say "-" x 30;
say "Streamed response: ";
$claude->chat(
messages => [
{ role => 'user', content => 'Count from 1 to 5, one number per line.' },
],
stream => sub {
my ($chunk) = @_;
print $chunk;
},
);
say "\n";
say "=" x 50;
say "Done!";
lib/AI/Anthropic.pm view on Meta::CPAN
=head1 SYNOPSIS
use AI::Anthropic;
my $claude = AI::Anthropic->new(
api_key => 'sk-ant-api03-your-key-here',
);
# Simple message
my $response = $claude->message("What is the capital of France?");
print $response; # prints response text
# Chat with history
my $response = $claude->chat(
messages => [
{ role => 'user', content => 'Hello!' },
{ role => 'assistant', content => 'Hello! How can I help you today?' },
{ role => 'user', content => 'What is 2+2?' },
],
);
lib/AI/Anthropic.pm view on Meta::CPAN
messages => [
{ role => 'user', content => 'How do I read a file?' },
],
);
# Streaming
$claude->chat(
messages => [ { role => 'user', content => 'Tell me a story' } ],
stream => sub {
my ($chunk) = @_;
print $chunk;
},
);
=head1 DESCRIPTION
AI::Anthropic provides a Perl interface to Anthropic's Claude API.
It supports all Claude models including Claude 4 Opus, Claude 4 Sonnet,
and Claude Haiku.
=head1 METHODS
lib/AI/Anthropic.pm view on Meta::CPAN
return bless $self, $class;
}
=head2 message
Simple interface for single message:
my $response = $claude->message("Your question here");
my $response = $claude->message("Your question", system => "You are helpful");
print $response->text;
=cut
sub message {
my ($self, $content, %opts) = @_;
croak "Message content required" unless defined $content;
return $self->chat(
messages => [ { role => 'user', content => $content } ],
lib/AI/Anthropic.pm view on Meta::CPAN
__END__
=head1 EXAMPLES
=head2 Basic usage
use AI::Anthropic;
my $claude = AI::Anthropic->new;
print $claude->message("Hello, Claude!");
=head2 With image (vision)
my $response = $claude->chat(
messages => [
{
role => 'user',
content => [
{ type => 'text', text => 'What is in this image?' },
{ type => 'image', path => '/path/to/image.jpg' },
lib/AI/Anthropic.pm view on Meta::CPAN
},
],
);
=head2 Streaming
$claude->chat(
messages => [ { role => 'user', content => 'Tell me a story' } ],
stream => sub {
my ($chunk) = @_;
print $chunk;
STDOUT->flush;
},
);
=head1 ENVIRONMENT
=over 4
=item ANTHROPIC_API_KEY
( run in 3.459 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )