Transcript
00:00:00[BLANK_AUDIO]
00:00:30。
00:00:53>> 皆さん、こんにちは。Vercel コミュニティセッションへようこそ。
00:00:57本日、司会を務めますジェイコブ・パリスです。
00:01:00このセッションは、コミュニティや顧客の皆さん、
00:01:03そして Vercel で素晴らしいものを構築している開発者の
00:01:08クールなプロジェクトを紹介するために開催しています。
00:01:10現在、LinkedIn にてライブ配信中ですが、チャットに参加したい方は
00:01:15[community.com/live](https://community.com/live) にアクセスしてください。ページ上部でセッションをご覧いただけます。
00:01:18最後に質疑応答の時間を設けておりますので、
00:01:21セッション中も、お気軽にライブチャットに質問を投稿してください。
00:01:25それでは、本日のゲストをご紹介します。
00:01:27Saltbox Management のシェーン・スミスさんです。
00:01:30>> こんにちは。
00:01:32>> シェーン、今日の調子はいかがですか?
00:01:35>> 絶好調です。そちらはいかがですか?
00:01:37>> とてもいい感じです。
00:01:38ええ、本日はデモを用意してくださっているんですよね?
00:01:42>> はい。いくつかお見せしたいコンテンツや
00:01:46背景についての説明があり、最後にライブデモを行う予定です。
00:01:48>> 素晴らしいですね。準備がよろしければ、画面共有をお手伝いします。
00:01:53>> 完璧です。よろしくお願いします。
00:01:57画面が表示されるまでの間に、まずは簡単な自己紹介から始めますね。
00:02:04ジェイコブが紹介してくれた通り、私は Saltbox Management の CTO を務めるシェーン・スミスです。
00:02:09Saltbox はサービス提供型の企業です。
00:02:12私たちは業務の大半を、
00:02:16お客様向けの Salesforce 導入支援に費やしています。
00:02:18そして、ここ数年は自社製品の開発にも取り組んできました。
00:02:24開発が進み、ようやくお客様や
00:02:28より広い世界に向けて、本格的に展開を始められる段階に至りました。
00:02:31そこで本日は、特に Vercel を活用してどのようにそれを実現したか、
00:02:37そして Vercel が提供する様々な機能についてお話しします。
00:02:41スライドに表示されているように、
00:02:42「AI Gateway」についても取り上げます。
00:02:44まずは、私たちが解決しようとした課題について説明しましょう。
00:02:49私たちのお客様の中には、Salesforce を利用している企業が多数あります。
00:02:54昨今の「エージェント型(Agentic)」のトレンドにおいて、ユーザーは
00:02:58より自然な対話形式で Salesforce を操作したいと考えています。
00:03:02最初のユースケースとして、解決したかった課題は
00:03:06一般的なビジネスユーザー向けのものです。
00:03:07彼らは、Salesforce のエコシステム製品と日常的な言葉でやり取りし、
00:03:10疑問をより迅速に解消したいと考えています。
00:03:16そして2つ目の課題として、Salesforce 内部の
00:03:20カスタマイズを構築・設定する「開発者」向けの解決策を目指しました。
00:03:23これは主に、私たち自身のことを指します。
00:03:25この開発の旅を始めたきっかけは、
00:03:28AI エージェントを使って、Salesforce の構築をより容易にしたかったからです。
00:03:31これらが、自社とユーザー双方に向けて解決しようとしている
00:03:342つの課題です。
00:03:35その背景として、これを実現するのは実は非常に困難なことなのです。
00:03:41だからこそ、人々は私たちのようなサービス企業を頼るわけです。
00:03:45Salesforce のコンテキストや、各企業のビジネス、
00:03:49あるいは彼らが進めているプロジェクトの背景を理解した上で、
00:03:54それをベストプラクティスに沿った本番用スケール可能なコードに変換するのは本当に難しいのです。
00:03:58ですので、単に一般的な LLM にアクセスして、
00:04:01Salesforce について何かしら質問すれば、それなりの回答は返ってきますが、
00:04:05そのまま本番環境で使えるクオリティのものは得られません。
00:04:07それこそが、私たちが達成したかったゴールです。
00:04:12この道を模索し始めたとき、私たちのプロダクトチームは比較的小規模で、
00:04:16このかなり野心的なプロダクトを構築しようとしていました。
00:04:19そのため、インフラ管理に時間を取られることなく、プロダクト開発に専念したいと考えました。
00:04:24インフラ側は自動で機能し、必要なスペックを提供してくれることを望んだのです。
00:04:28それが私たちの課題であり、「Vercel のインフラ上でなら
00:04:33拡張性の高いプラットフォームを構築し、目的を達成できる」という確信でした。
00:04:40では、実際にどのようにそれを実現したかについて詳しくお話しします。
00:04:44私たちのハイレベルアーキテクチャには、大きく分けて3つのレイヤーがあります。
00:04:48最上位のレイヤーには、
00:04:53表向きの UI 機能を担う Next.js アプリケーションが配置されています。
00:04:56ここには、現代の AI エージェントに求められるような、
00:05:02一般的なストリーミング UI 機能がすべて備わっています。
00:05:04そして2番目のレイヤーとして、エッジおよびサーバー機能があります。
00:05:09私たちは AI SDK(現在は特にバージョン6)を使用して、エージェントを制御し、
00:05:16自律的なループ処理や、そこに組み込まれたあらゆるツールを管理しています。
00:05:21もしこの SDK に馴染みがなく、これからエージェント開発を始めるのであれば、
00:05:25ぜひこれを使うことを強くお勧めします。
00:05:28これを使用すれば、あらゆる LLM を
00:05:34モデルに依存しない形で柔軟に利用でき、
00:05:37エージェントのループ処理を構築するためのフレームワークや土台を提供し、
00:05:40開発プロセスにおいて非常に強力なツールとなってくれます。
00:05:43そして3番目のレイヤーが実際の AI 部分、つまり任意のモデルへの接続です。
00:05:51この開発ロードマップを進めるにあたり、私たちが最初に決めなければならなかったのは、
00:05:56「どのモデルを採用するのが適切か」という点でした。
00:06:00しかし、私たちの結論は「あらゆる状況において、常に単一の正しいモデル
00:06:04が存在するわけではない」というものでした。
00:06:06そこで、モデルに依存しないアプローチを取り、
00:06:10新しいモデルが登場した際には、その用途に最適なモデルをプラグアンドプレイで
00:06:14裏側のシステムを大幅に変えることなく、柔軟に差し替えられるように設計しました。
00:06:20そのために、私たちは「AI Gateway」を採用しました。
00:06:23これについては後ほど詳しく説明します。
00:06:25また、下部に表示されているように、
00:06:30インフラ全体を支えるバックグラウンドサービス群も備わっています。
00:06:35それでは、AI Gateway についてもう少し詳しく見ていきましょう。
00:06:38左側に表示されているのは、これを実装するための擬似的なコードですが、
00:06:43基本的には次のような1行のコードを記述するだけです。
00:06:46「このゲートウェイに接続する」と。
00:06:49一度これをつないでしまえば、ゲートウェイを介して、
00:06:51自分が使いたい任意のモデルを自由に利用できるようになります。
00:06:55多くの場合、私たちは Opus 3.5 を使用しますが、状況によっては Sonnet や
00:07:00GPT、あるいは Groq など、様々なモデルを使い分けています。
00:07:04これこそが、AI Gateway の非常に強力なメリットの一つです。
00:07:08特定のモデルにロックインされることなく、
00:07:10状況に応じて柔軟に変更できる自由が得られます。
00:07:12そして、このおかげで、
00:07:18質問の複雑さや種類に応じた、極めて直感的なルーティング処理が可能になりました。
00:07:22この中に分類器(Classifier)を設けることで、
00:07:27ユーザーの質問がどれほど複雑であるかを判別しています。
00:07:29単に「こんにちは」といった挨拶に対するシンプルな返答を求めているのか、
00:07:32それともユーザーのためにフロー全体を丸ごと構築するような、
00:07:37高度に複雑な処理を要求しているのかを判断します。
00:07:38その判断に基づいて、異なるモデルに処理をルーティングすることができます。
00:07:40これにより、応答速度を高速に保ち、
00:07:44提供するモデルの複雑さを最適なレベルに選択し、
00:07:49ユーザーに適切な回答を返すことができるのです。
00:07:50また、昨今におけるエージェントの体験において、
00:07:59現代のユーザーが一般的に期待する機能が、大きく分けて2つあります。
00:08:041つは、リアルタイムで何が起きているかを確認できるように、
00:08:07結果をユーザーにストリーミングで返す機能です。
00:08:09しかし、処理の完了までに数分、
00:08:14あるいは数十分、場合によっては数時間もかかるような、極めて複雑な
00:08:20リクエストが発生した場合はどうすべきでしょうか?
00:08:23私たちが製品開発の第一歩として着手したのは、ストリーミング側でした。これこそが AI SDK が最も得意とする領域だからです。
00:08:28左側の画面で、サンプルの指示書が見えるかと思います。
00:08:31「会議からユーザーストーリーを生成する」というものです。
00:08:33このツールを構築し始めた最初のユースケースの1つが、まさにこれでした。
00:08:37すべての文脈を取り込み、開発者向けにユーザーストーリーを出力する処理です。
00:08:41しかし、より複雑な要件に対応し始めると事情が変わりました。
00:08:45Salesforce 上に B2B ストアフロントを丸ごと構築したり、カスタムページを含む Experience Cloud サイトを設計するような場合、
00:08:51ブラウザにリアルタイムで流し込めるような数分程度では終わりません。
00:08:56そこで、Vercel プラットフォームの導入を進めるにつれ、
00:08:59ユーザーが UI 上で目にする体験は一元化しつつ、
00:09:05処理の複雑さに応じて、リアルタイムのストリーミングと、
00:09:09バックグラウンドでのプロセス実行を自動で切り替える仕組みを作りました。
00:09:11これはすべて Vercel のインフラ内でサポートされており、
00:09:14プラットフォーム自体はもちろん、後ほど紹介する
00:09:19サンドボックス環境などの機能も組み合わせて実現しています。
00:09:24ツールとしての観点から言うと、AI SDK のようなものを導入する最大のメリットは、
00:09:28プラグイン可能な共通フレームワークが得られる点にあります。
00:09:34最初はごく少数のツールからスタートし、
00:09:39時間をかけてこれらのカテゴリのツールを増やしていきました。
00:09:44これにより、エージェントがユーザーや Salesforce 環境と実際に「手」を使ってやり取りできるようになります。
00:09:48スライドにあるように、ドキュメント生成、検索、
00:09:52ストーリー作成、統合機能、そして主にこの Salesforce 連携機能を備えています。
00:09:57これらにより、環境の把握、検証、クエリの実行、
00:10:01さらにはその環境へのデプロイまでが可能になります。
00:10:05単に LLM に直接質問を投げるだけの段階を超えて、エージェントに「手」が加わったような感覚です。
00:10:10では、エージェントが「手を持つ」というのは、
00:10:16具体的にどういう仕組みなのでしょうか?
00:10:18Vercel のエコシステムにおいて、これが最近
00:10:22彼らが展開し始めた最新機能の一つである「サンドボックス(Sandbox)」機能です。
00:10:27Salesforce を普段お使いの方ならよくご存知かと思いますが、
00:10:30開発者や技術的なポジションにいる人々は、
00:10:34多くの場合、Salesforce CLI を使用します。
00:10:39これを使えば、ターミナルレベルで Salesforce とやり取りし、
00:10:43サンドボックスの起動や、B2B コマースストアフロントの立ち上げ、デプロイなどを行えます。
00:10:49これにより、Salesforce とのやり取りが非常にスムーズになります。
00:10:51しかし、セッション限りのブラウザ環境でこれをやるのは極めて困難です。
00:10:55サイトを開くたびに毎度ログインし直さなければならず、
00:10:59Salesforce との連携を維持するのが難しくなります。
00:11:01そこで、私たちは Vercel のサンドボックス機能を活用し始めました。
00:11:06ユーザーが各自の環境に対して認証を行うと、
00:11:10専用のサンドボックスが立ち上がり、ファイルシステムへのアクセスが可能になります。
00:11:16そして、生成したコードや作成したいファイルを
00:11:20そのサンドボックス内にデプロイし、
00:11:26サンドボックス内で Salesforce CLI を実行してファイルを Salesforce へプッシュします。
00:11:30これは Salesforce エコシステム特有の「スクラッチ組織」や
00:11:35「サンドボックス」という概念に基づいたユースケースかもしれませんが、
00:11:40エージェント型エコシステムの開発領域に踏み込むにつれて、
00:11:43この「サンドボックス」という考え方は絶対に不可欠なものになると確信しています。
00:11:49なぜなら、エージェントや LLM が動作するための
00:11:55基礎となる「ファイル構造」を提供してくれるからです。
00:11:58そのため、実際に何ができるかという点において、
00:12:01非常に大きな柔軟性をもたらしてくれます。
00:12:06これまでに私たちが構築してきた技術的な柱をまとめるにあたり、
00:12:10「v0」は、私たちのチームにとって非常に強力な武器となりました。
00:12:17私たちはこれを、大きく分けて2つの側面で活用しています。
00:12:181つは、自社プロダクト「Saltbox One(S1)」をビルドする開発プロセスでの活用です。
00:12:23もう1つは、受託サービスとして Salesforce を構築する際の実務での活用です。
00:12:27そして、私たちはこの2つを密接に連携させました。
00:12:31S1 上で作業を進める中で、解決したい課題のコンテキストがあり、
00:12:35Salesforce のあらゆる関連情報を手元に抱え、
00:12:41組織に関する必要な情報をすべて収集した状態で、v0 と緊密に連携できる統合機能を開発しました。
00:12:45これにより、収集したコンテキスト情報をそのまま背景知識として v0 に引き渡すことができます。
00:12:51その結果、v0 はより高精度なコード生成を行えるようになります。
00:12:54React のコードに留まらず、適切なコンテキストと
00:12:58情報が提供されれば、Apex、LWC、フローといった Salesforce 特有のコードも生成可能です。
00:13:01このように、私たちは両者をうまく組み合わせることで、
00:13:05非常にシームレスな統合体験を作り出すことができました。
00:13:09ここで一度立ち止まり、他のチームの参考になるような、
00:13:14私たちが得た4つの学びを共有させてください。
00:13:171つ目は、「ゲートウェイを使い、モデルの優劣について議論するのをやめること」です。
00:13:21その時々、そのツール、その目的に応じて最適なモデルを選択するようにしてください。
00:13:25それによって、大いなる柔軟性と可能性がもたらされます。
00:13:282つ目は、「ストリーミングはほんの始まりに過ぎない」ということです。
00:13:31エージェント型開発を行うスタートアップ企業のプロダクトの多くは、
00:13:35このストリーミング機能からスタートします。
00:13:38しかし、実用性を高めるには、裏側で永続的に動き続けるバックグラウンド実行機能が必須となります。
00:13:42それこそが、皆さんが目指すべき次の天井(上限)となります。
00:13:453つ目は、先ほどお話しした「サンドボックス」です。
00:13:48環境を実体化し、エージェントに CLI アクセス権を与えることで、
00:13:52プロダクトに数多くの強大な力を授けることができます。
00:13:55そして最後は、適切なプラットフォームを見つけることです。
00:13:57私たちにとっては、それがVercel上での構築であり、
00:14:01それによってインフラを気にすることなく、
00:14:04機能や、Saltbox Oneで大規模に
00:14:07展開しようとしている機能そのものに集中することが可能になりました。
00:14:12それでは、ここからはデモに移り、
00:14:19対話型のSalesforce体験を少しご紹介します。
00:14:24ストーリーの自動生成について少し説明し、
00:14:26実際にエージェントが動いている様子をご覧いただきましょう。
00:14:29画面を切り替えますので、少々お待ちください。
00:14:34よし、これでいいですね。
00:14:38ではSaltbox Oneを開きます、こちらはデモ用の組織(org)の一つです。
00:14:44左側に表示されているのが、
00:14:48私たちが「プロジェクト」と呼んでいるもので、それぞれ異なるコンテキストを提供します。
00:14:51そして中央にあるのが、新しい会話ペインです。
00:14:56ここにフォーカスしてみましょう。
00:14:58スクロールすると、さまざまなプロジェクトがすべて確認できます。
00:15:01これによって、会話に適切なコンテキストをロードできます。
00:15:05下部に並んでいるのはツール群で、
00:15:08ここですべてのインテグレーションが渡されます。
00:15:12そしてその下では、実際にコンテキストを追加することができます。
00:15:16ミーティング、ユーザーストーリー、アーティファクト、
00:15:20Salesforce組織、あるいはその組織内の特定の要素などをここに入れることができます。
00:15:23これによって、非常にリッチな会話が可能になります。
00:15:27では、まずは少し複雑なものから始めてみましょう。
00:15:33それが実行されている間に別の画面に切り替えるか、
00:15:37あるいは、内容を説明しやすくするために事前に実行しておいたものをお見せします。
00:15:40この例では、Salesforceで画面フローを作成して
00:15:45ケースのコメントを入力できるようにし、完了画面も表示させたいと思います。
00:15:51それほど複雑な要件ではありませんが、フローを理解し、
00:15:56その設定方法やアクセス方法、
00:15:58そしてデバッグ方法を知っている必要があります。
00:16:00他の会話について話している間に、エージェントにその作業を進めてもらいましょう。
00:16:03別の画面に行く前に、コンテキストファイルがいくつか取得されているのが見えると思います。
00:16:06これはSaltbox Oneの強みの一つ(秘伝のタレ)で、
00:16:09Salesforceに関する膨大な情報や、その実行方法、
00:16:13そして正しく機能させるためのプレイブックを保有しています。
00:16:16非常に素早く結果が戻ってきたのがわかります。
00:16:19「インスタンスを確認しました。
00:16:23現在、ケースコメントに自動化は設定されていないため、進めて問題ありません」とのことです。
00:16:25いくつか質問をされるので、
00:16:29「はい、デフォルトの組織を使用してください」と答えます。
00:16:32これでエージェントが計画の作成を始めます。
00:16:37その間に、別の会話に
00:16:41切り替えてみましょう。
00:16:44これは、プロジェクトにおいて
00:16:47お客様に最も頻繁に使われている機能の一つで、ミーティング内容の取り込みです。
00:16:52ここでは、Halstonというデモ用ブランドを想定しています。
00:16:56Salesforce構築の新しい要件について話し合ったミーティングの録画があり、
00:17:00それに基づき、現在の組織の現状と
00:17:03Salesforceの標準機能に基づいて進めるよう、エージェントに指示しています。
00:17:07一見すると非常にシンプルな依頼に見えますが、
00:17:11実際にはかなり複雑です。
00:17:16なぜなら、環境の詳細を把握した上で、標準機能と
00:17:18カスタム機能を見極めて、正しい判断を下さなければならないからです。
00:17:21この質問を投げると、このように
00:17:26議論から導き出されたミーティングの要件が返ってきます。
00:17:30そして、こちらが現在の状況です。
00:17:33現在のデータモデルが表示され、確認用の綺麗なMermaidダイアグラムが生成されます。
00:17:37さらに、具体的な推奨事項の提示へと入っていきます。
00:17:41S1(Saltbox One)としての推奨アプローチとして、これらをいくつかのフェーズに分割します。
00:17:43まずはフェーズ1としてデータモデルから開始し、購読の可視化を保存、
00:17:46それからいくつかの推奨事項と、重要な質問を提示してくれます。
00:17:48ここでエージェントと何度もやり取りをすることができます。
00:17:52私はこれらの質問に対する回答をこのように送りました。
00:17:57すると最終的に、要件を各フェーズに細かく分類した
00:18:02詳細なドキュメントを作成してくれました。
00:18:06これをそのままコードに変換することも、
00:18:07ユーザーストーリーやその他の要件定義に変換することも可能です。
00:18:12これがSaltbox Oneの強みの一つです。私たちはサービスを提供する立場から開発を行っています。
00:18:16そのため、Salesforceの導入方法を熟知しています。
00:18:19ベストプラクティスも、そのアプローチ方法も知っています。
00:18:22そして、そうした知見のすべてが、私たちが
00:18:27Saltbox Oneに与えた「エージェントのコンテキスト」に組み込まれています。
00:18:31では、最初の会話に戻ってみましょう。
00:18:33デフォルトの組織を使用することに同意した後、
00:18:35エージェントは先ほどお話ししたすべてのコンテキストを精査し、
00:18:37最適な実行方法を導き出しました。
00:18:38そして、確認用の分かりやすいカードを生成してくれました。
00:18:43このカードこそが、エージェントの挙動をコントロールするための仕組みです。
00:18:44エージェントに計画を立ててほしいものの、
00:18:49勝手に実行されては困ります。
00:18:52ここに人間を介入させるプロセス(Human-in-the-loop)を残しておきたいのです。
00:18:55そのため、何をどのようにデプロイするのかが
00:18:57正確に確認できるコンポーネントを用意しました。
00:19:02あとは「承認して実行」をクリックするだけです。
00:19:07今はデモなので(本番環境ではないため)実際にはデプロイされませんが、
00:19:11このように実際にデプロイを実行することができます。
00:19:13エージェントと何度もやり取りをして問題を解決した後に
00:19:15「再試行」をクリックすることも可能です。
00:19:19また、デプロイ後にそのバージョンが気に入らなければ、
00:19:22以前のバージョンにロールバックすることもできます。
00:19:25もう一つライブ実演をする前に、
00:19:29組織のアーキテクチャの簡単なレビュー機能をお見せします。
00:19:33これは、私たちが常日頃から受ける
00:19:37「アーキテクチャを理解するのを手伝ってほしい」とか「技術的負債を把握したい」といった、
00:19:38非常に一般的な質問です。
00:19:43「Salesforce環境で、このエージェント型の自律的なアプローチに
00:19:44移行するための準備をどう進めればいいか?」
00:19:50これらはシンプルなようで、非常に奥の深い質問です。
00:19:55こうした質問を投げると、
00:20:00ライセンス環境や重要な発見を洗い出し、
00:20:03商談(Opportunity)に関連するオブジェクトモデルを作成してくれます。
00:20:04そして、私たちの回答では常に、
00:20:09レビューが必要な項目にフラグを立てるようにしています。
00:20:10この例では、すべてのオブジェクトにおいて
00:20:15ドキュメント化されていないフィールドが検出されています。
00:20:18多くのカスタムフィールドが存在しているようで、それに対するアプローチや
00:20:22次の具体的なステップが提案されています。
00:20:27ここで「これらをすすめたい」と指示を出すと、
00:20:30エージェントはB2B Commerceのフローや、すべてがどう相互作用しているかに
00:20:34焦点を絞り込み始めます。
00:20:38そして環境に対してクエリを実行します。
00:20:40周囲のエコシステム全体を調査し、
00:20:45統合された回答をまとめ、
00:20:48そのまま会話を続けることができます。
00:20:53エージェントがバックグラウンドで処理を実行している間に、
00:20:57もう一つのユースケースをお見せします。
00:21:02新しい会話を立ち上げて、
00:21:05以前の会話のアウトプットである
00:21:07Confluenceのページをここに投入します。
00:21:10ここには、そのソリューションがどのようなものになるか、詳細がすべて記載されています。
00:21:12そして「このドキュメントのフェーズ1に関する
00:21:16ユーザーストーリーを作成して」と指示を出します。
00:21:21ここで本当に優れているのは、このドキュメントのコンテキストだけでなく、
00:21:27プロジェクト、Salesforce環境、当社のベストプラクティス、
00:21:32そしてSalesforceのエコシステム全体の情報を組み合わせて、
00:21:35このフェーズ1をどのように管理しやすい
00:21:39ユーザーストーリーに分割すべきかを判断してくれる点です。
00:21:43「ユーザーとして〜したい」という初期のステートメントと、
00:21:46いくつかの受け入れ基準(AC)の箇条書きを書いてくれます。
00:21:50これによって、ユーザーストーリーを作成するための非常に優れた土台が整います。
00:21:55ユーザーストーリーが生成されたら、さらに詳細なレベルについて
00:21:59エージェントとやり取りをして、
00:22:03内容をブラッシュアップしていくことができます。
00:22:08そちらが実行されている間に、
00:22:14先ほどの監査(Audit)が終わった会話に戻りましょう。
00:22:18いくつかのクエリを実行し、B2Bの監査フローをまとめました。
00:22:22現状の非常に優れた評価レポートと、
00:22:24技術的負債や、優先的に取り組むべき事項に関する
00:22:28推奨事項がまとめられているのがわかります。
00:22:32これらすべてがどのように繋がっているかがお分かりいただけるかと思います。
00:22:36こちらの例に戻りますが、
00:22:40画面が固まってしまったようです、少々お待ちください。
00:22:45お待たせしました。
00:22:48最後の例として、これらのユーザーストーリーが生成されました。
00:22:51左側にユーザーストーリーの一覧、
00:22:55右側にその詳細が表示されているのが確認できます。
00:23:00これにより、AsanaやJiraと連携して、
00:23:11開発ライフサイクル全体をシームレスにつなぐことが可能になります。
00:23:14以上がSaltbox Oneの簡単な概要、およびVercelのエコシステムや、
00:23:18サンドボックス機能、ゲートウェイ機能、
00:23:22そしてv0をどのように活用してこのようなアプリケーションを構築し、
00:23:24背後にあるインフラではなく、お客様のための機能や
00:23:27価値提供に集中しているかについての説明でした。
00:23:32ということで ジェイコブ、何か質問は届いていますか?
00:23:39>> はい、素晴らしいデモをありがとうございました。
00:23:44いくつかお聞きしたい点があります。
00:23:49まず、エージェントの権限(パーミッション)はどのように制御されているのでしょうか?
00:23:53S1自体が独自の権限を持っていて、アプリをセットアップした時点で
00:23:56SalesforceやConfluenceなどへのアクセス権が与えられるのでしょうか?
00:24:02それとも、質問しているユーザーの権限に基づいているのですか?
00:24:06企業向けのSSO連携が絡んでくると、
00:24:08このあたりの設計はかなり厄介になると思うのですが、
00:24:12どのような決定を下されたのか興味があります。
00:24:16>> はい、私たちもその点についてはかなり議論を重ねました。
00:24:20そして最終的に「ユーザーベースの権限」を採用することにしました。
00:24:23ユーザーがログインする際、自身のユーザーとして認証を行います。
00:24:26したがって、Salesforceやその他のアプリケーションで行われるすべてのアクションは、
00:24:29その特定のユーザーのOAuth、または
00:24:32APIキー(対象のプラットフォームによる)を使用して実行されます。
00:24:36これにより、「誰がそれを実行したのか」を完全に制御できます。
00:24:40さらに、Salesforceのような特定のプラットフォームでは、
00:24:45もう一つの保護レイヤーを設けています。
00:24:50それは、Salesforceインスタンスを接続する際、
00:24:53最初は常に「読み取り専用」として接続されるという点です。
00:24:57その後、必要に応じて書き込み権限に切り替えることができます。
00:25:03書き込み権限を有効にした後も、Salesforce環境に変更を加える際には
00:25:06常に先ほどの承認画面が表示されるようになっています。
00:25:09>> なるほど。つまりSalesforce側での監査性の観点からは、
00:25:12ユーザーがクリックしたアクションはすべて記録され、
00:25:15書き込みアクションが発生すると、承認のポップアップが表示されて、
00:25:19ユーザーが明示的に「承認して続行」を押すことで初めてエージェントが実行されるのですね。
00:25:23>> その通りです。
00:25:26>> Salesforce上でも、その特定のユーザーが実行したと記録されるわけですね。
00:25:31>> まさにその通りです。
00:25:37>> 素晴らしい、よく分かりました。
00:25:39もう一つ気になったのですが、エージェント自体は
00:25:44サンドボックスをどのように利用しているのでしょうか?
00:25:44たとえば、ツール呼び出しを行うと、その実装詳細として
00:25:49暗黙的にサンドボックスが呼び出されるような仕組みになっているのですか?
00:25:50それとも、エージェントがサンドボックス用ツールを認識しており、
00:25:51特定の作業にはサンドボックスが必要であると理解した上で、CLIやAPIをそこで叩くのでしょうか。
00:25:57そのあたりの設計をどのようになさったのか教えてください。
00:26:02>> はい、私たちは主に2つのツールで
00:26:06公式のVercel Sandboxを使用しています。別のサンドボックスについては後ほど説明しますね。
00:26:11まず、公式ツールを使用する1つ目のケースは、スクラッチ組織(Scratch Org)を立ち上げる時です。
00:26:16常にVercel Sandboxを立ち上げ、その中でSalesforce CLI(SF CLI)を使ってスクラッチ組織を構築します。
00:26:192つ目のケースは、Salesforceと連携して
00:26:25環境への新規デプロイや検証を行う場合です。
00:26:28まず1つ目は、スクラッチ組織を立ち上げる際です。
00:26:33常にVercel Sandboxを起動し、SF CLIを使ってスクラッチ組織を構築します。
00:26:372つ目のユースケースは、Salesforceと連携して
00:26:43環境への新規検証やデプロイを行う時です。
00:26:48これは常にSalesforce CLIを搭載したVercel Sandbox上で行われます。
00:26:51デプロイなどの作業を行うには
00:26:54CLIを使うのが一番手っ取り早く、Vercel Sandboxを使えば
00:26:58そのインストールや既存のサンドボックスとの連携が非常にスムーズになります。
00:27:04公式のVercel Sandboxを使用するのは、その2つです。それとは別に
00:27:08すべての会話(エージェントとの毎ターンのやり取り)に
00:27:14紐づいている、より小さなインメモリのサンドボックスがあります。
00:27:20これを使って全ファイルをまとめ、エージェントがその中身を理解できるようにしています。
00:27:25このように、性質の異なる2つのバージョンが存在します。
00:27:26なるほど。アクセス先を制限するために
00:27:32サンドボックスにネットワーク制限などはかけていますか?
00:27:36セキュリティプロファイルはどのような設計になっていますか?
00:27:40Vercel Sandbox側についてですか?
00:27:42はい、そうです。
00:27:43Vercel Sandboxは、立ち上げた時点ではほぼ真っ新な状態です。
00:27:47そこに、必要なファイルだけを読み込ませてアクセスできるようにしています。
00:27:52そのため、コードベース全体を置くようなことはせず、まずエージェントが
00:27:56作成したプランに必要なファイルを準備します。
00:28:02先ほどデモでお見せしたフローの例で言うと、それらのファイルを用意し、
00:28:05Salesforceのデプロイ時に求められる
00:28:10適切なディレクトリ構造を作成して、そこにファイルを配置します。
00:28:13そして、そこからデプロイを実行します。
00:28:14ですので、その都度必要な最小限のファイルしか持たせないように制限しています。
00:28:20YouTubeから質問が届いています。「料金体系はどうなっていますか?」
00:28:25料金はどのように設定しているのでしょうか?
00:28:28従量課金制ですか、それともシート(アカウント)課金制ですか?
00:28:32素晴らしい質問ですね。
00:28:33現在、お客様に展開しながら最適な方法を模索しており、
00:28:38詳細を最終調整している段階です。
00:28:41基本的には、ユーザー数に応じた
00:28:48シート制の料金プランを想定しています。
00:28:53その各階層(ティア)の中で、会話数やデータ量、インタラクション数に制限を設ける形です。
00:28:55現時点ではそのような方向でスタートしています。
00:28:59ただ、この業界の誰もが経験しているように、
00:29:02トークンベースのツールに関しては、状況が非常に早く、頻繁に変化します。
00:29:07そのため、まずはシートベースの基準から始めています。
00:29:11そうですね。利用実績や顧客のニーズ、
00:29:16そして自社のコストとうまく連動する完璧なモデルを見つけるのは、本当に難しいですよね。
00:29:20非常に参考になります。
00:29:23では、次の質問にいきましょう。
00:29:24どの質問をどのモデルに振り分けるかは、どう判断しているのですか?
00:29:29Opusにルーティングするものもあれば、
00:29:31Sonnetにルーティングするものもありました。
00:29:33その振り分けの基準は何でしょうか?
00:29:35評価システムなどを用いてデータに基づいて判断しているのか、
00:29:41あるいは手動で検証を重ねて「このレベルならSonnetで十分」と判断しているのか、
00:29:45どのようなアプローチを取られたのでしょうか?
00:29:46それについては、常にアップデートを重ねています。
00:29:52現在の仕組みとしては、最初の質問に対して決定論的なクラシファイア(分類器)を通し、
00:29:57ユーザーの入力に基づいて質問の複雑さを大まかに把握しています。
00:30:03例えば、ユーザーが「計画する」と言っているか、
00:30:04あるいは「調査する」といった言葉を使っているか、などです。
00:30:07この処理は非常に高速で、コストもかかりませんからね。
00:30:12素早く処理を済ませることができます。
00:30:15まずは、こういった正規表現やルールベースのアプローチから始めます。
00:30:20そこでマッチしなかった場合は、LLMを用いたクラシファイアを活用します。
00:30:27入力テキストが一定の文字数を超えている場合などに、
00:30:32LLMに渡して複雑さを分類させます。
00:30:38この分類モデルは非常に高速で、約300ミリ秒で判別が完了します。
00:30:42これによって、OpusやSonnet、あるいはその他の適切なモデルにルーティングされます。
00:30:47また、フォールバックの仕組みも用意しています。
00:30:49処理が複雑になりすぎたり、ユーザーが同じ質問を繰り返したり、
00:30:54特定のルールに達した場合は、一時的に最も強力なモデルに切り替え、
00:30:59ユーザーが求めている正しい回答を確実に得られるようにしています。
00:31:06なるほど。そのルーティング用の分類モデルには、現在はHaikuを使用しているのですか?
00:31:11ええ、最初の判定にはHaikuを使っています。
00:31:13いいですね。
00:31:15さて、あなたはv0のアンバサダープログラムにも参加されていますね。
00:31:20それによってどのようなメリットがありましたか? 他の人にも勧めたいですか?
00:31:23これを開発する上で、このプログラムから価値を得られたと感じていますか?
00:31:28はい、間違いなく価値がありました。
00:31:30コミュニティとより深く関わりたいと考えている方がいれば、ぜひお勧めしたいです。
00:31:36私自身、いくつかの地域でイベントを開催してきました。
00:31:411、2ヶ月ほど前にはメキシコへ行き、現地で
00:31:48多くの参加者と一緒にv0の使い方を学ぶワークショップを行いました。
00:31:51個人的にアンバサダープログラムから大きな価値を得られているのは、
00:31:56開発元の製品チームのメンバーに直接アクセスできる点や、
00:31:59この分野に情熱を注いでいる仲間と繋がれる点にあります。
00:32:03お互いにアイデアを出し合うプロセスは、本当に有意義なものでした。
00:32:08素晴らしいですね。製品チームに直接コンタクトできるのであれば、
00:32:13きっと多くのフィードバックを送られていることでしょう。
00:32:16せっかくの公開の場ですので、製品チームを少しドキドキさせるような
00:32:22要望やフィードバックは何かありますか?
00:32:25お手柔らかにいきましょう(笑)。一番大きな要望としては、これまでも議論してきましたが、
00:32:30v0に対して、より多くの機能を
00:32:34取り込んでいってほしいということです。開発者が普段ローカルのIDE環境に求めているような機能ですね。
00:32:41ここ数ヶ月で、v0内にもサンドボックス機能が導入され、
00:32:45環境を立ち上げて実際のプレビュー環境を構築できるようになりました。
00:32:49これは正しい方向への大きな一歩です。
00:32:51この路線をさらに推し進めていけば、どんどん素晴らしいものになっていくはずです。
00:32:55ですので、「ぜひこの方向性を突き詰めていってほしい」というのが私からのエールです。
00:33:00素晴らしいですね。本当に素晴らしい進化のプロセスをたどっています。
00:33:02初期の頃は、ブラウザ上のごくシンプルなエディタに過ぎませんでしたが、
00:33:06今ではMonacoエディタが統合され、本格的なVS Codeのようになっています。
00:33:10月を追うごとに、どんどん使いやすくなっていますね。
00:33:14その通りですね。
00:33:15さて、質問は以上となります。
00:33:18本日はお越しいただき、素晴らしいデモを見せてくださって本当にありがとうございました。
00:33:24もしフォローアップしたい、あるいはSoapboxについてもっと詳しく知りたいという方は、
00:33:32どこであなたを見つけることができますか?
00:33:34私は主にLinkedInでアクティブに活動しています。
00:33:37ですので、ぜひお気軽に繋がりを申請し、メッセージを送ってください。
00:33:39「配信を見ました」と一言添えていただければすぐに分かりますので、喜んでお答えし、交流させていただきます。
00:33:44素晴らしいですね。チャット欄にあなたのLinkedInのリンクを貼っておきます。
00:33:48それでは、本日はお越しいただき本当にありがとうございました。
00:33:52ありがとうございました。
00:33:55ご視聴いただいた皆さんも、ありがとうございました。
00:33:59次回のコミュニティセッションも、間もなく開催予定です。
00:34:05カレンダーを確認させてください。
00:34:10事前に確認しておくべきでしたね。
00:34:15木曜日に開催予定ですが、まだカレンダーに登録されていないようです。
00:34:20数日後にまたチェックしてみてください。
00:34:22次のセッションでお会いしましょう。
00:34:24それでは、コミュニティでお待ちしています。
00:34:27皆さん、良い一日をお過ごしください。