【ChatGPT】プログラミング抜きでカスタマイズチャット(GPTs)に外部APIを組み込む

APIとは

API、またはアプリケーション プログラミング インターフェイスは、さまざまなアプリケーションが相互に通信できるようにする一連の定義済みルールです。システム間のデータ転送を処理する仲介レイヤーとして機能し、企業はアプリケーションのデータと機能を外部のサードパーティ開発者、ビジネスパートナー、社内部門に公開することができます。

https://www.ibm.com/jp-ja/topics/api

APIを組み込んだカスタマイズチャット(GPTs)を作成する

今回は以前の記事で作成した「なんJタイトルメーカー」を発展させたものを作りたいと思います。

外部のAPIを使用してテキストを取得、その内容からなんJ風のスレッドタイトルを考案するGPTsを作成することを目的とします。

ただしコードの手打ちはしません。全部ChatGPTにやってもらいます。ここ重要。

使用するAPI

今回はWikipediaのデータを取得できるAPIである、MediaWikiAPIを使用します。

APIの詳細は以下のページを参照してください。

実際にAPIを組み込む

左のメニューの「GPTを探す」から右上の「マイGPT」を選択します。

「マイGPT」の画面から「GPTを作成する」を選択しGPT Builderを起動します。

左半分の画面の上側にある「構成」を選択します。

画面をスクロールし「アクション」「新しいアクションを作成する」を選択します。

外部APIと連携するにはOpenAPIの仕様として入力する必要があります。
まずはそれを作ってもらうため「ActionsGPTからヘルプを取得する」を選択します。

新しいタブで開いた「ActionsGPT」のチャットでMediaWikiAPIを使用して取得したい内容を入力します。

今回はAPI名を伝えてあげるだけで仕様を作成できましたが、うまくいかない場合は、API仕様の書いてあるページのURLや、API仕様そのものをコピペして伝えてあげましょう。

管理人
管理人

MediaWiki apiを使用して入力された文字列から、先頭の検索結果の要約文を取得する。

AI
AI

MediaWiki APIを使用して、入力された文字列に基づいて先頭の検索結果の要約を取得するためのOpenAPI 3.0仕様を作成します。以下の仕様では、action=querylist=search、およびformat=jsonパラメーターを使用してMediaWikiの検索機能を利用し、その後で検索結果の最初の項目に関する要約を取得するためにaction=queryprop=extractsexintroパラメーターを使用しています。仕様は単一の検索文字列searchStringを受け取り、JSON形式で要約を返します。

openapi: 3.0.0
info:
  title: MediaWiki Search Summary API
  description: >-
    This API is designed to fetch the summary of the first search result from MediaWiki based on the input search string.
  version: 1.0.0
servers:
  - url: https://en.wikipedia.org/w/api.php
    description: MediaWiki API for Wikipedia
paths:
  /:
    get:
      operationId: getSearchSummary
      summary: Fetches summary of the first search result.
      description: >-
        Takes an input string, searches on MediaWiki, and returns the summary of the first result.
      parameters:
        - in: query
          name: action
          schema:
            type: string
          description: MediaWiki action parameter, fixed to 'query'.
          required: true
          example: query
        - in: query
          name: format
          schema:
            type: string
          description: Format of the response, fixed to 'json'.
          required: true
          example: json
        - in: query
          name: list
          schema:
            type: string
          required: false
          description: Specifies the list query module to use.
          example: search
        - in: query
          name: srsearch
          schema:
            type: string
          required: false
          description: Search string.
        - in: query
          name: prop
          schema:
            type: string
          required: false
          description: Which properties to get for the selected pages.
          example: extracts
        - in: query
          name: exintro
          schema:
            type: boolean
          required: false
          description: Return only content before the first section.
          example: true
        - in: query
          name: explaintext
          schema:
            type: boolean
          required: false
          description: Return extracts as plain text instead of limited HTML.
          example: true
      responses:
        '200':
          description: A summary of the first search result in plain text.
          content:
            application/json:
              schema:
                type: object
                properties:
                  query:
                    type: object
                    properties:
                      search:
                        type: array
                        items:
                          type: object
                          properties:
                            title:
                              type: string
                            pageid:
                              type: integer
                      pages:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            extract:
                              type: string
                example:
                  query:
                    search:
                      - title: "Search Result Title"
                        pageid: 123456
                    pages:
                      '123456':
                        extract: "This is the summary of the first search result."

この仕様は、MediaWikiの検索APIと要約取得機能を利用しています。ユーザーはsrsearchパラメータに検索文字列を指定し、APIは最初の検索結果の要約を返します。この例では、簡潔さを保つためにレスポンスの一部のみを模式化していますが、実際のAPIレスポンスには更に多くの情報が含まれる可能性があります。

ActionsGPTが作成したコードをコピーしておきます。
GPT Builderに戻り「スキーマ」の項にコピーしたコードをペーストします。

MediaWikiAPIは認証の必要がないため「認証」はそのままでよいですが、認証が必要なAPIを使用する際は認証キーなどを入力する必要があります。

Schemaの形式にエラーがあれば、ペーストした領域の下にエラーメッセージが表示されます。その際はエラーメッセージを「ActionsGPT」のチャットにエラーメッセージをペーストし、解決するよう修正を指示します。これをエラーメッセージが出なくなるまで繰り返します。

画面の下部の「利用可能なアクション」に入力されたActionの一覧が表示されるので「テストする」を選択するか、右半分の「プレビューする」画面でテストしてみましょう。

最初に外部API経由でアクセスした際には通信の許可を求めてくるので許可します。

出力結果を確認します。英語のWikipediaページを参照しているので英語で出力されていますが、きちんと記事の要約が取得できているのがわかります。

これで外部APIとの連携は完了です。左上の「<」アイコンからGPT Builder画面に戻りましょう。

カスタマイズチャット(GPTs)を作成する

「作成する」画面に戻ってきたら。チャットを通じてGPTsを作成していきます。

まずはどのように動かしたいかを書きましょう。

管理人
管理人

以下のものを作りたいです。以後のやり取りは日本語で行うこと。

  • 入力されたワードをMediaWikiApiを通して、検索結果の先頭の記事の要約を取得する。
  • 取得した記事の要約を読み込んでなんJ風のスレタイ案を10個作成する。
AI
AI

了解しました!これからは、入力された単語をもとにWikipediaの記事を検索し、その要約からなんJ風のスレッドタイトル案を10個作成する「なんJスレタイ案ジェネレータ」になります。何か検索したい単語はありますか?

管理人
管理人

名前は「なんJタイトルメーカー for Wiki」にしてください。

AI
AI

名称を「なんJタイトルメーカー for Wiki」に更新しました。Wikipediaの要約からなんJ風のタイトルを生成する準備ができています。何か調べたい単語やトピックはありますか?

準備が整ったようなので右側の「プレビューする」画面で試してみましょう。

あとは細かい修正をして、アイコン画像を作成します。

管理人
管理人
  • 日本語以外の言語になっている所はすべて日本語に翻訳してください。
  • スレッドタイトル案以外のテキストは全てなんJ風にしてください。
AI
AI

おっしゃ、更新したで!これからは全部なんJ調で行くで。なんか調べたいワードあるんか?

もう一度プレビューで確認したところWikiの要約部分がそのままだったのでもう少し調整します。

管理人
管理人

Wikiの要約部分もなんJ風にしてください。

AI
AI

更新完了や!Wikipediaの要約部分もなんJ調でアレンジして、タイトルを作り出すで。何か気になるワードがあれば言うてみ?

再度プレビュー。

思った通りのものになったのでアイコンを作成。

管理人
管理人

アイコンを作成してください。

AI
AI

アイコンを新しく作成したで!これでさらになんJタイトルメーカー for Wikiとしての活動が盛り上がるやろな。何か他にできることあるか?

完成したので右上の「作成する」から保存します。

完成したカスタマイズチャット(GPTs)を使ってみる

保存した「なんJタイトルメーカー for Wiki」を早速使ってみましょう。

ヨシ!

おわりに

今回はChatGPTのカスタマイズチャット(GPTs)に外部APIを組み込む方法を、実際の作成をなぞって説明させていただきました。

みなさんもどんどん便利なGPTsを作成して、ChatGPTを使い倒しましょう。

コメント

タイトルとURLをコピーしました