ChatGPTのAPIをPerlで叩く方法
2023/04/09 10:00
category:Perl
ChatGPTに直接聞いてみたら、なんか古い方法しかでてこなかったので。
適当にやったんで細かいところは確認してないです。
あと他にパラメータがある様子なんですが、ちょっといじっても変化がよくわからなかったので省きました。
言語モデルはgpt-3.5-turboパターンです。
LWP::UserAgentとlwp::protocol::httpsが必要ですがそこらへんは割愛します。
会話を続けるには、やり取りの経緯をroleをつかって全て入力する必要があります。
面白いので、またちまちま何かしてみようかと思います。
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
use Encode;
use utf8;
my $API_KEY = "取得したAPIキー";
my $input = "こんにちは、あなたは誰ですか。";
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(
POST => 'https://api.openai.com/v1/chat/completions'
);
$req->header('Content-Type' => 'application/json');
$req->header('Authorization' => 'Bearer ' . $API_KEY);
my %post_data = (
"model" => "gpt-3.5-turbo",
"messages" => [
{
"role" => "user",
"content" => $input,
}
],
);
$req->content(encode_json(\%post_data));
my $resp = $ua->request($req);
if ($resp->is_success) {
my $resp_data = decode_json($resp->decoded_content);
print Encode::encode('utf-8',$resp_data->{choices}->[0]->{message}->{content}."\n");
my $tokens = $resp_data->{usage}->{total_tokens};
print Encode::encode('utf-8',"使用トークン数:".$tokens."\n");
} else {
die $resp->status_line;
}
↓
実行結果)
こんにちは、私はOpenAIのAIアシスタントです。どうぞ何でもおっしゃってください。
使用トークン数:48