以下页面介绍了一个示例应用:在 SvelteKit 项目中部署 LangChain 深度代理,并通过 @sveltejs/adapter-cloudflare 为 Cloudflare Workers 构建。该应用支持流式聊天界面、子代理详情视图、线程历史记录,以及在 /api/threads/... 下提供的 Agent Streaming Protocol。无需单独的后端进程。 源代码位于部署示例集中的 js-sveltekit。

部署到 Cloudflare

1

安装并构建

2

配置密钥

3

部署

svelte.config.js 使用 adapter-cloudflare()。wrangler.jsonc 将 Wrangler 指向 .svelte-kit/cloudflare/_worker.js,并从 .svelte-kit/cloudflare 提供资源,这与 SvelteKit Cloudflare 适配器文档中的配置一致。构建脚本会将 ThreadSession Durable Object 导出追加到生成的 Worker 入口文件中,因为 Durable Object 类必须由 Worker 模块导出。 启用 nodejs_compat 和 nodejs_compat_populate_process_env,是因为 LangChain 运行时和追踪集成需要兼容 Node 的 API 以及环境变量访问能力。 如需启用 LangSmith 追踪,可将 .env.example 中的变量添加为 Worker 密钥或变量。

必需的 API 端点

应用在 /api/threads/... 下提供 Agent Streaming Protocol。SvelteKit 路由处理程序位于 src/routes/api/threads/。

最低要求(流式聊天)

可选功能(侧边栏)

Cloudflare 后端设计

生产环境持久化

开箱即用时,代理使用内存中的 MemorySaver 检查点保存器(src/lib/server/agent/index.ts)。每个线程的 SSE 重放/会话日志存储在 Durable Object 中,因此流式客户端可以重新连接到同一个协调点,而不是进程本地的映射。 检查点保存器仍然是隔离环境本地的演示状态。Cloudflare 隔离环境是临时的,并且可能水平扩展,因此已保存检查点的对话状态在重新部署、冷启动或不同隔离环境之间不会持久化。 在生产环境中:
  1. 换用持久化检查点保存器(例如通过 Hyperdrive 使用 Postgres,或使用基于 Durable Object 的自定义存储)。
  2. 如果客户端需要在 Durable Object 从内存中被逐出后重新连接,请持久化长期的重放数据/历史记录。

本地开发

打开 http://localhost:5173。
如需在构建后进行 Cloudflare 风格的本地测试,请运行:

项目结构

  • src/lib/server/agent/ — 深度代理(createDeepAgent),包含 researcher 和 math-whiz 子代理及模拟工具。
  • src/lib/server/durable-objects/thread-session.ts — 用于 SSE 重放的每线程 Durable Object 事件日志。
  • src/lib/server/protocol/ — Agent Streaming Protocol 辅助工具:基于检查点保存器的状态/历史记录、运行发布、序列化和注册表。
  • src/routes/api/threads/ — 处理协议端点的 SvelteKit 路由处理程序。
  • src/lib/chat/threads-client.ts — 浏览器线程初始化和侧边栏辅助工具。
  • src/lib/components/ — 使用 @langchain/svelte 构建的 Svelte 聊天界面。
  • svelte.config.js — 配置了 @sveltejs/adapter-cloudflare 的 SvelteKit。
  • scripts/export-durable-objects.mjs — 构建后修补脚本,用于从生成的 Worker 入口文件重新导出 Durable Object 类。
  • wrangler.jsonc — Cloudflare Workers Static Assets 和 Durable Object 配置。

另请参阅