SASとOPENAI APIを使ってアキネイタークイズをつくった
お久しぶりです。前回からすごい空いてしまいましたが、ネタを思いついたので書いていきます。
僕は最近よくYoutubeのShortで1分間アキネイターやってるのをみて、自分もめっっっっちゃやりたくなります。
でも僕にはやってくれる友達がいません。
ということで、SASとOpenAI APIを使って一人でできるアキネイタークイズを作っていきます。
OPENAI APIを登録する(まだAPIを持っていない人向け)
まずはhttps://openai.com/productの「get started」をクリックしてアカウントを作成します。
次に、https://platform.openai.com/account/api-keysの「+Create new secret key」をクリックし、 secret keyをメモします。このkeyを使ってOpenAI APIを呼び出します。

アキネイターマクロを読み込む
Akinator.sasをダウンロードしておきます。
上記では下記のマクロを定義しています。全部説明するのは大変なので、概要だけ書いておきます。
- reset_answer:
プロシジャ名をリセットするためのマクロ。入力パラメータはapi_key、model、add_text であり、add_textで難易度調整などができる。 最初は候補をデータからランダムに選択させようと思ったが、めんどくさかったのでOpenAI APIに投げた。 - akinator:
アキネイタークイズの実行マクロ。入力パラメータはtext,history_ds,api_key,past_num,modelであり、textに質問を入れて答えに近づけていく。 modelはgpt-3.5-turboのほうが安いが、言いつけを守ってくれないので、ちゃんと遊ぶならgpt-4-turbo-preview推奨。
アキネイタークイズをプレイ
実際にプレイしていきましょう。下記のように実行します。
%include "Akinator.sas";
/* APIキーの設定 */
%let api_key= ***;
/* クイズのリセットと開始 */
%reset_answer(&api_key.,add_text="難易度は簡単でお願いします。");
%let text = それは集計で使用しますか?;
%akinator(&text.,history_ds,&api_key.);
add_textに難易度をいれれば、それに合わせてOpenAI APIが答えを調整してくれます。
textには質問を入れ、答えるときは、「答えは〜です」というように答えます。2回目以降はreset_answerを動かさずに、%let text=と%akinatorのみを実行していきます。

ま、余裕っすね。
ということで、add_textに「難易度は難し目でお願いします」と設定して再チャレンジ。

全く歯が立たず… ちなみに、マクロ変数「answer」に答えが入っているので、%putをすることで答えを確認できます。(このときはPLSでした。聞いたことないので精進します。)
まとめ
SASとOpenAI APIを使ってアキネイターを作ってみました。SASのプロシジャ自信ある人は遊んでみてね。
個人的に遊ぶ分にはコストはそこまでかからないはずだけど、確認はしておいたほうがいいと思います。
Comments
Loading comments...