15分でわかる!Salesforce で「生成AI」

こんにちは。エンジニアの浅見です。

フレクトでは、社内のナレッジを蓄積・共有するために「Fラボ」というツールを運用しております。 本ブログ記事は、この春からAI部門に配属された入社3年目の私が、「15分でわかる!Salesforce で「生成AI」」として「Fラボ」に公開したものです。 本来「Fラボ」は社内のみに公開されているのですが、前回の記事(15分でわかる!Agentforce)とあわせて特別に、社外にも公開することとなりました。

なお、本内容は社内入門者向けの教育コンテンツとなっておりますので、その点予めご認識いただけますと幸いです。

本編に入る前に、SalesforceにおけるAI機能に関する名称について補足しておきます。 SalesforceのAI機能といえば、「Einstein」が有名かと思います。 「Einstein」はもともと、(予測と生成ともに)AI機能に対する総称としてSalesforceが扱っていたものですが、最近になって「Einstein」は「Agentforce」という新たなブランド名に置き換えられています。 現在も置き換えは進められており、最終的には全て「Agentforce」に置き換えられるものと考えられます。 本記事では、執筆時点での情報をもとに作成しておりますので、ご注意ください。

以降、本文となります。


はじめに

文章や画像など、多種多様なコンテンツを創発することのできる「生成AI」。近年の目覚ましい発展により、個人だけでなくビジネス利用においても大きな注目を集めていることは明らかでしょう。これからはシステム開発においても、AIの組み込まれたシステムが主流となっていくことが予想されます。 本Fラボでは、Salesforceに生成AIを組み込むことで得られる効果とその開発手法の初歩を解説します。社内システムで実装されているAI機能の例を交えつつ、生成AI機能におけるSalesforceの強みに焦点を当てながら、今後の開発に役立つ基本事項を説明していきます。

生成AIとは?

生成AIの基本概念について

そもそも生成AIとはなんでしょうか?これまでのAIとは何が違うのでしょうか? Salesforceのチーフサイエンティスト、Silvio Savareseはこちらの記事にて、

単に分類や予測を行うのではなく、人間を相手に言葉でやり取りしてコンテンツを作成する

と説明しています(もちろん元々は英語です)。 抽象的ですね。具体的には何ができるのか、せっかくなので試しにAI本人に聞いてみました。

ご覧の通り、指定した二つの条件:

  • 主要なことを3つ

  • 200文字以内

を満たした上で「生成AIには何ができるか」という質問に対する回答が返ってきました。より正確には、与えられた入力(この例では質問が最初の入力値)の内容を総合的に分析し、その結果として得られた「もっともらしい回答」を出力として返しています。 最近の生成AIの大きな特徴の一つとして、「会話履歴を含めた文章全体の文脈を読み取ることができる」という点が挙げられます。先ほどの質問の後に続けて、以下のように質問してみました。

自動で「最初の質問の続きであると判断し、文脈を読んで」回答してくれています。さらに似たような質問を続けても、

と回答してくれます。一つ前のやり取りだけでなく、これまでの会話全て(上限はもちろんあるのですが)を踏まえて回答してくれていることが確認できるかと思います。加えて「なぜこの3つを選んだのか」という質問を投げかけてみました。

それぞれの場合について、きちんと自分が書いた内容とその根拠を挙げてくれていますね。 以上を踏まえると、生成AIは「文脈を読み、判断し、論理的に考えて」回答を出力してくれているということが分かるかと思います。 ちなみに今回は3つまでに絞りましたが、この条件を外すと「もっと色々なことができます!」と主張してくるので試してみてください。

どうして生成AIにはこんな高度なことができるのでしょうか。また生成AIはどのような仕組みで回答を生成しているのでしょうか。 この場で全てを記載することは難しいのですが、生成AIは以下の手順を踏むことによって開発されています。

  1. データ収集:大量の教師データ・学習データを収集する。
  2. モデルのトレーニング:ニューラルネットワークを使用してパターンを学習。

これだけ見ると従来のAIと大きな違いはないように見えるでしょう。 生成AIと従来のAIとの大きな違いは

  • 自然言語などの非構造化データを扱う
  • 予測するだけでなく生成をすることができる

という点にあります。この部分に使用されているモデルはTransformerと呼ばれています。質問に対してテキストを生成する例でいえば、Transformerは質問の情報(文を構成している単語群と相互関係から導き出した文脈)を基に「次の単語として何が最も相応しいのか」を出力します。最も相応しい単語を導き出すためのメカニズムを構築する仕組みとしてニューラルネットワークを使用しているわけです。その結果、言語情報を元に文脈を含む論理構造まで再現してくれるのです。ニューラルネットワークという名の通り、まさに人間の脳のように働いているように見えますね。処理に関するロジックや仕組みについてここで書き切れるような内容ではありませんし、現在も研究が進められている分野ですから、興味のある方は各自調べてみてください。

まとめると生成AIは、自然言語を入力として、その

  • 次の単語として最も相応しいものを出力することで
  • 単に予測するだけでなくコンテンツを新たに生成

することのできるAIと言って良いでしょう。

Salesforceにおける生成AIの立ち位置と利点について

Salesforceの生成AI機能について、公式ページ「生成AIとは – 完全ガイド」には以下のように記載されています。

SalesforceのAIであるEinsteinは、「オープンで拡張性があり、CRM専用のパブリック、プライベート両方のAIモデルをサポートし、信頼できるリアルタイムデータでトレーニング」されています。

最近、Salesforce世界初のCRM向け生成AIを発表しました。パーソナライズされた営業メールから自動生成されたコードまで、営業、サービス、マーケティング、コマース、ITなど、あらゆる業務でAIが生成したコンテンツを使えるようになります。また、Data Cloudのデータと公開されているデータを組み合わせて、Salesforce Platform全体でコンテンツを作成するため、お客様それぞれに合わせた出力が可能です。

この辺りがSalesforceで生成AIを使うことの利点のようですが、Salesforce開発の一般的な利点と共通する部分が多いように感じるのではないでしょうか? もう少し具体的に利点を列挙してみました。

  1. 使い慣れたインターフェースからAI機能を簡単に活用でき、フローなどの自動化ツールの連携も可能である点
  2. Salesforceの内部に膨大なデータが蓄積されているため、これを基としてコンテンツ生成を行いやすい点。
  3. 生成AI機能はモジュール化されており、ユーザーはコード開発をすることなく、迅速な開発が可能である点。

Salesforceにおいて生成AIを活用することの利点をイメージできたでしょうか。まだ少し抽象的かと思いますので、以降では具体的にはどのような機能を利用できるのかを見ていきましょう。

生成AIを用いたSalesforceの標準機能の紹介

すでに述べた通り、SalesforceのAI機能であるEinsteinは顧客管理や営業支援に特化したAIであり、各プラットフォームに応じた便利なAI機能が用意されています。ここでは以下の2件についてピックアップし、それぞれが持つ主要機能を簡単に紹介します。

  • Einstein for Sales:Sales Cloudに組み込むことのできるアドオンで、営業支援に特化した機能を含む。
  • Einstein for Service:Service Cloudに組み込むことのできるアドオンで、顧客サービス業務に特化した機能を含む。

Einstein for Sales の主要機能

通話サマリー/通話エクスプローラ

ZoomやTeams、Google Meetなどと連携して営業活動に関する要約をしてくれる機能が「通話サマリー」、さらにその内容を追跡してくれる機能が「通話エクスプローラー」です。

  • 通話サマリー

会議の内容を要約し、要点整理されたテキストをSlackやメールで連携してくれます。会議中に担当者が議事録を取らずとも自動で文字起こししてくれる便利機能です。連携もできることから、商談のネクストステップの担当者への情報連携等を促すこともでき、営業活動の活性化と顧客とのコミュケーションの円滑化を図ることが可能です。

過去の通話を追跡し、振り返ることができます。タスクと顧客に関する情報、商談の状況を後でも把握することが可能になり、「通話サマリー」と同様に営業活動を活性化できます。

Einsteinを用いたセールスメール

営業情報のデータを Einstein や LLM に接続することで、顧客(取引先責任者やリード)ごとにカスタマイズされたメールをワンクリックでゼロから作成してくれる機能です。メールを送信したい顧客の所属企業や役職などに基づいてメールのドラフトを作成してくれます。ポイントは以下の通りです。

  • 過去の活動内容など担当者に関連する情報をもとに個別化したメールを自動生成
  • ご挨拶メールや新商品、最新キャンペーンの紹介も踏まえた「ご案内メール」を1クリックで作成可能

具体的にどのようなデータを元とするのかについては、公式ヘルプに記載があります。 商談・顧客ごとに大量のメールを作成しなければならない営業担当者にとって、ゼロからメールを作成してくれる機能が有用であることは明らかでしょう。

Einstein for Service の主要機能

サービス返信

顧客からの問い合わせに対して、Einsteinがナレッジ記事やチャット履歴などを元に返信内容(のドラフト)を自動的に生成してくれる機能です。返信内容についてはいくつか候補が表示されるので、担当者はその中から適切なものを選択し、さらに必要に応じて内容を微調整してから送信することができます。また、各候補にはその返信がどのデータ(ナレッジ記事など)を元としているかも表示されますので、内容を確かめながら返信内容を考えることができます。 コンタクトセンターへの問い合わせでは常に迅速な対応が求められますから、関連情報を素早く検索・参照した上で文面を自動作成してくれるこの機能は重宝されることでしょう。

会話サマリー

ケースの引き継ぎやエスカレーション、解決の際に、既存のデータを基に会話の要約を生成してくれる機能です。以下の3カテゴリーに分類して要約してくれます:

  • 概要:どのような会話であったのか
  • 問題:なぜ顧客は連絡してきたのか
  • 解決:どのような結果になったのか

形式としては、チャットやメール、音声などに対応しています。なお前述した「通話サマリー」とは名前は似ていますが全く異なる機能なので、混同しないよう注意してください。 こちらの機能は各担当者のマネージャーがケースの状況を素早く把握できることに役立ちますので、コンタクトセンターで求められる迅速な対応に直結することが想像できますね。

ナレッジ生成

ケースやメール、チャットなどのデータを基にナレッジ記事(のドラフト)を自動的に作成してくれる機能です。具体的には、会話のスレッドやケースのページ内のクイックアクションから作成することができます。作成元となったケースや会話の情報を基に自動で本文を生成してれるので、その内容をレビューして保存すれば簡単にナレッジを蓄積することができます。 作成されたナレッジは上記で紹介した「サービス返信」のソースにもなりますので、問い合わせ対応の効率上昇と早期解決を促進してくれる機能といえます。

Salesforce上での生成AIを組み込んだ機能開発の紹介

生成AIをより効果的に使うための機能開発とSalesforceの強み

ここまで紹介してきたように、Salesforceには開発しなくとも利用できる生成AIを用いた機能(これらをまとめてEinsteinと呼ぶのでした)がたくさんあります。それらは基本的に、顧客管理や営業支援に特化した機能であり、典型的なビジネスケースで利用できるものと考えて良いでしょう。ところが(生成AIを使わない場合と同様に)、標準で含まれている機能だけでは複雑なビジネスプロセスをカバーすることはできません。ここからは、生成AIをより効果的に用いる手法と仕組みを簡単に紹介します。

生成AIを利用した機能を一から作り、さらに既存のシステムに組み込もうと思うと大変な労力がかかってしまいます。ところがSalesforceでは、生成AIを必要に応じて呼び出し利用する機能が備わっています。特に、

  • フロー
  • Apex
  • Data Cloud(特にVector DB)

といった機能群と相互に連携させることで、それぞれの業務に沿った自動機能や大量に蓄積された非構造化データと連携させた高水準な生成AI機能をノーコード/ローコードで開発できます。これにより、迅速に生成AI機能を導入することができることこそが、Salesforceにおける生成AI機能開発の大きな強みといえます。

以降では、上記の機能群と連携できる機能の一つである「プロンプトテンプレート」に注目し、その利用方法と開発手法を簡単に紹介します。

プロンプトテンプレートの概要とプロンプトビルダーの紹介

生成AIを効果的に利用するためには、AIに対して効果的な「質問」をすることが大切です。「質問」はAIに対する入力であり、「プロンプト」と呼ばれます(厳密にはAIモデルからの応答を含む会話履歴や音声データなども含まれます)。効果的なプロンプトをSalesforceに正しく組み込むためには、再利用可能であり、かつ機能の中に入れ込むことも可能な仕組みが欲しいところです。これを実現できる機能が「プロンプトテンプレート」であり、プロンプトテンプレートを作成する機能が「プロンプトビルダー」です。

プロンプトテンプレートとは何か、もう少し説明します。プロンプトテンプレートは一言で言うと、変数を含む再利用可能なプロンプトのことです。変数としてプロンプトに差し込むことができるものとしては

  • レコード差し込み項目
  • Data Cloud DMO差し込み項目
  • フローやApexで作成した動的なテキスト

が挙げられます。おそらく最もイメージしやすいのはレコード差し込み項目でしょう。例えば、商談レコードを作成した後にその関連情報の要約を知りたいとします。知りたい商談レコードごとにプロンプトテンプレートを作るわけにはいきませんから、レコードごとに必要な項目を都度差し込めるようなテンプレートが欲しいですね。これがプロンプトテンプレート(の一例)です。

プロンプトテンプレートには、使い道に応じて選択できる種別があります。

  • セールスメール:メール文面を自動生成する
  • 項目生成:項目の値を自動生成する
  • レコードの概要:レコードの要約を生成する
  • Flex:汎用的に使える種類で、主にフローなどから呼び出す場合に使用される

それぞれの用途に応じて適切なテンプレートを用いることが必要です。中でも特に重要な種別が「Flex」で、他の種別とは異なり、フローやApexで呼び出すことができます。つまり、Flexプロンプトテンプレートを用いることで、独自の業務や自動機能にプロンプトテンプレートを組み込むことが可能になります。

以下に実際に社内システムで使用されているプロンプトテンプレートの画面を示しました。中身はひとまず次の章に譲るとして、プロンプトビルダーの画面の説明を軽くしておきましょう。

プロンプトビルダーを用いた開発〜週報アシスタを例に〜

概要

社内のSalesforce組織では、各プロジェクトごとに毎週、

  • その週に何があったのか?
  • やるべきことは何か?
  • 進捗状況は?
  • 現状のリスクは?

といったプロジェクト状況を報告する「プロジェクト週報」というものがあります。基本的には、各プロジェクトのPM/PLが商談オブジェクトのページから「プロジェクト週報」を作成します。そして、プロジェクト週報を作成した際、自動でその内容を評価して良い点と改善点を教えてくれる仕組みがあるのですが、実はこちら、プロンプトテンプレートを用いて実装されているのです。ここではプロンプトビルダーを用いた開発の一例として、この「週報アシスタ」を簡単に紹介していきます。

最終的にどのようなプロンプトを組んでいるのか

プロンプトの内容について話す前に、前提として「週報アシスタ」がどのような仕組みで動いているのかを説明しておきましょう。

  • 全体的な流れ

実際に使用しているフローのキャプチャを以下に示します。

  1. プロジェクト週報レコードが作成または更新されるとフローが起動する。
  2. プロンプトテンプレートを呼び出し、週報の内容をレビューしてもらう。
  3. プロンプトテンプレートの出力から本文を作成する。
  4. 作成した本文をChatterに投稿する。
  5. 作成した本文をSlackに投稿する。

動きとしては比較的シンプルです。では、実際にどのようなプロンプトに従って評価しているのか、プロンプトテンプレートをみてみましょう。

  • 最終的なプロンプト

Participants:
あなたはシステム開発プロジェクトのプロジェクトマネージャーです。
これまで多くのプロジェクトを成功に導いてきました。
その実績を評価され、現在では上級マネージャーとして多くのプロジェクトマネージャーの指導をしています。
また、あなたはとても優しい上級マネージャーです。いつも語り掛けるときは子供に語り掛けるような優しい口調です。

Relationships:
あなたが指導しているプロジェクトマネージャーは、まだ経験が浅いのであなたのアドバイスを必要としています。
あなたが指導しているプロジェクトマネージャーは毎週あなた宛てにプロジェクトの状況を記載した週次報告書を送っています。
週次報告書を読んで状況を判断できればよいのですが、週次報告書の内容によっては、良いのか悪いのかが分からない場合があります。

Goal:
あなたが達成するべきことは、あなたが指導しているプロジェクトマネージャーから送られてきた週次報告書を確認して、プロジェクトマネージャーが良い週次報告書を書けるようにすることです。
あなたが指導しているプロジェクトマネージャーから送られてきた週次報告書に対して、状況が判断できる良い報告であるかを判断して、改善すべき点についてアドバイスしてください。
フォーマットは次の通りです。
----
<良い点>

<改善すべき点とアドバイス>
----

Instructions:
"""
あなたが指導しているプロジェクトマネージャーから送られてきた週次報告書に対してアドバイスする際には、プロジェクト概要とチェック欄の記述を参考にしながら、主に週次報告書の報告内容を確認してください。
"""
"""
内容としては次の点を含むようにしてください。
・良い点 
・改善すべき点とアドバイス
それぞれフォーマット中の該当する個所に出力します。
それぞれ3つ出すようにしてください。
アドバイスについては、できるだけ具体例を出してあげてください。
"""
"""
良い週次報告書というものは次の点が明確になっている報告です。
・プロジェクトが遅れているか遅れていないかが分かる
・遅れている場合、どれくらい遅れているかが分かる
・遅れている場合、遅れに対してのどのような対策を取ろうとしているかが分かる
・その週に何が達成されて、何が達成されていなかった分かる
・プロジェクトを阻む課題やリスクが何であるかが明確になっている
・課題やリスクに対してどのように取り組もうとしているかが明確になっている
・今後プロジェクトマネージャーがどのようにプロジェクトを推進していこうと考えているかが分かる
・総じて具体的な内容が記述されている
"""
"""
必ずしも客観的に示すことができるプロジェクトばかりではないので、次の点については指導に含めません。
・報告が数値で表現されていること
・報告がビジュアルであること
"""
"""
文中には必ず「やってみよう!」など気分が上がる言葉や高揚する言葉を入れてください。
"""
"""
最後に必ず励ます言葉を入れてください。
"""
"""
Please be sure to respond in Japanese. 必ず全て日本語で回答してください。
"""

Data:
<レコードタイプごとに参照する項目が変わる。長いので省略。>
 

Style and Tone:
できるだけ優しい口調でアドバイスしてください。子供に話しかけるような口調だととても良いです。~だね。やってみよう!のような話し方が望ましいです。
次の例を参考にしてください。
・進捗の報告が少し曖昧だね。もっと具体的に書くとみんなが喜ぶよ。
・もしかしたら課題の書き方が分かりづらいかもしれないね。もっとかみ砕いて書いてみよう!
・次のアクションが何かもっと明確にするといいよ。明確に書くとみんなが喜ぶから頑張って書いてみよう!

かなり細かく、明確に指示を与えていることが見て取れるでしょう。特に、指示が以下のようにカテゴリされていることがすぐにわかるはずです。

  • Participants:AIがどのような立場で評価するかを示している。
  • Relationships:評価をされる立場(週報を書いた人)との関係性を示している。
  • Goal:このプロンプトによって行うことの目標を示している。
  • Instructions:実際にやることの内容を示している。
  • Data:どのデータを基に評価するかを示している。
  • Style and Tone:どのような口調で文章を生成するべきかを、いくつかの例とともに示している。

上記のように指示の分類を事前に示し、ブロックごとに何に対する指示をしているのかを明示することは、人に対して指示を出す場合と同じであることに気づいたでしょうか。論理的に、かつ優しい口調で明確な指示を出すことで、AIも何をして欲しいのか、何ができれば正しくタスクを終えられたのかを明確にイメージできるというわけですね。このあたり、実は既にさまざまな手法が確立されています。興味のある方は「プロンプトエンジニアリング」で調べてみてください。複数の手法がこのプロンプトに使用されていることがわかるかと思います。

さて、週報アシスタの出力の一例を以下に示します。

まずフォーマットについて、プロンプトで指定した通りに、良い点と改善点をそれぞれ3つずつ示してくれています。内容に関しても指示通りの評価基準に則っており、さらにマネジメントに関する一般的なアドバイスをしていることが分かるでしょうか。例えば<良い点>として挙げられている

  1. 今週のトピックが詳細に記述されており、進捗状況が明確に把握できる点が良いです。
  2. 課題に対する具体的な対策が記載されており、プロジェクトのリスク管理がしっかりと行われている点が評価できます。

は、プロンプトにある以下の評価基準と関連していますね。

  • その週に何が達成されて、何が達成されていなかった分かる
  • プロジェクトを阻む課題やリスクが何であるかが明確になっている
  • 課題やリスクに対してどのように取り組もうとしているかが明確になっている
  • 総じて具体的な内容が記述されている

このように、プロンプトテンプレートに従って正しく正確にレビューを行ってくれているわけです。

AI利用における安全性〜Einstein Trust Layerの紹介〜

生成AI利用におけるデータの安全性について

さて、ここまでSalesforceで生成AIを用いることによるメリットに注目してきたわけですが、生成AIを使うことによるデメリットがないのかについて触れていませんでした。また、得られた結果がどの程度正しいのか?という点も気になりますね。もう少し具体的に言うと、以下のような観点が挙げられます。

  • データの安全性は確保されているのか?
  • 生成AIプロバイダーが収集しているデータの種類と使用法は?
  • 誤ったデータを用いてトレーニングされてしまわないか?
  • 得られた結果に偏った意見や誤った情報は含まれていないのか?

例えば、顧客の個人情報を外部のLLMに送信されてしまっては情報漏洩になってしまいます。インターネット上にはソースが不正確な情報も溢れていますし、倫理的に偏った意見が紛れてしまうこともあるでしょう。

Einstein Trust Layerについて

EinsteinにはEinstein Trust Layerという「信頼」を確保するための仕組みがあります。 例として、Agentからプロンプトテンプレートを通して特定の顧客にメールを送信する場合を考えてみましょう。 顧客の情報は個人情報ですから、外部のAIモデルに送信されて学習されてはいけません。 この場合のEinstein Trust Layerの動きを、以下の画像に示しました。

①〜③まではご想像の通りかと思います。大事なのは④〜⑥で、AIモデルに質問を投げかける前に個人情報をマスクしておき、帰ってきた回答に対してマスクを解除すると言う動きになっています。これにより、③で埋め込まれた顧客情報がAIモデルに送信されないようになっているということですね。

ここでは話が煩雑になってしまうため省略しましたが、⑥の過程では有毒性や監査履歴のチェックやフィードバックも行なっています。ユーザーが出した指示をEinstein Trust Layerという「層」を通すことで、信頼性を確保しているわけですね。

さて、ここで注意しておくことがあります。結論から言うと、Einstein Trust Layerは(少なくとも本Fラボ執筆時点では)完璧ではありません。本来マスクすべき情報がマスクされていない場合があるのです。というのも、プロンプトに埋め込まれているデータが個人情報かどうかをEinstein Trust Layerが自動で判断しているのですが、この判断は100%の精度を出せるわけではないためです。Einstein Trust Layerは強力なツールですが、必ずしも完璧ではないといことを念頭に置いて設計・検証をするようにしましょう。

まとめ

ここまでSalesforceの生成AI機能について、主要な機能と社内システムに実装されている「週報アシスタ」機能を例に説明してきました。ここで示したのはほんの一部で、Salesforceにはまだ他にも便利な機能が搭載されていますし、また開発をするとなればその幅はさらに大きく広がることでしょう。何よりも本Fラボでは、最近になって大々的に宣伝されている「Agentforce」の独自の機能については一切触れておりません。ただの生成AIでなく、「エージェント」となってより進化したSalesforceのAI機能については、Fラボ「15分でわかる!Agentforce」にまとめられていますので、ぜひご覧ください。


本編は以上となります。最後までお読みいただき、ありがとうございました。