コンテンツにスキップ

プロフィール

GPT Profilesは、Mairaが提供する独自かつ強力な機能です。スマートアプリケーションやカスタマイズされたGPTをMairaで構築する際、この機能を使用して目的、性格、応答に関する指示、およびその他の主要な設定を定義できます。これらの設定は、プロンプトのコンテキストと共に考慮され、最適な応答を生成します。

複数のプロフィールを作成し、必要に応じて切り替えることが可能です。以下では、この機能についてさらに詳しく説明します。

Mairaを使用するには、少なくとも1つのプロフィールが必要です。また、デフォルト プロフィールを定義する必要があり、profile_idを指定せずにプロンプトを送信した場合には、このデフォルトプロフィールが適用されます。このドキュメントを読み進めることで、これらの概念がより明確になります。

新しいプロフィールを作成

新しいプロフィールを作成するには、エンドポイントPOST /v1/gpt/profilesを使用します。以下サンプルリクエストです。:

{
  "name": "プロフィールには、後で簡単に識別できるような、意味のある名前を付けてください。",
  "intro": "GPTの目的や役割、望ましい出力形式について説明してください。",
  "system": "GPTのパーソナリティを定義してください。",
  "model": "gpt-3.5-turbo-0125",
  "temperature": 0,
  "top_p": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "stop": [
    "AI:",
    "Human:"
  ],
  "response_format": "json_object",
  "search_max_token": 2500,
  "completion_token": 2500,
  "vision_settings": {
    "resolution": "lowまたはhigh。デフォルトはlowです。",
    "is_image_context_enabled": true
  },
  "chat_history_length": 3,
  "is_personalizer_only": false,
  "dataset_tags": {
    "includes": [
      "tag1",
      "tag2"
    ],
    "excludes": [
      "tag1",
      "tag2"
    ]
  },
  "is_auto_evaluation": false
}

各パラメータについて詳しく見ていきましょう。

  • name: str - 管理者がその目的を把握しやすいように、プロフィールに名前を付けてください。
  • intro: str - これはMairaのユニークな機能です。モード設定およびボットに関する一般的な指示を設定するためのものです。
    • intro例: 提供されたコンテキストに基づき、できるだけ正確に、クエリと同じ言語で回答してください。あなたはファッション業界および持続可能なデザイナー服を販売するABC社の専門家です。
  • system: str - これはLLMの機能であり、ボットのペルソナを設定したり、ルールを定めるために使用されます。ここでの目的は、応答生成における特定のペルソナやルールを設定することです。
    • System例: あなたの回答は簡潔で明確であるべきです。常に中立的かつ丁寧な態度で対応し、提案を求められた際には、論理と公平性に基づいたバランスの取れた選択肢を提供してください。明示的に求められない限り、主観的な意見は避けてください。必ずフォローアップの質問をすることを忘れずに。
  • model: str - 必要に応じて使用したいGPTモデルを選択できます。モデルを選ぶ際には、目的や推定トークン数を考慮してください。これによりコストに大きな影響を与える可能性があります。OpenAIのモデルについては、こちらのページで詳しく知ることができます。この設定は、search_max_token (モデルに送信されるデータに割り当てられるトークン数)およびcompletion_token(返信に割り当てられるトークン数)というパラメータに影響を与えます。 introsystem、およびqueryのトークンコストは、search_max_tokencompletion_tokenにおけるトークンサイズの割り当てには含まれていないことに注意してください。選択したモデルのCONTEXT WINDOWは、トークン割り当ての合計をカバーします。すなわち、CONTEXT WINDOWsearch_max_token + completion_token + intro + system + queryです。

    • モデルを選択します。利用可能な値は次のとおりです。 gpt-3.5-turbo-0125, gpt-3.5-turbo-0613, gpt-3.5-turbo-instruct, gpt-3.5-turbo-16k-0613, gpt-3.5-turbo-1106, gpt-4-0613, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-2024-04-09, gpt-4o-2024-05-13, gpt-4-vision-preview, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4o-2024-08-06
  • temperature: Optional[float] - Default=0.0、ge=0.0、le=2.0。低いtemperature(より0に近い)ほど出力はより決定的で焦点を絞ったものになり、モデルはトレーニングデータに基づいてより確率の高い単語を選択します。一方、高いtemperature(より2に近い)ほど、出力はより偶然的でクリエイティブなものになり、幅広い単語の選択肢が得られます。

  • top_p: Optional[float] - Default=1.0, ge=0.0, le=1.0. temperatureを用いたサンプリングの代替手法であり、核サンプリングとも呼ばれています。この手法ではモデルがtop_pに入る値の範囲内の確率質量を持つトークンの結果を考慮します。つまり、値が0.1の場合は上位10%の確率質量を構成するトークンのみが考慮されることを意味します。
    • top_p = 0.9の場合、モデルは次の単語を選ぶ際に、確率質量の上位90%のみを考慮し、確率質量の低い選択肢は除外します。
    • top_pの値が低いほど出力はより決定的になり、高いほどより多様になります。
  • frequency_penalty: Optional[float] - Default=0.0, ge=0.0, le=2.0. 出力においてモデルが同じトークンを繰り返す可能性を減少させるパラメータです。よく使われるトークンにはペナルティが与えられ、より多様な単語の選択を促します。
    • frequency_penalty = 0.0の場合, ペナルティはなく、モデルはトークンを自由に繰り返すことができます。
    • frequency_penaltyの値が高くなると、モデルが言葉を繰り返す可能性が低くなり、出力のバリエーションが増えます。
  • presence_penalty: Optional[float] - Default=0.0, ge=0.0, le=2.0. すでに出力された内容に含まれたトークンにペナルティを課すことで、モデルが新しいトークンを導入することを促すパラメータです。これにより、モデルはあまり使われていない単語や新しい単語を使用するようになります。
  • stop: List[str] - 例=["AI:", "Human:"]
  • response_format: Optional[str] - 応答形式は、json_formattextの2種類です。json_formatを選んだ場合、introやsystemに"json"という単語を含める必要があります。
  • search_max_token: Optional[int] - モデルに送信されるデータに割り当てられるトークンの数です。gpt-3.5-turbo-0613の場合はデフォルトで2500トークン、その他のモデルは5000トークンが設定されています。
  • completion_token: Optional[int] - Default=2000,例=2500. 応答に割り当てられるトークンの数です。
  • vision_settings: Optional[Dict] - 視覚モデルに必須です。
    • vision_settings.resolution: 解像度(resolution)がhighの場合、コストは高くなりますが、結果の精度が向上します。lowの場合はその逆です。
    • vision_settings.is_image_context_enabled: trueは画像をコンテキストとして、テキストコンテキストと一緒にLLMに送信することを意味します。falseは、テキストコンテキストまたはリファレンスのみが使用されることを意味します。
  • chat_history_length: Optional[int] - GPTにコンテキストとして送信するために保持する直前の会話の数です。
  • is_personalizer_only: Optional[bool] - プロフィールがパーソナライザー専用かどうか。デフォルト値はFalseです。

    • 詳しくはこちら このパラメータは、Mairaに送信されるコンテキストに影響します。"is_personalizer_only": true の場合、データセットエンドポイントを通じてアップロードされたすべてのデータセットは考慮されず、コンテキストは商品カタログに制限されます。 "is_personalizer_only": falseの場合は、Mairaデータセットとパーソナライザーの商品カタログの両方がコンテキストとして使用されます。
  • dataset_tags: Optional[Dict] - コンテキスト構築に含めるべきデータセットタグ、または除外するべきデータセットタグを入力するパラメーターです。タグが提供されない場合は、すべてのデータセットがコンテキスト構築の対象とされます。(データセットにタグを追加する方法に関しては、"データセット管理" チュートリアルに説明がございます。)

    • dataset_tags.include: Optional[list[str]] - コンテキスト生成において含めるタグ。これらのタグに該当しないデータセットは全て除外されます。
    • dataset_tags.exclude: Optional[list[str]] - コンテキスト生成において除外するタグ。これらのタグに該当しないデータセットは全て含まれます。
  • is_auto_evaluation: Optional[bool] - 各会話の後に評価を自動的に実行するかどうか。(評価については、Mairaの評価チュートリアルで詳しく説明します。)

リクエストボディの例

以下にリクエストボディの例を示します。このボディを使用してプロフィールにアクセスし、テスト用のMairaプロフィールを作成できます。(以下、必須パラメータのみ表示)

{
  "name": "最初のテスト用プロフィール",
  "intro": "簡潔で客観的に、わかりやすく丁寧にお答えください。
",
  "system": "あなたは私の仕事をサポートするためのボットです。",
  "model": "gpt-4o-mini-2024-07-18",
  "temperature": 0,
  "top_p": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "stop": [
    "Human:"
  ],
  "search_max_token": 2500,
  "completion_token": 2500,
  "vision_settings": {},
  "chat_history_length": 3,
  "is_personalizer_only": false,
  "dataset_tags": {
    "includes": [],
    "excludes": []
  },
  "is_auto_evaluation": false
}

正常な応答は次のような形です。:

{
  "detail": {
    "response": "GPTプロフィールが正常に作成されました。",
    "profile_id": "cfe76e28-bef9-45c8-bf5b-1f4b0117b176",
    "name": "最初のテスト用プロフィール"
  }
}

profile_idはレスポンスに含まれています。

既存のプロフィールを表示

すべてのプロフィールを取得

すべてのプロフィールを取得するには、GET /v1/gpt/profilesを使用します。以下のパラメータが必要です:

  • start: Optional[int] - プロフィール取得の開始インデックス (デフォルト:0、最小値:0)
  • size: Optional[int] - 取得するプロフィールの数(デフォルト:10、最小値:1)

レスポンスにはプロフィールのメタデータが含まれています。

1つのプロフィールの詳細を取得

特定のプロフィールの詳細を表示するには、GET /v1/gpt/profiles/{profile_id}を使用してください。 この際、profile_idが唯一のパラメータとなります。

レスポンスには指定されたプロフィールの詳細がすべて含まれます。

プロフィールの更新

既存のプロフィールを更新するには、PUT /v1/gpt/profiles/{profile_id}を使用します。 リクエストボディおよびパラメータの詳細は、上記のPOST /v1/gpt/profilesと同じです。そちらのセクションを参照してください。 ここでの唯一の違いは、更新するプロフィールを特定するためにprofile_idをパラメータとして必要とすることです。

プロフィールの削除

既存のプロフィールを削除するには、delete /v1/gpt/profiles/{profile_id}を使用します。このエンドポイントでは、削除したいプロフィールを特定するためにprofile_idがパラメータとして必要です。