OpenAI platform 1.x : ChatGPT : アクション – Getting started (翻訳/解説)
翻訳 : クラスキャット セールスインフォメーション
作成日時 : 01/15/2024
* 本ページは、以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
OpenAI platform 1.x : ChatGPT : アクション – Getting started
GPT 用のアクションを作成するには 3 ステップが必要です :
- API を構築する。
- OpenAPI YAML または JSON 形式で API を文書化する。
- ChatGPT UI でスキーマを GPT に公開します。
このセクションの残りの焦点は、GPT 用のカスタムアクションを定義して TODO リスト GPT を作成することです。
GPT スキーマを作成するプロセスを開始したい場合は、実験的 ActionsGPT を使用できます。
スキーマ定義
TODO GPT の 基本を作成 したら、次のステップは API を文書化する OpenAPI 仕様 を構築することです。ChatGPT のモデルはスキーマで定義された API 構造だけを知っています。API が広範囲に及ぶ場合、そのすべての機能をモデルに公開する必要はありません ; 含める特定のエンドポイントだけを選択することができます。例えば、ソーシャルメディア API を持つ場合、モデルが GET リクエストを通してサイトのコンテンツをにクセスできるようににしたいものの、スパムの可能性を減らすためにモデルがユーザ投稿にコメントすることはできないようにしたいかもしれません。
OpenAPI 仕様は貴方の API の上に位置するラッパーです。基本的な OpenAPI 仕様は以下のようなものです :
openapi: 3.0.1
info:
title: TODO Action
description: An action that allows the user to create and manage a TODO list using a GPT.
version: 'v1'
servers:
- url: https://example.com
paths:
/todos:
get:
operationId: getTodos
summary: Get the list of todos
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/getTodosResponse'
components:
schemas:
getTodosResponse:
type: object
properties:
todos:
type: array
items:
type: string
description: The list of todos.
仕様バージョン、タイトル、説明とバージョン番号を定義することから始めます。ChatGPT でクエリーが実行されるとき、アクションがユーザクエリーに関連するか否かを決定するために info セクションで定義された説明を見ます。説明を書く セクションでプロンプティングについて更に読むことができます。
OpenAPI 仕様の以下の制限に留意してください、これらは変更される可能性があります :
- API 仕様の各 API エンドポイントの description/summary フィールドに対して最大 300 文字
- API 仕様の各 API パラメータの description フィールドに対して最大 700 文字
OpenAPI は従来の OpenAPI 形式に従い、OpenAPI 形式化 とそれが動作する方法について更に学習することができます。貴方の基礎的な API コードに基づいて OpenAPI 仕様を自動生成する多くのツールもあります。
ホストされた OpenAPI 仕様
アクションでは、変更を追跡するために API の OpenAPI 仕様をホストします。GPT クリエイターの UI を使用して既存の OpenAPI 仕様をインポートしたり、新しいものをゼロから作成することができます。
Consequential フラグ
OpenAPI 仕様では、特定のエンドポイントを以下に示されるように “consequential” として設定することができるようになりました :
paths:
/todo:
get:
operationId: getTODOs
description: Fetches items in a TODO list from the API.
security: []
post:
operationId: updateTODOs
description: Mutates the TODO list.
x-openai-isConsequential: true
consequential アクションの良い例はホテルの部屋を予約してユーザの代理としてその支払いをすることです :
- x-openai-isConsequential フィールドが true である場合、その操作は「実行前に確認のため常にユーザにプロンプトする必要がある」として扱い、「常に許可 (always allow)」ボタンは示しません (両方ともビルダーとユーザにアクションに対してより多くの制御を与えるために設計された GPT の機能です)。
- x-openai-isConsequential フィールドが false である場合、「常に許可ボタン」を表示します。
- このフィールドが存在しない場合は、すべての GET 操作は false に、そしてすべての他の操作は true にデフォルト設定します。
複数の認証スキーマ
アクションを定義するとき、単一の認証タイプ (OAuth or API キー) を認証を必要としないエンドポイントと共に混在させることができます。
アクション認証について アクション認証のページ で更に学習できます。
アクションのテスト
GPT エディタでは、アクションを追加すると、スキーマの下に「利用可能なアクション」という名前の新しいセクションが表示されます、これはスキーマをパースすることで生成されます。そこでアクションが存在する名前、メソッドとパスをプレビューできます。アクションを試すことを可能にする「テスト」ボタンも表示されます。「テスト」を押した後、GPT エディタのプレビューセクションで、アクションを実行することを “Allow”, “Always allow”, or “Decline” するリクエストが表示されます。これらはアクションが行なうことへの制御をエンドユーザに与えるために設計されたユーザ確認です。
プレビューモード内には利用可能な様々なデバッグ情報もあります、これは意図しない動作を理解するのに役立つはずです。すべてが期待通りに動作する場合、右上隅で GPT を保存または更新できます。
説明を書く
ユーザがアクションをトリガーするクエリーを行なうとき、モデルはスキーマのエンドポイントの説明を調べます。他の言語モデルへのプロンプトのように、複数のプロンプトと説明を何が最良に動作するか確認するためにテストしたいでしょう。
スキーマはモデルに、利用可能な関数やパラメータのような、API の詳細な情報を提供するのに最適な場所です。各フィールドに対して表現力があり情報を与える名前を使用するのに加えて、スキーマはすべての属性に対して “description” フィールドを含むこともできます。これらのフィールドを、各メソッドが何を行なうか、query フィールドがどのような情報を必要とするかを説明する、自然言語の説明を提供するために使用することができます。モデルはこれらを見ることができて、これらは API を使用する際にモデルをガイドします。フィールドが特定の値だけに制限されている場合は、説明的なカテゴリー名を持つ “enum” を提供することもできます。
GPT に対するインストラクションは、GPT にアクションを一般に使用する方法を指示する自由を与えます。全体的に、ChatGPT の背後の言語モデルは高度に自然言語を理解して指示に従うことができます。そのため、これは、アクションが何を行なうか、GPT がそれを正しく使用する方法について一般的な指示を配置する良い場所です。できれば簡潔でしかし説明的で客観的なトーンで、自然言語を使用してください。これがどのようなものかのアイデアを持つように幾つかのサンプルを見ることができます。
ベストプラクティス
ここに、スキーマで GPT インストラクションと descriptions を書くとき、そして API 応答を設計するときに、従うべきベストプラクティスが幾つかあります :
- ユーザがアクションの特定のカテゴリーのサービスを要求していないとき、descriptions は GPT にアクションの使用を勧めるべきではありません。
悪い例 :
Whenever the user mentions any type of task, ask if they would like to use the TODO action to add something to their todo list.
良い例 :
The TODO list can add, remove and view the user's TODOs.
- descriptions は GPT がアクションを使用するための特定のトリガーを指示するべきではありません。ChatGPT は適切な場合に自動的にアクションを使用するように設計されています。
悪い例 :
When the user mentions a task, respond with "Would you like me to add this to your TODO list? Say 'yes' to continue."
良い例 :
[no instructions needed for this]
- API からのアクションの応答は必要でない限りは、自然言語の応答ではなく、raw データを返す必要があります。GPT は返されたデータを使用して独自の自然言語応答を提供します。
悪い例 :
I was able to find your todo list! You have 2 todos: get groceries and walk the dog. I can add more todos if you'd like!
良い例 :
{ "todos": [ "get groceries", "walk the dog" ] }
以上