vercel/chat
Universal chat layer for building bots and agents.
개요
Chat SDK 는 Vercel 에서 제공하는 TypeScript 라이브러리로, 개발자가 단일 봇 구현을 작성하고 Slack, Microsoft Teams, Google Chat, Discord, Telegram, GitHub, Linear, WhatsApp 등 여러 채팅 플랫폼에서 실행할 수 있도록 해줍니다. 핵심 패키지(chat)는 봇 런타임을 제공하며, 별도의 어댑터 패키지들은 일반적인 SDK 호출을 각 플랫폼의 API 로 변환합니다.
주요 개념
| 개념 | 의미 | 중요성 |
|---|---|---|
| 통합 봇 로직 | Chat 인스턴스를 생성하고, 이벤트 핸들러(멘션, 메시지, 버튼 클릭 등)를 등록하면 SDK 가 연결된 플랫폼에서 오는 이벤트를 라우팅합니다. |
한 번 작성하고 어디서나 배포 가능; Slack, Teams 등에서 중복 코드를 줄입니다. |
| 어댑터 | 플랫폼별 웹훅 처리 및 API 호출을 구현하는 작은 npm 패키지(@chat-adapter/slack, @chat-adapter/teams, …). |
해당 어댑터를 설치/제거함으로써 플랫폼을 추가하거나 제거할 수 있습니다. |
| 상태 관리 | SDK 는 기본적으로 상태 없이 동작하지만, 상태 저장소(예: @chat-adapter/state-redis 를 통한 Redis)를 연결할 수 있습니다. |
대화 컨텍스트, 사용자 설정, 또는 사용자 정의 데이터를 지속적으로 저장할 수 있습니다. |
| AI 스트리밍 | LLM 응답을 채팅 클라이언트(Slack 스트리밍, Telegram 드래프트 미리보기 등)로 스트리밍하는 내장 지원. | 봇이 언어 모델로 작동할 때 "입력 중..." 같은 반응성 있는 경험을 제공합니다. |
| 리치 UI | JSX 기반의 카드, 모달, 슬래시 명령어, 이모지, 파일 업로드, 일시적 메시지 등이 모든 플랫폼에서 추상화되어 있습니다. | 각 플랫폼의 UI 사양을 배우지 않고도 인터랙티브한 경험을 구축할 수 있습니다. |
| 병렬 제어 | 동일한 스레드에 여러 메시지가 동시에 도착했을 때 처리하는 도구(버스트, 큐, 디바운스, 드롭). | 레이스 컨디션과 중복 응답을 방지합니다. |
일반적인 워크플로우
- 프로젝트 생성 –
npx create-chat-sdk@latest my-bot로 Next.js 앱을 스크래핑하며, 사용 가능한Chat설정, 웹훅 라우트, 예제.env파일이 포함됩니다. - 어댑터 추가 –
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 지식 기반 문서: https://vercel.com/kb/chat-sdk
- 오픈소스 MIT 라이선스; 기여 가이드 및 보안 정책은 리포지토리에 포함되어 있습니다.
위 모든 정보는 리포지토리의 README 에서 직접 가져왔습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트