vercel/chat
Universal chat layer for building bots and agents.
概要
Chat SDK は Vercel から提供される TypeScript ライブラリで、1 つのボット実装を書くだけで、Slack、Microsoft Teams、Google Chat、Discord、Telegram、GitHub、Linear、WhatsApp など、多数のチャットプラットフォームで実行できるようにします。コアパッケージ(chat)はボットランタイムを提供し、個別の アダプタ パッケージが SDK の汎用呼び出しを各プラットフォームの API に変換します。
主なコンセプト
| コンセプト | 意味 | 重要性 |
|---|---|---|
| 統一されたボットロジック | Chat インスタンスを作成し、イベントハンドラ(メンション、メッセージ、ボタンクリックなど)を登録することで、接続された任意のプラットフォームからのイベントを SDK がルーティングします。 |
一度書けばどこでもデプロイ可能。Slack、Teams などでのコードの重複を削減。 |
| アダプタ | 小さな npm パッケージ(@chat-adapter/slack、@chat-adapter/teams など)で、プラットフォーム固有の Webhook 処理と API 呼び出しを実装します。 |
対応するアダプタをインストール/アンインストールすることで、プラットフォームの追加・削除が可能。 |
| ステート管理 | SDK はデフォルトでステートレスですが、ステートストア(例:@chat-adapter/state-redis による Redis)を挿入できます。 |
会話コンテキスト、ユーザー設定、カスタムデータを永続化可能。 |
| AI ストリーミング | LLM の応答をチャットクライアント(Slack ストリーミング、Telegram のドラフトプレビューなど)にストリーミングする機能が内蔵されています。 | ボットが言語モデルで動作している場合、応答が「入力中…」のように応答性を高める。 |
| リッチ UI | JSX をベースにした カード、モーダル、スラッシュコマンド、絵文字、ファイルアップロード、一時メッセージなどが、各プラットフォームで抽象化されています。 | 各プラットフォームの UI 規格を学ぶことなく、インタラクティブな体験を構築可能。 |
| 並行制御 | 同じスレッドに複数のメッセージが到着する場合の制御(バースト、キュー、デバウンス、ドロップ)をサポートするヘルパー。 | レースコンディションや重複返信を防止。 |
一般的なワークフロー
- プロジェクト作成 –
npx create-chat-sdk@latest my-botで、使用可能なChat設定、Webhook ルート、例の.envを備えた Next.js アプリがスキャフォールドされます。 - アダプタの追加 –
npm i @chat-adapter/slack @chat-adapter/teams(必要に応じて他のアダプタも)。 - ボットロジックの記述 –
Chatをインポートし、インスタンス化してbot.onNewMentionやbot.onSubscribedMessageなどのハンドラをアタッチ。 - デプロイ – Next.js アプリを Vercel(または任意の Node ホスト)にデプロイ。アダプタは HTTP エンドポイントを公開し、Vercel のサーバレス関数がチャットプラットフォームからのリクエストを受け取れます。
- オプション:AI 統合 – LLM(OpenAI、Claude など)をインストールし、生成された部分的な返信をストリーミングで送信する機能を使用。
例のコード(README から)
import { Chat } from "chat";
import { createSlackAdapter } from "@chat-adapter/slack";
import { createRedisState } from "@chat-adapter/state-redis";
const bot = new Chat({
userName: "mybot",
adapters: { slack: createSlackAdapter() },
state: createRedisState(),
});
bot.onNewMention(async (thread) => {
await thread.subscribe();
await thread.post("Hello! I'm listening to this thread.");
});
bot.onSubscribedMessage(async (thread, message) => {
await thread.post(`You said: ${message.text}`);
});
この bot オブジェクトは、対応するアダプタを追加すれば Teams、Discord などでも応答します。
エコシステムと拡張性
- アダプタカタログ(
@chat-adapter/catalog) – すべての公開アダプタ、その機能、必要な環境変数を依存関係なしにリストアップ。ツール、CLI、UI ウィザードに有用。 - AI コーディングエージェントスキル – Vercel 専用のプラグイン(
npx skills add vercel/chat)で、AI アシスタント(例:OpenAI Codex)に SDK の API サーフェスを学習させ、ボットコードの自動生成・修正を可能に。 - Vercel プラグイン – Chat SDK スキルと他のエージェントツールをバンドルし、Vercel プロジェクトに AI ヘルプ開発を簡単に追加可能。
どんな人が使うべきか?
- 複数の内部チャットツールにサポートボットが必要だが、別々のコードベースを維持したくないプロダクトチーム。
- Slack、Teams、Discord などからアクセス可能な AI パワードアシスタント(例:コードレビュー、知識ベース)を開発する開発者。
- 異なるコミュニケーションスタックを持つクライアントにチャットボットソリューションを提供するコンサルタント。
ドキュメントとサポート
- 完全なドキュメント: https://chat-sdk.dev/docs
- アダプタ一覧とガイド: https://chat-sdk.dev/adapters
- Vercel Knowledge Base 記事: https://vercel.com/kb/chat-sdk
- オープンソース MIT ライセンス。リポジトリには貢献ガイドとセキュリティポリシーが含まれています。
上記のすべての詳細は、リポジトリの README から直接取得しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト