URLをコピーしました!
スキルアップを始める!

【GAS】gpt-3.5-turboのAPIパラメータ取得ではまった

GAS(GoogleAppsScript)

Exception: https://api.line.me のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {“message”:”The request body has 1 error(s)”,”details”:[{“message”:”May not be empty”,”property”:”messages[0].text”}]}(応答の全文を見るには muteHttpExceptions オプションを使用してください)

何度実行してもエラーが表示されたので残します。

GPT-3.5 TurboのAPIパラメータとは?

GPT-3.5 TurboのAPIパラメータとは、GPT-3.5 Turboとのやりとりに使用されるパラメータのことを指します。こ

れには、APIキー、エンドポイント、リクエストの種類、ヘッダー情報、パラメータ値などが含まれます。GPT-3.5 TurboのAPIパラメータを正しく設定することで、APIリクエストを正常に送信し、適切なレスポンスを取得することができます。

元コード(OpenAIのパラメータ)

OpenAIのパラメータを取得してdoPASTを何度実行しても、冒頭のエラーが表示されてしまいました。

  const openAiParams = {
    "headers": {
      "Authorization": "Bearer " + OPEN_AI_KEY,
      "Content-type": "application/json",
      "X-Slack-No-Retry": 1
    },
    "method": "POST",
    "payload": JSON.stringify({
        "model": "gpt-3.5-turbo",
        "max_tokens": 2048,
        "temperature": 1.0,
        "messages": [
          {
            "role": "user",
            "content": userMessage
          }
        ]
      })
  };

const replyMessage = response.choices[0].text;

muteHttpExceptions

エラーの記載にあった”muteHttpExceptions”オプションとは?

muteHttpExceptionstrue に設定することで、HTTP リクエストが失敗した場合、スクリプトは例外をスローしません。 代わりに、リクエストが成功したかどうかを判断するために調べることができるレスポンス オブジェクトを返します。

下記のようにパラメータに追加することで、例外をスローせずに処理続行できるようです。

"muteHttpExceptions": true,

true の場合、レスポンス コードが失敗を示している場合、取得は例外をスローせず、代わりに HTTPResponse を返します。デフォルトは false です。

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app?hl=ja

改良後のコード

[rml_read_more]

  const openAiParams = {
    "headers": {
      "Authorization": "Bearer " + OPEN_AI_KEY,
      "Content-type": "application/json"
    },
    "muteHttpExceptions": true,
    "method": "POST",
    "payload": JSON.stringify({
      "model": "gpt-3.5-turbo",
      "max_tokens": 2048,
      "temperature": 1.0,
      "messages": [
        {
          "role": "user",
          "content": userMessage
        }
      ]
    })
  };

  // const replyMessage = response.choices[0].text;
  const replyMessage = response.choices[0].message.content;

GPT-3.5 TurboのAPIパラメータでは、返り値を取り出す時に、.textではなく.contentで取得できるようになっているようです。

おそらく、この部分でエラーになっていたようです。

実行できました!

まとめ

GPT-3.5 Turboは、最新の人工知能技術を採用した言語処理ツールであり、APIを使用して外部アプリケーションと連携することができます。

使用には注意も必要ですが、工夫次第で便利に使えそうです。色々とお試しください。

会員登録するとご利用できます。
Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら