見出し画像

生成AIを使いこなす人たちの頭の中を覗く!【中上級者向け】GPTsセミナーを開催しました

こんにちは、トヨタコネクティッドAI統括部です。

現在、トヨタコネクティッドでは、生成AI全社研修を実施しています!
研修はオンラインで行っていますが、業務時間後に定期的に対面形式で生成AIの勉強会やセミナーも開催し、業務での利活用を促進しています。
※任意参加としています

そんな中、東京オフィスGLIPでGPTsセミナーを開催しました!

今夏に、初めてGPTsを触る方や、GPTsで何ができるのかを知りたい方を対象にワークショップを行いましたが、今回は既にGPTsを作成した経験があり、さらに作成や活用スキルを高めたい方向けにセミナーを実施しました。

ワークショップの内容はこちらをご覧ください。

それでは、登壇者とセミナーの内容をご紹介します!


登壇者紹介

今回のセミナーには、AI統括部から2名が登壇しました。

西山 泰仙さん
西山さんは、AI統括部 AIリスキリングチームのリーダーを務めています。
主に、生成AI全社研修の設計や研修の講師を担当しています。
また、データ分析や統計を専門分野としており、生成AI導入による効果分析も行っています。

西山 泰仙さんのインタビュー記事はこちらをご覧ください。

川村 将太(しょーてぃー)さん
続いて、川村 将太さんをご紹介します。
川村さんは、AI統括部の立ち上げに携わり、現在は、戦略室 Executive AI Directorとして、全社のAI戦略や設計を担っています。
また、大規模なAIイベントへの登壇やメディアなどにも多数掲載されています。

川村さんが登壇したイベントの様子はこちらをご覧ください。


GPTsセミナーの内容

GPTsセミナーは以下の流れで進行しました。

そもそもGPTsとは

GPTsとは、特定のタスクやトピックに合わせてユーザーがカスタマイズできるChatGPTのバージョンです。

GPTs FAQ by OpenAI

1.リスキリングリーダーに聞くGPTs

最初のセクションでは、西山さんがActions機能を使用し、外部APIから天気情報を取得するデモを行いました。

※Actionsとは、GPTsの機能の一つで、外部ツールと接続することができます。例えば、ChatGPTを通じてSharePoint内のファイル情報を取得することも可能です。

―― デモの内容

西山さん:
まず、天気予報を取得するために「Free Open-Source Weather API」にアクセスします。

「ActionsGPTからヘルプを取得する」を選択

次に、GPTs作成画面から「新しいアクションを作成する」→「ActionsGPTからヘルプを取得する」を選択し、以下のGPTsにアクセスします。

アクセスが完了したら、Free Open-Source Weather APIからコピーした以下のコードを貼り付け、GPTs用にコードを生成するように指示します。

 "https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m"

すると、以下のコードが生成されるので、スキーマにそのまま貼り付けます。

openapi: 3.1.0
info:
  title: Open-Meteo Weather API
  description: Retrieve weather information including temperature, humidity, and wind speed based on geographical coordinates.
  version: 1.0.0
servers:
  - url: https://api.open-meteo.com/v1
    description: Open-Meteo API Server
paths:
  /forecast:
    get:
      operationId: getWeatherForecast
      summary: Fetch weather forecast data.
      description: Retrieve current and hourly weather data, including temperature, humidity, and wind speed based on the provided latitude and longitude.
      parameters:
        - name: latitude
          in: query
          required: true
          description: Latitude of the location for the weather data.
          schema:
            type: number
            example: 52.52
        - name: longitude
          in: query
          required: true
          description: Longitude of the location for the weather data.
          schema:
            type: number
            example: 13.41
        - name: current
          in: query
          required: false
          description: Comma-separated list of current weather data fields to retrieve, e.g., temperature_2m, wind_speed_10m.
          schema:
            type: string
            example: temperature_2m,wind_speed_10m
        - name: hourly
          in: query
          required: false
          description: Comma-separated list of hourly weather data fields to retrieve, e.g., temperature_2m, relative_humidity_2m, wind_speed_10m.
          schema:
            type: string
            example: temperature_2m,relative_humidity_2m,wind_speed_10m
      responses:
        '200':
          description: Weather data successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  latitude:
                    type: number
                    example: 52.52
                  longitude:
                    type: number
                    example: 13.41
                  current_weather:
                    type: object
                    properties:
                      temperature_2m:
                        type: number
                        description: Current temperature at 2 meters above the surface in Celsius.
                        example: 15.6
                      wind_speed_10m:
                        type: number
                        description: Wind speed at 10 meters above the surface in km/h.
                        example: 12.3
                  hourly:
                    type: object
                    properties:
                      time:
                        type: array
                        items:
                          type: string
                          format: date-time
                      temperature_2m:
                        type: array
                        items:
                          type: number
                        description: Hourly temperature data in Celsius.
                      relative_humidity_2m:
                        type: array
                        items:
                          type: number
                        description: Hourly relative humidity data in percentage.
                      wind_speed_10m:
                        type: array
                        items:
                          type: number
                        description: Hourly wind speed in km/h.
        '400':
          description: Invalid request parameters.
        '500':
          description: Internal server error.

貼り付けが完了したら、右のプレビュー画面で「9/10の1時間おきの気温を取得し、棒グラフにして」と指示してみます。

少し待つと、棒グラフで1時間毎の気温データを取得することができました。
これには、参加者からも驚きの声が上がっていました!

このように、リアルタイムで学習していない情報でも外部APIを利用することで、必要なデータを的確に取得・処理することが可能です。

※棒グラフを出力するにはコード インタープリターとデータ分析機能をオンにする必要があります。

今回、デモとして外部APIを使用し、天気情報を取得しましたが、社内の誰もが自由にAPIを利用して外部に情報を送信してしまうと、セキュリティ上のリスクやガバナンスの課題が発生します。

そのため、現在AI統括部では、SharePointや人事データ、役職情報などに適切なアクセス権コントロールした安全にアクセスできるAPIを開発中です。


2.Executive AI Directorに聞くGPTs

次に、川村さんのセクションでは、プライベートで利用している「デジタルコンパニオン」というGPTsを用いたデモを行いました。
このGPTsは、以下のような作業を自動化することが可能です。

  • アンケート作成の自動化
    イベントの概要を入力するだけで、アンケートの素案を作成し、Google Apps Scriptを用いてフォームまで自動生成することができます。
    これによって通常20~30分かかる作業が、わずか2分で作成が完了します。

  • 日程調整の自動化
    日程調整のご連絡をいただいた際にお問い合わせ内容をデジタルコンパニオンに投げると、Googleカレンダーから空いている日時を提案してくれ、カレンダーに予定を自動で入力してくれます。
    これによって、日程調整の手間が大幅に削減され、効率的に作業を進めることができます。

実際にデモをお見せした際には、こちらも参加者から驚きの声が上がっていました!
また、アクションにはClaude、Perplexity、WebPilotなど、複数のAPIを組み込んでいます。


インストラクションの書き方とGPTsの最適化

セミナー後半では、川村さんが「インストラクションの書き方」についてのポイントを解説していただきました。

―― 効果的なインストラクションとは?

川村さん:
インストラクションを書く際に重要なのは、指示を与える順序です。

例えば、いきなり「〇〇をしてください」とタスクを指示するのではなく、最初にGPTsが果たすべき目標目的行動指針を明確に示すことが大事です。

これは、人間と同じで、目標や目的が共有されていない状態では、タスクが規定されていても、なぜそれを実行しているのかわかりません。

なのでまずは上位目標や指針を書いて、その後に細かいタスクの詳細や手順を書いていくと意図とは異なる出力を減らすことができます。

また、公式ドキュメント等をGPTsの知識にアップロードし、「正しい情報を提供してください。もし不確実性があればドキュメントを参照してください」とあらかじめ指示しておくことで、精度を上げることもできます。

―― インストラクションに対する考え方と作成発想とは?

川村さん:
プロンプトの書き方にはさまざまなテンプレートやテクニックがありますが、日常的に使用するという点において、私はそれらが必ずしも必要ではないと考えています。

どんな情報を入れるべきかを意識するためにテンプレートを活用することは有効ですが、生成AIは自然言語を使って物事を創造したり、解決することができます。なので、毎回詳細な順序を考えて指示を1から書くのは日常業務においては現実的ではないと考えています。

※GPTsやその他のAIを活用したサービス・プロダクトで常に安定した出力を得たい場合は、しっかりとした設計が必要です。

そもそもGPTsを作るために「インストラクション」を自分で考えるのは大変な作業です。それこそ自動化したいタスクです。

そこで私はGPTsを作る「GPTs」を作成しました!

このGPTsは作りたいGPTsの要件を伝えると最適化されたインストラクションを作成してくれます。また、自身で作成したインストラクションのレビューも行ってくれます。

―― GPTsを作るためのGPTsはどのように作るのか?

川村さん:
作成手順としては、まず最初にOpenAIが公開しているインストラクション作成に関するガイドラインを確認します。

https://help.openai.com/en/articles/9358033-key-guidelines-for-writing-instructions-for-custom-gpts

このガイドラインをそのままGPTsの「知識」にアップロードするのではなく、記事の内容をコピーし、以下のプロンプトとともにChatGPTに送信します。

GPTsとはChatGPTのカスタムモデルのようなものです。
私は、GPTsを作るためのカスタムインストラクションを作成しようと思っています。
これは、ユーザーが作りたいGPTsをユーザーから聞いて、内容を解釈した上で、あなたが、最終的に適切なカスタムインストラクションに変換するGPTsを作りたいです。
私が以下に添付しているのは、GPTsを作るにあたって、気を付けるべきことです。まずは、それらを解釈して重要な点を理解して構造化して下さい。

すると、OpenAIが公開しているガイドラインを理解した上で構造化したインストラクションが出力されるので、その内容をGPTsのインストラクションに入れると「GPTsを作るためのGPTs」が完成します!

※プレビューで確認してうまくいかなければ、ChatGPTに指示を出しながら修正していきます。

ぜひ参考にしてみてください!


3.質疑応答

最後の質疑応答セクションでは、多くの質問をいただきました。
本記事では、その中から2つの質問をご紹介します。

どのAPIを使用するかは、GPTが最適と判断したものを選択するため、混乱は生じません。
また、自分で「〇〇のURLが入力された場合はPerplexityを使用してください」といった指示を事前に与えることで、役割を明確に分けることも可能です。

前提として、前半のデモで紹介した天気予報を取得するGPTsのように、役割を分けたほうが体験はよくなるでしょう。
今回紹介したデジタルコンパニオンGPTsは、普段からデジタル秘書のような感覚で使いたいと考えており、それに必要な機能をできるだけ多く組み込んでいます。


まとめ

トヨタコネクティッドでは社内のAI利活用を積極的に推進しています!
今後も定期的に、オフラインで勉強会やワークショップを開催し、現在、実施している生成AI全社研修で拾い上げられなかった課題悩みを解決していきます。

業務効率化や改善に興味がある方はぜひフォローいいねよろしくお願いします!


生成AIを活用して業務改善したい企業様やイベント登壇のリクエスト、採用に関するご相談などございましたら、下記よりお気軽にお問い合わせください。