Shingoの数学ノート

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

SASでChatGPTを使う

日付:    カテゴリ: SAS


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

ChatGPTでAPIを登録する

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

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

SASでChatGPTを実行する

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

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

%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;

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

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

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

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

うまくいってますね!

ChatGPTでコード説明

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

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

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

まとめ

今回は流行りに乗ってChatGPTのAPIを使ってみました。

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


Comment Box is loading comments...