🤖

ChatGPTを業務活用!カスタムGPTで社内SaaSを操作する方法

2025/03/21に公開

はじめに

ナレッジワークでコーポレートITをやっているハリールです。
現在、全社的な生産性向上を進めており、その一環としてカスタムGPT(GPTs)の業務利用を推進しています。
本記事では、カスタムGPTを用いて社内で利用しているSaaSのAPIを呼び出し、業務を自動化する方法について解説します。

カスタムGPT(GPTs)とは

カスタムGPT(GPTs)は、特定の目的に合わせて調整・カスタマイズできるChatGPTの機能です。これにより、独自の業務フローや情報を組み込んだAIアシスタントを作成できます。
参考:https://openai.com/index/introducing-gpts/

カスタムGPTは以下の特徴があります。
• 社内共有が可能(Teamプラン以上)
• 独自の情報を追加できる
• 外部APIを呼び出せる(Custom Action)

今回は、社内のデバイス管理ツール「Admina」のAPIを登録し、従業員に貸与中のデバイス情報を取得できるGPTsを作成します。

設定手順

カスタムGPTのベースを作成

カスタムGPTの作成手順については、多くの事例があるため、本記事では概要のみ説明します。

まず、以下のような指示をChatGPTに与え、ベースとなるGPTを作成します。

Adminaという外部サービスのAPIを呼び出し、貸与デバイスの情報を取得するGPTです。

- 指定されたメールアドレスを元に対応するpeopleIdを取得します。
- 取得したpeopleIdを使用して貸与デバイスのリストをAPIから取得します。
- レスポンスは 'type'、'preset.asset_number'、'preset.serial_number'、'preset.model_name' の情報を表形式で表示してください。
- 指定したメールアドレスのユーザーが存在しない場合は「該当するユーザーが見つかりません」と応答してください。
- ユーザーに紐づくデバイスが存在しない場合は「該当するデバイスがありません」と応答してください。

作成後に、細かい調整を行います。

APIアクションを作成

続いて、GPTから呼び出すAPIを設定します。

今回は、peopleIdを取得するAPIと、そのpeopleIdを使ってデバイス情報を取得するAPIの2つを設定します。

  1. 新しいアクションを作成
  • GPTの構成画面で「新しいアクションを作成する」をクリック
  1. 認証の設定
  • 今回はAPIキーを使用してAPIを呼び出します(APIの仕様に応じて適切に設定してください)。

スキーマ定義

次に、APIのスキーマを定義します。

  1. どのようなスキーマを書けばよいか、GPTに問い合わせます。
このURLで定義されているAPIをカスタムGPTsで呼び出すためのスキーマをYAMLで生成してください
https://docs.itmc.i.moneyforward.com/reference/publicgetpeople
  1. 生成されたスキーマを貼り付け、テストを実施します。
    初回のテストは失敗する可能性が高いため、エラーメッセージを確認しながら修正を行います。
    必要に応じて、GPTに修正依頼をかけながら調整を行います。
  2. 最終的に、以下のような形式でスキーマを設定しました。
openapi: 3.1.0
info:
  title: Money Forward ITMC API
  version: 1.0.0
  description: API schema for fetching people data from Money Forward ITMC.
servers:
  - url: https://api.itmc.i.moneyforward.com
paths:
  /api/v1/organizations/[organizationId]/people:
    get:
      operationId: listPeople
      summary: Get list of people
      description: Retrieves a list of people with optional filtering, sorting, and pagination.
      parameters:
        - name: keyword
          in: query
          required: true
          description: Search keyword for filtering people.
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  people:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        email:
                          type: string
                        department:
                          type: string
                        position:
                          type: string
                  total:
                    type: integer
        "400":
          description: Invalid request parameters
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "500":
          description: Internal server error
  /api/v1/organizations/[organizationId]/devices?locale=ja:
    get:
      operationId: listDevices
      summary: Get list of people
      description: Retrieves a list of people with optional filtering, sorting, and pagination.
      parameters:
        - name: peopleId
          in: query
          required: true
          description: Search peopleId for filtering people.
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  people:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        email:
                          type: string
                        department:
                          type: string
                        position:
                          type: string
                  total:
                    type: integer
        "400":
          description: Invalid request parameters
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "500":
          description: Internal server error

テスト

  1. テスト実行時にAPI呼び出しの許可を求められるので、「許可する」をクリックします。
  • 設定が正しく行われていれば、メールアドレスを指定すると該当ユーザーの貸与デバイス一覧が表形式で返ってきます!

まとめ

今回の例では、デバイス管理サービスAdminaのAPIを利用し、貸与中のデバイス情報を取得するカスタムGPTを作成しました。

このGPTは「参照処理」のみの構成ですが、APIを組み合わせることで後続処理の自動化も可能です。
例えば:
• 画像アップロードすることでデバイスの棚卸しや台帳更新を自動化
• 結果をSlack連携を追加し、デバイス管理の完了通知を送信

カスタムGPTの活用により、SaaSの情報を簡単に取得・操作できる環境を構築できることから、今後もさまざまな業務シナリオに応用していきたいと考えています!
GPTsを業務で活用したい方の参考になれば幸いです!

参考

今回のGPTsでは以下のプロンプトとしています。

このGPTは、Money Forward IT管理クラウドのAPIを使用して、貸与デバイスのリストを取得するためのツールです。

## 機能:
1. 指定されたメールアドレスに紐づくユーザー情報を取得し、対応する`peopleId`を取得します。
2. 取得した`peopleId`を使用して、貸与デバイスのリストをAPIから取得します。
3. レスポンスとして、以下の情報を表形式で返します:
   - `type`
   - `preset.asset_number`
   - `preset.serial_number`
   - `preset.model_name`

## 使用方法:
1. ユーザーは、貸与デバイスを検索する際に必ずメールアドレスを指定する必要があります。
2. 指定されたメールアドレスがユーザー情報に存在しない場合、「該当するユーザーが見つかりません」と応答します。
3. ユーザーに紐づくデバイスが存在しない場合、「該当するデバイスがありません」と応答します。

## API情報:
- ユーザー情報取得エンドポイント:
  `https://docs.itmc.i.moneyforward.com/reference/publicgetpeople`
- 貸与デバイス取得エンドポイント:
  `https://docs.itmc.i.moneyforward.com/reference/publicgetdevices`
- 認証方式:
  API Token (Bearer 認証方式)

## 制約事項:
- メールアドレスが必須パラメータとなります。
- 指定されたメールアドレスに紐づくデバイスのみを返します。
- APIトークンはユーザー側で準備し、適切に管理してください。

このGPTは、IT管理者が貸与デバイスの管理をスムーズに行えるよう設計されています。
株式会社ナレッジワーク

Discussion