-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLLMCaller.pm
41 lines (34 loc) · 1010 Bytes
/
LLMCaller.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package LLMCaller;
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw(GET POST);
use URI::Escape;
sub new {
my ($class, %args) = @_;
my $self = bless {}, $class;
$self->{base_url} = $args{base_url};
$self->{ua} = LWP::UserAgent->new;
return $self;
}
sub set_params {
my ($self, %params) = @_;
$self->{params} = \%params;
}
sub get {
my $self = shift;
my $url = $self->{base_url} . '/ask?' . $self->_build_query_string;
my $response = $self->{ua}->request(GET $url);
return $response->is_success ? $response->decoded_content : undef;
}
sub post {
my $self = shift;
my $url = $self->{base_url} . '/ask';
my $response = $self->{ua}->request(POST $url, Content => $self->_build_query_string);
return $response->is_success ? $response->decoded_content : undef;
}
sub _build_query_string {
my $self = shift;
return join '&', map { uri_escape($_) . '=' . uri_escape($self->{params}{$_}) } keys %{$self->{params}};
}
1;