Heroku と Agentforce を活用したスーパーエージェントの構築

Heroku は汎用性の高い PaaS ソリューションですが、さらに Salesforce ポートフォリオ全体と組み合わせることで、データの種類、場所、規模、構造に関わらず、顧客データを解放し統合する力を発揮します。Salesforce の顧客が Heroku を利用する主な理由の一つは、お客様向けのウェブアプリケーションやモバイルアプリケーションといった大規模なエクスペリエンスにデータを安全にリンクさせる必要がある場合や、リアルタイムでより複雑で高度なデータをアクセス・分析するためのスケーラブルな計算資源が必要な場合です。本記事では、Heroku プラットフォームを活用して多様なデータソースを変換し、従業員が業務の流れの中で活用できる包括的なリアルタイム情報を提供する方法について説明します。
(本記事は [Building Supercharged Agents with Heroku and Agentforce](https://blog.heroku.com/building-supercharged-agents-heroku-agentforce) の翻訳です。)

![1729003747-1-heroku-and-agentforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/4b3f0f2f-d309-551a-06e4-c8b03987b326.png)
Salesforce は先日、[Agentforce](https://www.salesforce.com/jp/agentforce/) と呼ばれる新しい AI 主導のテクノロジーを発表しました。
この技術には、Customer 360 内のサービスや営業、その他さまざまな業界向けに特化した事前構築型エージェントが含まれています。Agentforce は、AI エンジンに定義された個別のアクションに基づき、これを用いてユーザーの質問を解釈し、1 つまたは複数のアクション（事実上のコード化された機能）を実行して回答を提供します。

しかし、特定のビジネスやワークフローに応じたアクションが必要な場合があります。こうした場合、コードやローコードソリューションを使用してカスタムアクションを構築することで、Agentforce のアクションの幅を拡張できます。Salesforce 内に必要なデータが存在し、処理の複雑さや計算リソースのニーズが最小限の場合、まず Apex や Flow の利用を検討する価値があります。ただし、これに該当しない場合、Heroku を活用して Apex 以外の言語で書かれたカスタムアクションを Agentforce エージェントに追加できます。本ブログではその具体例をご紹介します。
## Agentforce ユーザーである UltraConstruction の事例紹介
まずは、具体的なユースケースを見てみましょう。設立 60 年を迎えた UltraConstruction は、顧客対応に Salesforce Sales Cloud と Service Cloud のエージェントを利用しています。しかし、古い非構造化の請求書がクラウドアーカイブに保存されており、AI エージェントがこれらにアクセスするのに課題が生じ、遅延や顧客の不満につながっていました。
![1729003814-2-agentforce-access-challenges.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/0c05a2d0-480b-935f-0c41-8660aa1ae682.png)

※ 以下上記の日本語訳

**(Customer) What is the total invoiced amount between 1980 and 2000?**
(お客様) 1980年から2000年の間の請求総額はいくらですか？

**(Agent) It seems I'm unable to retrieve the total invoiced amount between 1980 and 2000 at the moment. Please try again later or contact your system administrator for further assistance.**
(エージェント) 現在、1980年から2000年の間の請求総額を取得することができないようです。後でもう一度お試しいただくか、さらなるサポートが必要な場合はシステム管理者にお問い合わせください。

＊＊＊

UltraConstruction 社の Agentforce 開発者たちは、古い請求書データが Microsoft Word、PDF、画像などの非構造的形式でクラウドファイルアーカイブに保存されていることをつきとめ、これらの情報をインポートする必要はなく、エージェントがアクセスできれば十分だと判断しました。

![1729003842-3-archived-invoices.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/86ab5ce7-7818-4dec-ffcc-6fba434d7d4d.png)

UltraConstruction 社の開発者たちは、Java にこれらの形式を処理する豊富なライブラリがあり、Heroku がリアルタイムでデータを処理・分析するための垂直スケーラビリティを提供していることに加え、さらに、AI の助けを借りることで、クエリ対応の柔軟性が向上することがわかり、開発に取り掛かりました。彼らが Heroku 上で開発したカスタム Agentforce アクションは、データを移動させることなく情報にアクセスし、営業やサービスの従業員が遭遇するあらゆるクエリに対応することが可能になります。

![1729003873-4-agentforce-heroku-access.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/45cd32aa-244c-b7e3-d06a-2a0fe8b8984d.png)

※ 以下上記の日本語訳

**(Agent) Hi! Agentforce can do things like search for information, summarize records, and draft and revise emails. What do you want to do today?**
(エージェント)こんにちは！Agentforce は、情報検索、レコードの要約、メールの作成や修正などが可能です。どんなことをご希望でしょうか？

**(Customer) What was the total number of units sold for Consulting Hours from the invoices?**
(お客様) 請求書におけるコンサルティング時間の販売合計ユニット数はいくつですか？

**(Agent) The total number of units sold for Consulting Hours from the invoices is 52,385.**
(エージェント)請求書におけるコンサルティング時間の販売合計ユニット数は 52,385 です。

**(Customer) What was the total invoiced amount for Planning Meetings?**
(お客様) プランニング会議の請求総額はいくらですか？

**(Agent) The total invoiced amount for Planning Meetings is $360,000.00.**
(エージェント)プランニング会議の請求総額は 360,000 ドルです。

**(Customer) Which invoiced product had the most units sold?**
(お客様) 請求書における最も多く販売された製品はどれですか？

**(Agent) The invoiced product with the most units sold is Consulting Hours with a total of 61,096 units.**
(エージェント)請求書における最も多く販売された製品は「コンサルティング時間」で、合計 61,096 ユニットです。
## Agentforce と Heroku 統合の設計について考えてみる

UltraConstruction 社のようなケースは、データの種類、年代、場所、規模、構造に関わらず発生する可能性があります。Salesforce 内にあるデータに対しても、Heroku とその多様な言語、柔軟に管理可能な計算資源を使用することで、分析、変換、アドホッククエリなどのより高度な計算タスクが可能です。UltraConstruction 社の Agentforce アクションを紐解く前に、まずは Heroku を Agentforce と一緒に使用するための全体的なアプローチを見てみたいと思います。

![1729004022-5-agentforce-heroku-blueprint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/2e6615db-f47d-7420-83b2-a1307d8c2d11.png)
図の右端には、様々な形状、サイズ、場所の顧客データが描かれており、エージェントに代わって Heroku 管理コードがこれらにアクセスします。図の上部では、Agentforce が使用するアクションを管理しています。Heroku で稼働するアクションは、[外部サービス](https://help.salesforce.com/s/articleView?id=platform.external_services.htm&type=50)経由で公開され、その後エージェントビルダーを介して エージェント アクションとしてインポートされます。

図の下半分では、[外部サービス](https://help.salesforce.com/s/articleView?id=platform.external_services.htm&type=50)が使用されているため、Heroku アプリケーションに必要なのは、アプリケーションの API 入力と出力、具体的にはアクションのリクエストと応答を記述するための OpenAPI 標準をサポートすることだけです。最後に、Heroku アプリケーションは他のサービスを呼び出したり、[Heroku アドオン](https://jp.heroku.com/elements/addons)を活用したり、開発プロセスを大幅にスピードアップするライブラリとともに多くの業界標準プログラミング言語を利用できることを覚えておいてください。

## Agentforce Heroku アクションのサンプル

ユースケースと一般的なアプローチについてご理解いただけたと思いますので、次のビデオと GitHub リポジトリのREADME ファイルで、実際に試してみましょう。このアクションは、UltraConstruction 社が直面した状況をシミュレートするように構築されていますが、サンプルをより理解しやすく、展開しやすくするために、いくつかの部分は簡略化されています。次の図は、上記のブループリントがどのようにして作成され、必要なアクションを構築するために拡張されたかを示したものです。
![1729004064-6-agentforce-heroku-action.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/1b74dee2-975f-3da0-9869-a25b80d90598.png)
主な変更点は以下の通りです：

* **Java と [Spring Boot](https://spring.io/projects/spring-boot)**
Spring フレームワークは、データ管理、セキュリティ、AI LLM（AI の大規模言語モデル）呼び出しを最小限のコードで実現する幅広いツールを提供します。
* **[H2](https://www.h2database.com/html/main.html) インメモリデータベース**
請求書ドキュメントから処理されたデータをリレーショナル形式で保存し、クエリに即座に対応します。
* **[springdoc.org](https://springdoc.org/) を使用した OpenAPI スキーマを生成**
Java の厳密な型指定が API の構築・定義に適しており、最小限の設定で OpenAPI に準拠する API を生成できます。
* **[Spring AI](https://spring.io/projects/spring-ai) を利用した LLM へのアクセスを簡素化**
OpenAI を含む主要な LLM を活用するための設定が簡単で、時には 1 行のコードだけで強力な機能を利用できます。この場合、Agentforce エージェントで入力された自然言語クエリを SQL に変換し、H2 データベースで実行し、その結果を Agentforce に返して自然言語で回答します。

## Heroku によるサンプル Agentforce アクション

アーキテクチャ図の詳細や、コード、デプロイ方法は GitHub リポジトリの [README](https://github.com/heroku-reference-apps/agentforce-archive-agent?tab=readme-ov-file#archive-agent-for-use-with-agentforce) ファイルやビデオをご覧ください。

<iframe width="800" height="450" src="https://www.youtube.com/embed/mNgrdf1GX-w" title="Building Supercharged Agents with Heroku" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## まとめ

コードは統合のための強力なツールですが、Herokuは、[Heroku Postgres](https://www.heroku.com/postgres) や [Heroku Connect](https://www.heroku.com/connect) 製品を通じて、Salesforceのデータをアプリケーションに近づける、すぐに使える統合機能も提供していることをぜひ知っていただけると嬉しいです。もちろん、Data Cloudとの統合もサポートしています。Herokuは、マネージド PostgresSQL データベースの拡張機能としてベクトルデータベースである [pgvector](https://devcenter.heroku.com/articles/pgvector-heroku-postgres) も提供しています。これにより、検索の拡張生成や意味検索のニーズに対応することもできます。どのように動作するかについてはこちらからご覧いただけます。本記事で紹介したお客様のシナリオではここまでの機能は必要ありませんでしたが、他のエージェントの使用例ではこれらの機能が役立つ可能性がありますし、活用することでエージェントのアクションをさらに強化できるでしょう。

最後に、Heroku ではフィードバックを大変ありがたいと考えています。より幅広いアイデアやフィードバックをお持ちの方は、ぜひ [Heroku の GitHub ロードマップ](https://github.com/heroku/roadmap)からお知らせいただけると嬉しいです。

## その後のアップデート

本記事公開後、さらに追加コンテンツをリリースしました。

Java と Python で利用できるこのステップバイステップの[チュートリアル](https://github.com/heroku-examples/heroku-agentforce-tutorial?tab=readme-ov-file#creating-agentforce-custom-actions-with-heroku)では、Heroku 上にデプロイされた Agentforce のアクションを Salesforce の組織内で設定する方法を説明しています。最後まで進むと、以下のように、Agentforce にあなたのための生成を依頼できるようになります。
![1732029927-agentforce-heroku-tutorial.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/b59350ea-808f-5d53-f053-6103052f927c.png)
追加のデモンストレーション[ビデオ](https://www.youtube.com/watch?v=yd97A9GLFUA&t=2s)と[サンプルコード](https://github.com/heroku-examples/agentforce-collage-agent)では、Heroku がどのように Agentforce エージェントの能力を強化するのかについて、さらに詳しく説明しています。人気の [Coral Cloud Resort デモ](https://developer.salesforce.com/sample-apps) (※訳註 : [こちら](https://developer.salesforce.com/jpblogs/2024/10/jp-agentforce-handson-coral-cloud-resorts-sampleapp)がサンプルアプリの説明の日本語版の記事です)の拡張版では、休暇中のゲストが Agentforce を使用してユニークな体験を閲覧したり予約したりすることができます。Heroku を使用すると、エージェントは各ゲストに合わせたパーソナライズされた冒険の写真コラージュを作成することもでき(以下はその例です)、Heroku 上のカスタムコードが Agentforce プラットフォーム内でダイナミックなデジタルメディアの作成を直接可能にする様子をご覧いただけます。
![1731654192-coral-cloud-resorts.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1529732/d46ac732-f8dc-4c47-27e6-15304b7df4d3.jpeg)

### 著者について
**[アンドリュー・フォーセット (Andrew Fawcett)](https://blog.heroku.com/authors/andrew-fawcett)**
Developer Relations VP at Salesforce, is a #Heroku team member contributing to the Heroku blog. Read all posts by #Andrew Fawcett here.

* GitHub : https://github.com/afawcett
* X (Twitter) : https://x.com/andyinthecloud