神奈川県川崎市のホームページ制作・WEBマーケティング会社
  • 044-811-0333(平日:10:00〜17:00)

ChatGPTを使って自社データベース連携して製品提案してもらう営業ツールを作る事例

ChatGPTを使って自社データベース連携して製品提案してもらう営業ツールを作る事例

2023年今年大きな話題のひとつになったChatGPTですが、自社製品データベースと連携するには?どういう回答が得られるか?営業マンの支援ツールとして利用できるのか?実際にコードを書いて実験してみました。

(本記事はChatGPTの活用事例の紹介を目的としております。コードの書き方について詳しくは説明しておりません。記事内に今回の記事で作成したコードのリンクを記載しておりますので、実装について詳細を知りたい方はそちらのリンクからコードを参照ください。)

きっかけ

先日ニュース(2023年12月現在)で、会社員の方がChatGPTをどのように利用されているかを特集した番組でプリンターを扱う新人の営業の方が、ChatGPTを使って顧客の要望からプリンターを検索するという使い方をされていました。

ChatGPTと会社の製品データベースを連携させることで便利な営業サポートツールを作れるのではないかと考えたのがきっかけです。

ツールの概要

ChatGPTにはいくつかデータを学習させる手段がありますが、今回の記事ではChatGPTのFunction Callingという機能を利用してみます。

Function Callingとは簡単に言うとChatGPTとの会話から様々な機能(Function)を呼び出すことができます。

例えば、企業のデータベースとAPIで連携して結果をChatGPTで受け取り結果を得るということができます。またChatGPTが会話から判断して適した機能を自動で呼び出してくれます。
Function Callingで天気を回答してくれる機能と、スケジュールを回答してくれる機能をもたせた場合、「明日の天気は?」と聞くと自動的に天気を回答してくれる機能を呼び出して、明日の天気を回答してくれます。

本記事ではPythonを使ってコマンドラインでのチャットツールを作成します。


製品データベースの設計について

製品はプリンターを想定して簡単なデータベースを考えてみます。データベースの項目としては下記のような感じでデータベースがあるとします。

  • モデル名
  • メーカー名[A社、B社、C社、D社]
  • 発売日
  • メーカー価格(円)
  • 対応用紙サイズ[A4、A3]
  • カラー印刷
  • トレイ容量(枚)
  • インクコスト(円)
  • サイズ横幅(mm)
  • サイズ奥行き(mm)
  • サイズ高さ(mm)
  • カラー印刷速度
  • モノクロ印刷速度
  • スキャン機能[あり/なし]
  • 両面印刷機能[あり/なし]
  • コピー機能[あり/なし]
  • ファックス機能[あり/なし]
  • 特徴

プログラムの説明

ここではテストで組んだプログラムの詳しい説明は省きますが、動作としては下記になります。

  1. チャットに探したいプリンターの用途や特徴などを入力してプリンターを探すというメッセージを流します。
  2. ChatGPTがメッセージの意図を組んで、データベースに検索APIを投げます。
  3. 検索APIから戻った返答をChatGPTが回答します。


という流れになりますが、本記事では実際には検索APIはつくらずに検索APIに投げるパラメーターを返すようにしてます。これでChatGPTに送ったメッセージに対してChatGPTがどのように回答したかがわかるようになっております。

Function Callingのポイントとしては検索APIの各種パラメータをChatGPTに教えてあげることで、チャットのメッセージに適切なパラメーターをChatGPTが選択してAPIを呼び出してくれる点です。
下記はFunction Callingのプリンター製品を検索する機能の設定例です。

my_functions = [
    {
        "name": "search_printer_products",
        "description": "Searches for printer products based on specified criteria and returns their information.",
        "parameters": {
            "type": "object",
            "properties": {
                "model_name": {
                    "type": "string", "description": "The model name of the printer."
                },
                "manufacturer": {
                    "type": "string", "enum": ["Company A", "Company B", "Company C", "Company D"], "description": "The name of the printer's manufacturer."
                },
                "release_date_from": {
                    "type": "string", "description": "The start range of the release date (YYYY-MM-DD)."
                },

以下にコードをGithubにあげておりますので、ご自身で試されたい方はコードをコピーしてご利用ください。
https://gist.github.com/mif-git/79ef7cfe91fe3ff083b1067a22c36379

実行結果

実行結果は下記のような感じです。

解説

input message: こんにちは
こんにちは!何かお手伝いできることはありますか?

まずは挨拶から。ChatGPTの動作を確認。input messageにメッセージを入力してenterを押すと、ChatGPTから返答が帰ってくる仕組みです。

input message: 小さな事務所に適したサイズのプリンターを探して
プリンター提案機能を開始します。
Function response: {'width_max': 400, 'depth_max': 400, 'height_max': 300}

「小さな事務所に適したサイズのプリンターを探して」という質問に対して、Function Callingでプログラムした「プリンター提案機能」が起動しました。「プリンター提案機能を開始します。」というメッセージが表示されます。

その後、最大横幅(width_max)400mm、最大奥行(depth_max)400mm、最大高さ(height_max)300mmの製品を検索するパラメーターが戻りました。
家庭用の小型なプリンターくらいのサイズをChatGPTが判断して検索するように返答しました。

実際に検索APIを実装した場合はこのパラメータを検索APIに送信し結果を表示するという流れになります。(本記事では検索API側は実装していません。)

input message: もうすこし大きめのサイズでも大丈夫
プリンター提案機能を開始します。
Function response: {'width_max': 500, 'depth_max': 500, 'height_max': 350}

もうすこし大きめのサイズを要望します。最大横幅(width_max)500mm、最大奥行(depth_max)500mm、最大高さ(height_max)350mmという回答が戻りました。すこし大きくなりましたね。


input message: A3も印刷できる機能がほしい
プリンター提案機能を開始します。
Function response: {'paper_size': 'A3', 'width_max': 500, 'depth_max': 500, 'height_max': 350}

さらにA3まで印刷できる機能を要望します。用紙サイズ(paper_size)にA3が追加されたパラメーターが戻りました。ChatGPTの特徴として会話の前の流れに沿った回答を返してくれるところが便利です。

input message: B社のプリンターで
プリンター提案機能を開始します。
Function response: {'manufacturer': 'Company B', 'paper_size': 'A3', 'width_max': 500, 'depth_max': 500, 'height_max': 350}

今度はB社製という条件を追加しました。メーカー(manufacturer)がCompany Bというパラメーターが追加されて戻ってきています。

input message: さらにプリント速度が早いものを探して
プリンター提案機能を開始します。
Function response: {'manufacturer': 'Company B', 'paper_size': 'A3', 'width_max': 500, 'depth_max': 500, 'height_max': 350, 'color_print_speed_min': 20, 'mono_print_speed_min': 20}

さらに、「プリント速度が早いものを探して」と大雑把な要望を出します。するとカラー印刷速度(color_print_speed_min)20枚以上、モノクロ印刷速度(mono_print_speed_min)20枚以上という条件をパラメーターに追加しました。賢いです。

input message: 価格は10万円以下で
プリンター提案機能を開始します。
Function response: {'manufacturer': 'Company B', 'price_max': 100000, 'paper_size': 'A3', 'width_max': 500, 'depth_max': 500, 'height_max': 350}

最後に10万円以下でという条件を加えてみます。
最大価格(price_max)100000円という条件を加えた検索をしてくれました。

結果の出力について

本記事では実際のAPIの結果を得るプログラムにはなっておりませんが、実際に得た結果をどのように表示するかはツールの作り方次第で様々な出力方法が可能です。チャットの中で箇条書きやテーブルで表示したり、またはモーダル表示で一覧を表示させることもできます。

さらなる便利な使い方

検索APIでデータベースからお客様の声やセールストーク、注意点などを製品情報とともに引き出すようにしておくと、それも評価してChatGPTがコメントしてくれたり、呼び出した検索結果の製品の比較情報もすぐにChatGPTがまとめてくれたりということもできるでしょう。もしかしたらこのレコメンドをまとめてくれる機能が便利かもしれません。


ChatGPTに企業が持っているデータベースをAPIで連携させることで色々な業種で営業活動をサポートするツールが作成できそうですね。
ChatGPTを活用したツールの企画の助けになれば幸いです。

ChatGPT開発案件のお問い合わせ

弊社ではChatGPTを活用したツール開発の企画開発を行っております。ChatGPTがわからないという方でもサポートさせていただきますのでお気軽にお問い合わせください。

HoriiMitsuo

代表取締役 WEB業界でプロデュース、ディレクション実績多数。企業ホームページ、WEBサービスのコンサルティング、プロデュースを得意としています。