コンテンツにスキップ

Mairaの統合

前回までのチュートリアルでは、Mairaのデータ管理、データトレーニング、プロフィールおよび設定管理について説明いたしました。これらの手順が完了すると、クエリを送信してカスタマイズされた応答を受け取るため、Mairaをシステムに統合する準備が整います。

Mairaから応答を取得するために、2つのエンドポイントがあります。

  1. POST /v1/gpt/ask
  2. POST /v1/gpt/ask/vision

統合 - GPT Ask

テキストのみでクエリを送信するには、エンドポイント POST /v1/gpt/ask を使用します。
以下はリクエストボディのサンプルです。:

{
 "user_id": "a0cc6beb-2909-459b-be55-62196af78ce4",
 "member_id": "df3456tg-2909-459b-be55-62196afedf85",
 "query": "聞きたいことを何でも聞いてください...",
 "conversation_type": "question",
 "gpt_profile_id": "48b3bc7c-0af1-4fd5-a8c4-b15015f46e44",
 "context_preference": {
   "preferred": {
     "dataset_id": "123456",
     "project_id": 45678
   },
   "excludes": {
     "client_id": "48b3bc7c-0af1-4fd5-a8c4-b15015f46e44"
   }
 },
 "conversation_metadata": {
   "project_id": "project1",
   "client_id": "client1"
 },
 "session_id": "48b3bc7c-0af1-4fd5-a8c4-b15015f46e44",
 "result_includes": [
   "key_name_1",
   "key_name_2"
 ],
 "top_k": 20,
 "keyword_ngram": 3,
 "is_keyword_enabled": true
}

パラメータについて説明いたします:

  • user_id: リクエストを行うユーザーの固有の識別子です。こちらは必須フィールドで、空でない文字列である必要があります。
  • member_id (任意): リクエストを行うメンバーの識別子です。member_id は、ログインしているユーザーの固有のIDを表します。プラットフォームやデバイス間でユーザーを特定するのに役立ちます。
  • query (str): ユーザーがMairaに尋ねたいクエリのテキストです。こちらは必須フィールドで、空でない文字列である必要があります。
  • conversation_type (任意): 会話の種類を定義します。入力可能な値は questionchat です。デフォルト値は question です。chat タイプの会話は、前の会話を考慮して応答しますが、question タイプはその場のクエリのみを考慮し、前のやり取りは考慮しません。 例:

    チャットベースの会話(コンテキストを記憶する):

    ユーザー_クエリ-1: 私はSF小説が好きです。いくつかおすすめを教えてくれませんか? AI_応答: もちろんです。こちらがおすすめのSF小説です。 ユーザー_クエリ-2: 映画もいくつかおすすめしてもらえますか? AI_応答: SFが好きなあなたに、楽しめそうなSF映画をいくつかご紹介します。

    質問ベースの会話(コンテキストを記憶しない):

    ユーザー_クエリ-1: 私はSF小説が好きです。いくつかおすすめを教えてくれませんか? AI_応答: もちろんです。こちらがおすすめのSF小説です。 ユーザー_クエリ-2: 映画もいくつかおすすめしてもらえますか? AI_応答: こちら、いくつかの人気映画です。 --> SF好きは考慮していない。

  • 注意:プロフィールの設定 `chat_length を使用すると、AIが現在のクエリに対して応答を生成するために考慮する以前の対話の数を設定できます。

  • gpt_profile_id (任意): セッションで使用するGPTプロフィールを指定できます。プロフィールチュートリアルで説明したように、さまざまなニーズに対応するために複数のプロフィールを持つことができます。ここでは、用途に合った profile_id を提供します。profile_id が提供されない場合は、デフォルトのプロフィールが使用されます。(デフォルトプロフィールについてはプロフィールチュートリアルを参照してください。)

  • context_preference (任意): コンテキストの使用に関する設定ができ、優先または除外したいデータセットやプロジェクトを入力します。上記の例では、指定されたdataset_idproject_id が優先され、指定された client_id が除外されています。ここでは、dataset_ididx_columnsecondary_idx_column、またはデータセットのキーを使用できます。

  • conversation_metadata (任意): 会話に関連する追加のメタデータ、例えばプロジェクトやクライアントの識別子です。空のディクショナリーやオブジェクトにすることも、オミットすることもできます。ここには何でも追加できます。

  • session_id (任意): セッションの識別子です。セッションは会話のコンテキストを追跡するために使用されます。同じセッション内の会話は、以前の会話のコンテキストを把握することができます。どのくらいの過去の会話がコンテキストとして使用されるかは、profileの "chat_history_length": 3` パラメーターで定義されています。詳細は"プロフィール"チュートリアルを参照してください。

  • result_includes (任意): レスポンスに含めるべき特定のキーやフィールドのリストです。デフォルトは空のリスト/配列です。

  • top_k (任意): 参考ドキュメントを優先しながら考慮する上位キーワードの数を制御します。値は1から20の間で設定でき、デフォルトは20です。top_kの値が高いほど、より多くのキーワードを考慮し、検索範囲が広がります。一方、低い値であるほどより少なく、特定した用語に絞られ、Mairaの応答が厳格になります。

  • keyword_ngram (任意): キーワード抽出のためのn-グラムサイズを定義し、1から3の範囲で限定されます。デフォルトは3です。

  • これらの設定に基づいて、モデルはクエリから上位キーワードを特定し、より柔軟で正確な抽出を可能にします。例えば、「I love natural language processing.」という文の場合
    • 値が1の場合: ["I", "love", "natural", "language", "processing"]
    • 値が2の場合: ["I love", "love natural", "natural language", "language processing"]
    • 値が3の場合: ["I love natural", "love natural language", "natural language processing"]
  • 各n-グラムは、指定されたnの値に基づいて文中の単語の配列を表します

  • is_keyword_enabled (任意): キーワード抽出が有効かどうかを示すフラグです。デフォルトはTrueです。


プロジェクトの設定完了後、最低限に必要なパラメータでエンドポイントを試すには、以下のリクエストボディを使用できます。注意:まず初めにデフォルトプロフィールを設定しておく必要があります。(設定チュートリアルを参照してください)

{
 "user_id": "test_12345",
 "query": "あなたが知っていることを教えてください。",
 "conversation_type": "question",
 "context_preference": {
   "preferred": {},
   "excludes": {}
 },
 "conversation_metadata": { },
 "result_includes": [],
 "top_k": 20,
 "keyword_ngram": 3,
 "is_keyword_enabled": true
}

統合 - GPTビジョン

POST /v1/gpt/ask/vision エンドポイントは、画像とあなたのクエリに基づいて応答を生成することができます。

前のセクションのGPT askと同様に、このエンドポイントを統合するには、上記のパラメーターに加えて画像を提供する必要があります。現在、以下の画像形式がサポートされています:

  • webp
  • jpeg
  • jpg
  • png

このエンドポイントでは、POST /v1/gpt/askとは異なり、top_kkeyword_ngramis_keyword_enabledなどの一部のパラメーターは必須ではないことに注意してください。