😶‍🌫️

OpenAI APIにおける「role」とは

2024/10/12に公開

最近では湯水の如くAI系のサービスが発表されていますね。

そんなAIプロダクト開発に欠かせないのがAPIですが、より正確な回答を得るためには幾つかの手法が用いられます。そんな中から今回はOpenAI APIにおける「role」についてまとめていきます。

roleとは

roleとは、チャット形式でのやりとりの文脈で登場する概念です。具体的には、gpt-3.5-turbogpt-4 といったモデルを使って、チャットのような形式でモデルとやりとりする際に、各メッセージに「役割(role)」を設定します。この役割により、どのような立場のメッセージであるかをモデルに伝え、より正確な回答を得ることができます。

roleの種類

OpenAIのチャットAPIの各メッセージには、以下3つの役割が存在します。

  1. system (システム)
  2. user (ユーザー)
  3. assistant (アシスタント)

1. system (システム)

system ロールは会話の初期設定として使用され、AIの振る舞いや態度など会話の全体的な文脈を設定するために使用します。
モデルに特定のルールや人格を持たせたい場合、system メッセージを使用してその指針を与えることができます。たとえば、アシスタントがフレンドリーであるべきか、フォーマルであるべきか、特定の分野に特化しているかなど、回答に合わせた人格を指定できます。

{
  "role": "system",
  "content": "You are a helpful and polite assistant that helps users with their technical questions."
}

2. user (ユーザー)

user ロールは、実際にユーザーからの入力を表します。これはアシスタントに指示を与えるためのメッセージです。会話の中でユーザーがAIに質問したり、リクエストを投げかけたりする部分を表現します。

{
  "role": "user",
  "content": "Can you explain how neural networks work?"
}

3. assistant (アシスタント)

assistant ロールとは、AIチャットでAI自身がユーザーに話す内容を、人間が事前に決めておくためのものです。この指示があることで、AIは過去の会話の内容や履歴(コンテキスト)を参考にしながら、より適切な回答を生成できるようになります。

{
  "role": "assistant",
  "content": "Neural networks are a type of machine learning model inspired by the human brain..."
}

OpenAI APIのチャットメッセージの構造

OpenAIのチャットAPIにメッセージを送る場合、メッセージのリスト形式で提供する必要があります。それぞれのメッセージには上記の rolecontent が含まれています。

[
  {
    "role": "system",
    "content": "You are a helpful assistant."
  },
  {
    "role": "user",
    "content": "What is the capital of France?"
  },
  {
    "role": "assistant",
    "content": "The capital of France is Paris."
  },
  {
    "role": "user",
    "content": "Can you tell me more about Paris?"
  }
]

このリストは、順にシステム設定から始まり、ユーザーとアシスタントの会話が続きます。これにより、コンテキストを保ったまま会話を進行することができます。

roleの使い分けとまとめ

  • system →チャット全体の基盤となるAIの態度やトーンを設定。
  • user →ユーザーの質問や要求を指定。
  • assistant →モデルからの回答を表しコンテキストを保持。

今回はroleについて簡単にまとめてみました。まだまだブラックボックスな部分が多いですが、ドキュメントを読んで使いこなしていきたいです。AIを利用し、生活が豊かになることを願い、また、その実現に寄与できるよう行動していきたいです。

参考資料

https://platform.openai.com/docs/guides/text-generation/system-messages

Discussion