Shingoの数学ノート

プログラミングと機械学習のメモ

SASでOPENAI APIを使う

最近OpenAI APIの利用が可能になったということでSASで実行してみました。

OPENAI APIを登録する

まずはhttps://openai.com/productの「get started」をクリックしてアカウントを作成します。

次に、https://platform.openai.com/account/api-keysの「+Create new secret key」をクリックし、 secret keyをメモします。このkeyを使ってOpenAI APIを呼び出します。

SASでOPENAI APIを実行する

早速SASでOpenAI APIを使用してみましょう。まずはAPIを呼び出すためのマクロ登録から。PROC HTTPを使ってAPIを叩きます。

参考にさせていただいたブログはこちら

sas
%macro CHATGPT(text,outdata,api_key);
  /* POST requestのBody作成 */
  filename in temp;
  data _null_;
    file in;
    a = '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content":'|| "&text." ||'}]}';
    put a;
  run;
  /* PROC HTTP を使ってAPIを叩く */
  filename resp "%sysfunc(getoption(WORK))/echo.json";
  proc http
    method="POST"
    url="https://api.openai.com/v1/chat/completions"
    ct="application/json"
    in=in
    out=resp;
    headers "Authorization" = "Bearer &api_key.";
  run;
  
  /* 出力されたJSONをresponseライブラリに設定 */
  libname response JSON fileref=resp;
  
  /* データを見やすく整形*/
  data &outdata. ;
    set response.choices_message;
    do row=1 to max(1,countw(content,"0A"x));
      outvar=scan(content,row,"0A"x);
      output;
    end;
    drop content;
  run;
%mend;

実際に実行します。「今日はいい天気ですね」を入力にしています。

sas
%let api_key= <APIKEY>;
%let text = %str(%"今日は良い天気ですね。%");
%let outdata = outdata;

%CHATGPT(&text.,&outdata.,&api_key);

proc print data=outdata;
  var role outvar;
run;

結果

うまくいってますね!

OPENAI APIでコード説明

もうちょっと有用な使い方を考えてみます。

例えばプログラムの説明が欲しい場合は以下のようにすれば良さそうです。

sas
/* プログラムを登録 */
%macro code;
  data aaa;
    a=10;
  run;
%mend;
/* プログラムを実行 */
%code;
/* OpenAI APIを実行 */
%let text = %str(%"次のSASコードの説明を書いてください。%QUOTE(%code)%");
%CHATGPT(&text.,&outdata.,&api_key);
/* 結果を出力 */
proc print data=outdata;
  var role outvar;
run;

結果

まとめ

今回はOpenAI APIを使ってみました。

ChatGPTはプログラムとの親和性は高いと思っているので、何か有用な使い方を見つけていきたいです。

Comments

Loading comments...