はじめに

ChatGPTのAPI(Chat Completions API)は、強力な自然言語処理モデルを利用して、対話型のアプリケーションやサービスを構築するための便利なツールです。

この記事では、ChatGPTのAPIをサービスに組み込む際の「3つ」のヒントを紹介します。

1. システムに役割を与える

システムに役割を設定すると、より現実的な会話ができます。例えば、「あなたは占い師です」とシステムに伝えると、システムが占い師として返答してくれます。

roleパラメータにsystemを指定することでシステムに役割を与えられます。

システムに「占い師」としての役割を指定するため、リクエストパラメータのmessagesの最初に下記のようなパラメータを加えます。

{"role": "system", "content": "あなたは占い師です。ユーザーに適切なアドバイスをしてください。"}

例:

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 1,
     "temperature": 0.7,
     "messages": [{"role": "system", "content": "あなたは占い師です。ユーザーに適切なアドバイスをしてください。"}, {"role": "user", "content": "今日の運勢を教えてください。"}]
   }'

レスポンス一部抜粋
"message": {
  "role": "assistant",
  "content": "こんにちは!あなたの運勢を占ってみましょう。今日はあなたにとって良い日になるでしょう。運気が高まり、新たなチャンスや幸運がやってきます。しかし、注意点もあります。思いがけない変化や課題が現れるかもしれません。それらに対応するために、冷静な判断力と柔軟性を持って行動してください。また、自分自身のニーズや欲求にも目を向けることが大切です。自己ケアやリラックスする時間を作り、心身のバランスを保つことをおすすめします。最後に、周りの人々とのコミュニケーションを大切にすることも忘れずに。良い日になるはずですので、積極的に行動し、ポジティブなエネルギーを持ち続けてください!"
},

`role: system`を使わずに運勢を聞いた場合のレスポンスは以下のようになります。

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 1,
     "temperature": 0.7,
     "messages": [{"role": "user", "content": "今日の運勢を教えてください。"}]
   }'

レスポンス一部抜粋
"message": {
  "role": "assistant",
  "content": "申し訳ありませんが、私は人工知能の言語モデルであり、運勢を予測する能力はありません。運勢は個人の信念や思考パターンによっても異なるため、信じるかどうかはあなた次第です。"
},

システムに役割を設定した方は「占い師」として自然な会話をしていることがわかります。

2. 会話の途中で自らテキストを書き換える

会話の途中でテキストを書き換えることができます。これにより、柔軟な会話を作り出すことができます。以前の会話の文脈を保持したり、ChatGPT自体が応答を生成する部分と組み合わせたりするなど、様々な使い方が考えられます。特に、サービスやロールプレイにおいて便利な手法です。例えば、ユーザーが会話の開始部分を自由に設定することができます。

例として、リクエストパラメータのmessagesでuserの発言の前に次のようなパラメータを追加します。

{"role": "assistant", "content": "今日は何について占いますか?金運、仕事運、恋愛運の中から選んでください。"}

元々は`role: assistant`にChatGPTの返答を入力することで、以前の文脈を保ったまま会話を続けることができますが、`role: assistant`のcontentを自由に書き換えることで、ChatGPTが発言したかのように振る舞うことができます。

この例では、会話の冒頭に`role: assistant`で「今日は何について占いますか?」と入力することで、ChatGPT側から会話を始めたかのように振る舞わせています。

例:

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 1,
     "temperature": 0.7,
     "messages": [{"role": "system", "content": "あなたは占い師です。ユーザーに適切なアドバイスをしてください。"}, {"role": "assistant", "content": "今日は何について占いますか?金運、仕事運、恋愛運の中から選んでください。"}, {"role": "user", "content": "金運について教えてください。"}]
   }'

レスポンス一部抜粋
"message": {
  "role": "assistant",
  "content": "金運についてのアドバイスをいたしますね。\n\nまずは自分の財務状況を整理しましょう。収入と支出を詳細に把握し、無駄な出費を減らすことが大切です。また、貯金をする習慣を身につけることもおすすめです。\n\n次に、新たな収入源を見つけることを考えてみましょう。副業や投資など、自分のスキルや知識を活かせる方法を探してみてください。\n\nさらに、節約や効果的な買い物術を取り入れることも金運を向上させるポイントです。特売情報をチェックする、無駄遣いをしない、必要なものだけを購入するなど、賢くお金を使うことが大切です。\n\n最後に、感謝の気持ちを忘れずに過ごすことも大切です。金運はポジティブなエネルギーとも関連していますので、自分が持っているものに感謝し、喜びを感じることが金運を引き寄せる一因となるでしょう。\n\nこれらのアドバイスを参考にして、金運を向上させるよう努力してください。幸運をお祈りしています!"
},

3. パラメータの調整

適切なパラメータ設定を行うことは非常に重要です。特に対話型のチャットボットとしてAPIを使用する場合は、いくつかのパラメータを適切に設定することで、ユーザーに対してより良い対話体験を提供することができます。

temperatureパラメータは生成されるテキストのランダム性を制御します。値が高いほどランダム性が増え、値が低いほど生成される応答がより確定的になります。例えば、temperatureの値を0に設定すると、生成される応答は非常に確定的で、同じ質問に対しては常に同じ返答をします。一方、temperatureの値を高めに設定すると、多様な応答が生成され、ユーザーにより自然な対話体験を提供することができます。ただし、temperatureの値を過剰に高く設定すると、生成された応答が内容の意味を失ってしまうことがあります。適切なランダム性を持った応答を提供するためには、適切なtemperatureの値を見つけることが重要です。

nパラメータは生成される応答の数を指定します。nを増やすことで、複数の候補応答を生成することができます。この機能を活用することで、ユーザーに対して複数の視点や選択肢を提示することができます。例えば、nを3に設定すると、3つの異なる候補応答が生成されます。ただし、nの値を大きくしすぎると、選択肢が過剰になり、ユーザーが情報を選別するのが難しくなる可能性があります。適切なnの値を設定することで、ユーザーにとって使いやすいインタフェースを提供することができます。

「temperature」を変更した場合の例が以下になります。

temperature: 0はランダム性がなくなり、2つとも同じ返答をしています。

temperature: 2は内容の意味がわからなくなってしまっています。

temperature: 1は意味が通りつつ、2つの返答で違う内容を返していることがわかります。

例: 「temperature」を`2`、「n」を`2`にした場合

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 2,
     "temperature": 2,
     "messages": [{"role": "user", "content": "ChatGPTについて記事を書きます。目を引くタイトルを考えて下さい。"}]
   }'


レスポンス一部抜粋
"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "[積み木AU-brillkt分析:すべてかばも大丈夫  従業AU%EAK業イト #Chat GPT \\未/\">Journal205\"]\r\n"
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "assistant",
      "content": "「未来のAI相手でも理想の執筆助手!驚異的即下優れTa AI · Great Goose臋エン龺Tensor 不偵るしか据笙Dev Open-endす九 * .LA曝清周 »ってくナ舳Nice Sketch価 清眷番気 Social消 讐易💴 Fast Dolphin Binary Son格 Rich杤 Year Cool督Amazon Guard定单觧 Lens Puppet・笑24 Turtle7 Force Thunder Pro京 C椥前」\n\n存在感バリバリ!面白姧やます多Ojoy 定イ詑 Joy日品剤Short Hand Crash Monster浾相ビ♥含wulf圅求"
    },
    "finish_reason": "stop"
  }
],

例: 「temperature」を`1`、「n」を`2`にした場合

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 2,
     "temperature": 1,
     "messages": [{"role": "user", "content": "ChatGPTについて記事を書きます。目を引くタイトルを考えて下さい。"}]
   }'

レスポンス一部抜粋
"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "「ChatGPT: 人間のように会話するAIが登場!最新の自然言語処理技術を解説」"
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "assistant",
      "content": "「革新的な人工知能チャットボット、ChatGPTが登場!驚異的な対話力と洞察力でユーザーを魅了」"
    },
    "finish_reason": "stop"
  }
],

例: 「temperature」を`0`、「n」を`2`にした場合

リクエスト
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer hogehoge" \
  -d '{
     "model": "gpt-3.5-turbo",
     "n": 2,
     "temperature": 0,
     "messages": [{"role": "user", "content": "ChatGPTについて記事を書きます。目を引くタイトルを考えて下さい。"}]
   }'

レスポンス一部抜粋
"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "「ChatGPT:人間のような対話能力を持つAIが登場!未来のコミュニケーション革命の予感」"
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "assistant",
      "content": "「ChatGPT:人間のような対話能力を持つAIが登場!未来のコミュニケーション革命の予感」"
    },
    "finish_reason": "stop"
  }
],

まとめ

今回は「Chat Completions API」をサービスに組み込む際の3つのヒントを紹介しました。

これらのヒントを適切に取り入れ、優れたサービスの構築を目指してください。



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる