スポンサーリンク

GASでOPENAI APIのJSON_MODEを利用するためのコード(文章などを指定の形式にできる)

未分類
スポンサーリンク

早速コードです

function json_mode(text) {
  // OpenAIのAPIキーを取得
  var apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API');
  var url = 'https://api.openai.com/v1/chat/completions';

  // APIリクエストのペイロードを作成
  var payload = {
    messages: [
      { 
        role: "system", 
        content: 'あなたは入力された文章から質問を抽出して要約し、json形式で返すChatBOTとして振る舞ってください\
    入力される文章とそれに対するjsonの生成例を以降の文章に入力しますので、参考にしてください。\
    入力文:「質問!来週暇なんだけど、週末におすすめのカフェはある?あと、最近の流行ファッションが知りたいから教えてよ。カフェに行くときに着たいなーって思って。ところで、あんたの名前って?」\
    json形式{"questions": [{"question":"週末におすすめのカフェはありますか?"}{"question":"最近の流行ファッションはなんですか?"}{"question":"あなたの名前はなんですか?"}}\
    入力文:「質問!カニの味を知っていますか?」\
    json形式{"questions": [{"question":"カニの味を知っていますか?"}}\
    入力文:「質問!私は人間です。」\
    json形式{"questions": [{"question":"質問無し"}}\
    質問として認識できる文章が存在しない場合は、{"question":"質問無し"}}と返してください'
      },
      { 
        role: "user", 
        content: text 
      }
    ],
    model: "gpt-3.5-turbo-1106",
  };

  // APIリクエストのオプションを設定
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload),
    'headers': {
      'Authorization': 'Bearer ' + apiKey
    }
  };

  // OpenAIのAPIにリクエストを送信し、応答を取得
  var response = UrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText());

  return result; // JSON形式の応答を返す
}

これを実行すると、

“content”:”{\”questions\”: [{\”question\”:\”週末におすすめのカフェはありますか?\”}{\”question\”:\”最近の流行ファッションはなんですか?\”}]}”}

みたいに返ってきます

以下のコードみたいにしたら、関数自体がスッキリさせられそうですね

var json_system = 'あなたは入力された文章から質問を抽出して要約し、json形式で返すChatBOTとして振る舞ってください\
    入力される文章とそれに対するjsonの生成例を以降の文章に入力しますので、参考にしてください。\
    入力文:「質問!来週暇なんだけど、週末におすすめのカフェはある?あと、最近の流行ファッションが知りたいから教えてよ。カフェに行くときに着たいなーって思って。ところで、あんたの名前って?」\
    json形式{"questions": [{"question":"週末におすすめのカフェはありますか?"}{"question":"最近の流行ファッションはなんですか?"}{"question":"あなたの名前はなんですか?"}}\
    入力文:「質問!カニの味を知っていますか?」\
    json形式{"questions": [{"question":"カニの味を知っていますか?"}}\
    入力文:「質問!私は人間です。」\
    json形式{"questions": [{"question":"質問無し"}}\
    質問として認識できる文章が存在しない場合は、{"question":"質問無し"}}と返してください'

text = "なにかしらのてきすと"
function json_output(text,json_system) {
  // OpenAIのAPIキーを取得
  var apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API');
  var url = 'https://api.openai.com/v1/chat/completions';

  // APIリクエストのペイロードを作成
  var payload = {
    messages: [
      { 
        role: "system", 
        content: json_system},
      { 
        role: "user", 
        content: text 
      }
    ],
    model: "gpt-3.5-turbo-1106",
  };

  // APIリクエストのオプションを設定
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload),
    'headers': {
      'Authorization': 'Bearer ' + apiKey
    }
  };

  // OpenAIのAPIにリクエストを送信し、応答を取得
  var response = UrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText());

  return result; // JSON形式の応答を返す
}

コメント

タイトルとURLをコピーしました