信頼できる直感的な AI エクスペリエンスを構築する
学習の目的
この単元を完了すると、次のことができるようになります。
- ユーザーコンテキストとアプリの状況を維持するために、特定の Slack アシスタントメソッドを設定する。
- 引用、免責事項、フィードバックループなど、信頼を高める要素を組み込んだ AI 応答を設計する。
AI 対応アプリのベストプラクティス
Slack で成功する AI 対応アプリの鍵となるのは、ユーザーからの信頼と一貫したエクスペリエンスです。この単元では、基盤設定、会話管理、コンテンツの品質、ユーザーインタラクションに関するベストプラクティスについて説明します。これらのガイドラインに従って、ユーザーの期待に応えながら、エージェントと AI アプリのすべての機能を活用できます。ここで紹介するベストプラクティスの多くは、Block Kit を使用します。具体的な実装方法については、Java、Python、または JavaScript 向けの Bolt ドキュメントを参照してください。
基盤設定
App Home での設定の一元管理
App Home タブを使用して、ユーザーが環境設定を管理できる永続的なプライベートスペースを提供します。この一元化されたインターフェースによって手間が減り、ユーザーはエクスペリエンスをカスタマイズする場所に迷わずアクセスできます。
実装: アプリ設定でホームタブを有効にするには、[Features (機能)] を選択し、[App Home] を選択します。カスタマイズについては、App Home ガイドを参照してください。
アプリの利用範囲とエントリポイントの定義
チャンネル、DM、分割ビューなど、アプリがどこで動作するかを明確に伝えます。App Home タブやオンボーディングメッセージを活用し、アプリを使用する方法と場所をユーザーに示します。
実装: app_mention イベントをリッスンしてチャンネルでのやり取りに対応します。また、これらの機能について App Home に記載します。
データのプライバシーとセキュリティの保護
search:read.public 通用範囲を使用してアプリのアクセス範囲をユーザーがメンバーとなっているパブリックチャンネルのデータのみに限定します。この権限ベースのアプローチにより、ワークスペースのセキュリティが維持され、FedRAMP などのエンタープライズコンプライアンス標準にも準拠できます。
実装: search 通用範囲を特定のワークスペースに限定します。プライバシーに関するベストプラクティスについては、Data Access API ガイドを参照してください。
会話エクスペリエンスを管理する
動的なスレッドタイトルによるコンテキストの維持
スレッドタイトルを更新して現在の会話のトピックを反映し、ユーザーが情報を整理できるようにします。ユーザーの最初のメッセージをもとに初期タイトルを設定し、会話の展開に合わせて更新します。
実装: assistant.threads.setTitle をコールして、タイトルを設定および更新します。
関連性の高いプロンプトによるエンゲージメントの向上
ユーザーのプロフィールやワークスペースのデータに基づいて動的な提案を表示し、繰り返しの利用を促します。コンテキストに応じたプロンプトで、静的な汎用オプションに代わる関連性の高いショートカットを提供し、信頼を築きます。
実装: assistant.threads.setSuggestedPrompts を使用し、コンテキストの変化に応じてプロンプトを更新します。
会話履歴によるやり取りの簡素化
AI エージェントに会話履歴全体を提供し、ユーザーが過去のやり取りを自然に参照できるようにします。この継続性により、ユーザーが同じ情報を繰り返し入力しなくても、エージェントがコンテキストを理解できます。
実装: thread_ts を指定して conversations.replies をコールし、必要なメッセージ履歴を取得します。
リアルタイムの状況更新による信頼の構築
長時間かかるタスクの処理時に、アプリが停止している、または応答していないと見なされないようにユーザーに伝えます。状況を頻繁に更新することで、ユーザーの期待を管理し、アプリが処理中であることを示せます。
実装: assistant.threads.setStatus を使用して、進捗状況を更新します。
例: 次の JSON は、AI エージェントがバックグラウンドで処理している間にリアルタイムのフィードバックを提供する状況メッセージの書式を定義しています。
status="is thinking..." status="is searching company knowledge..." status="spinning the digital hamster wheel..."
コンテンツの品質と信頼を向上させる
Block Kit によるプロフェッショナルな書式設定
Block Kit ビルダーを使用して、メッセージレイアウトの一貫性を保ち、Slack mrkdwn などのリッチテキスト機能で表示エラーを防ぎます。AI エージェントは Slack でサポートされない標準マークダウンをデフォルトで使用することが多いため、Markdown ブロックを使用してリッチテキストが正しく表示されるようにします。
コンテンツの免責事項による透明性の確保
AI が生成した応答であることを明示し、ユーザーの期待を適切に設定して、長期的な信頼を築きます。免責事項を一貫して表示してユーザーに情報の検証を促すことで、ブランドの保護と責任の軽減につながります。たとえば、「AI generated this content. Review it carefully before acting, as it might contain inaccuracies. (このコンテンツは AI が生成しました。不正確な情報が含まれている可能性があるため、利用する前に慎重に確認してください。)」と含めます。
実装: AI が生成したすべてのメッセージのフッターに context ブロックを追加します。次の例を Block Kit ビルダーで確認できます。
例: 次の JSON は、AI が生成したコンテンツであることを示すために context ブロックを使用する方法を定義しています。
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "This tool uses AI to generate responses, so some information might be inaccurate."
}
]
}引用と参照による応答の検証
正確性を示し、ユーザーがさらに詳しく調べられるように、AI が生成したコンテンツの出典を含めます。インラインリンクを使用して、その場でコンテキストを確認できるようにします。また、フッターにすべての参照元を記載して、完全な監査履歴を示します。
実装: インライン引用にはリンク書式設定を使用し、メッセージ末尾の参考文献一覧には context ブロックを使用します。
例: 次の JSON は、メッセージの末尾で特定の出典を引用する方法を定義しています。
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Slack stands for ’Searchable Log of All Conversation and Knowledge.’ <https://app.slack.com/slackhelp/en-US/115004071768|[1 Help Center]>"
}
]
}ユーザーインタラクションとサポートを拡張する
わかりやすいオンボーディングによる利用の促進
ログインやアカウント連携など、具体的な次のステップを説明する歓迎のメッセージを表示し、初めて利用するユーザーをサポートします。既存のユーザーには歓迎メッセージを省略し、時間を無駄にしない迅速で効率的なエクスペリエンスを提供します。
実装: 必須の設定アクションには、インタラクティブボタンまたはリンクを使用します。
例: 次の JSON は、アカウントを連携するようにユーザーを促すオンボーディングメッセージの作成方法を定義しています。
{
"type": "rich_text",
"block_id": "Vrzsu",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "It looks like you’re not logged into the TeamworkDreamwork app.\n Sign in now to use this feature."
}
]
}
]
},
{
"type": "actions",
"block_id": "actionblock789",
"elements": [
{
"type": "button",
"style": "primary",
"text": {
"type": "plain_text",
"text": "Sign in"
},
"value": "sign_in_123"
},
{
"type": "button",
"style": "danger",
"text": {
"type": "plain_text",
"text": "Ignore"
}
}
]
}事前入力済みモーダルによる手間の削減
ユーザーから構造化された情報を取得する場合は、モーダルの項目に想定されるデータを事前入力しておきます。このアプローチにより、ユーザーはすべての項目を手動で入力するのではなく、内容を確認して編集するだけで済みます。
実装: initial_value プロパティまたは initial_options プロパティを使用して、モーダルの項目を事前入力しておきます。
フィードバック収集によるモデル性能の改善
インタラクティブボタンや絵文字リアクションを使用して、ユーザーが応答の品質を評価できるようにします。低い評価について記述式のフィードバックを収集すると、プロンプトを調整して精度を高めるために必要なデータが得られます。
実装: 評価にはボタンを使用するか、reaction_added イベントに登録します。
適切なエラー処理による信頼の維持
処理が失敗した場合は、明確なエラーメッセージを送信し、アプリの状況を直ちにリセットします。これにより、ユーザーが延々と待たされる事態を防ぎ、要求が完了しなかった理由を明確に伝えられます。
実装: assistant.threads.setStatus を空の文字列でコールして、状況をクリアします。
サポートされるメディアに関する期待の管理
アプリでサポートされるメディア種別を明確に定義し、ユーザーの不満を防ぎます。ユーザーがサポートされていない形式をアップロードした場合は、代わりの方法を提示します。
実装: このガイドを使用してファイルの種類を検出し、役立つサポートメッセージをトリガーします。
まとめ
AI 対応アプリは、大規模言語モデルと Slack のコラボレーション型メッセージングを組み合わせたものです。明確な利用範囲の設定、コンテキストの維持、出典の引用、エラーの適切な処理により、ユーザーが日常的に安心して頼れるエクスペリエンスを構築できます。これらのベストプラクティスにより、既存製品を拡張する場合でも Slack ファーストで構築する場合でも、ユーザーが作業する場所でインテリジェントな支援を提供し、利用の促進と生産性の向上につながるネイティブな AI エクスペリエンスを実現できます。
