@delphi-ai/多租户聊天
多租户运行时间管理器 Vercel 聊天SDK。管理每次连接 Chat 懒惰制造、LRU驱逐和 AsyncLocalStorage- 基于连接的上下文.
安装
pnpm add @delphi-ai/multi-tenant-chat
# Peer dependency
pnpm add chat
使用量
import { MultiTenantChat, type ChatConnection } from "@delphi-ai/multi-tenant-chat";
interface MyConnection extends ChatConnection {
ownerId: string;
}
const manager = new MultiTenantChat<MyConnection>({
async resolveConnection({ platform, connectionKey, request }) {
// Look up connection from your database
return { id: connectionKey, platform, ownerId: "user-123" };
},
async resolveCredentials(connection) {
// Return platform-specific credentials
return { botToken: "xoxb-..." };
},
state: yourStateAdapter,
platforms: {
slack: (credentials) => createSlackAdapter(credentials),
telegram: (credentials) => createTelegramAdapter(credentials),
},
async onDirectMessage(ctx, thread, message) {
await thread.post("Hello from multi-tenant chat!");
},
});
// In your webhook handler:
export async function POST(request: Request) {
return manager.handleWebhook(request, {
platform: "telegram",
connectionKey: "connection-id",
});
}
API 密码
MultiTenantChat<T extends ChatConnection>
主类管理每个连接聊天实例.
配置 :
resolveConnection解决平台+关键+请求的连接resolveCredentials——返回连接证书statea 包括:StateAdapter(在所有连接中共享,密钥为自动前缀)platforms——适配器厂站名地图onDirectMessage编号 :onMention编号 :onSubscribedMessage——信息处理器onError– 全局错误处理器runtimeCacheMax最大缓存聊天例( 默认 1000)
方法:
handleWebhook(request, { platform, connectionKey })—— 向正确的查特实例传递一个网点destroyRuntime(connectionId)——拆掉缓存运行时间
getConnection<T>()
获取当前连接 AsyncLocalStorage 上下文(在处理器内).
createPrefixedState(base, prefix)
环绕任意 StateAdapter 与每个连接键名间隔.
RuntimeCache
LRU 活性缓存 Chat 出现懒惰制造和驱逐的情况.
许可证
麻省理工学院