Skip to content

[WIP] Upgrade server AI Chat API protocol to align with Vercel Data Stream#1030

Closed
hotlong with Copilot wants to merge 1 commit into
mainfrom
copilot/upgrade-ai-chat-api-protocol
Closed

[WIP] Upgrade server AI Chat API protocol to align with Vercel Data Stream#1030
hotlong with Copilot wants to merge 1 commit into
mainfrom
copilot/upgrade-ai-chat-api-protocol

Conversation

Copilot AI commented Apr 1, 2026

Copy link
Copy Markdown
Contributor

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.


This section details on the original issue you should resolve

<issue_title>服务端 AI Chat API 协议升级:对齐 Vercel/ai Data Stream Protocol 以支持 objectui 前端</issue_title>
<issue_description>## 背景
objectui 前端已全量采用 Vercel AI SDK(@ai-sdk/react/useChat),其消息/流式协议、ToolCall协议等与 Vercel 官方标准强绑定,要求服务端完全兼容 Vercel/ai 的API格式与响应协议。
目前 service-ai 虽已具备丰富API能力(chat、stream、tools、agents、conversations等),但协议细节与 Vercel 官方(Data Stream Protocol)有显著差异,导致 objectui 前端无法直接对接。


调整目标

  • 服务端 /api/v1/ai/chat 能作为 objectui/console 的唯一 AI API,兼容 Vercel AI Data Stream 协议,可被 @ai-sdk/react/useChat 直接消费,无需自定义适配。
  • 支持双模式:JSON 响应(非流式)、Data Stream 响应(流式,默认)
  • 请求体与字段自动兼容 Vercel 用例(平铺、systemPrompt、stream 字段等)
  • 向下兼容 service-ai SDK 客户端/CLI/旧前端等原有用法
  • 不破坏现有 tool calling/多轮会话/agent/自定义工具能力

技术方案

  1. 新增 Vercel LLM Adapter:实现 VercelLLMAdapter,直接用 Vercel AI SDK(streamText/generateText)作为生产 adapter。MemoryAdapter 作为本地测试。
  2. 路由层协议转换:在 /api/v1/ai/chat handler 内部,自动支持 Vercel useChat 的平铺格式,通过 systemPrompt 字段 prepend system message,并按 stream 字段选择 Data Stream 响应。
  3. Vercel Data Stream 输出:新增 vercel-stream-encoder.ts,将 service-ai 的 AsyncIterable<AIStreamEvent> 转为 Vercel Data Stream 帧格式(0:文本, 9:tool, e:结束等)。作为 HTTP Server 层的输出路径。
  4. 保持核心服务协议不变:所有变更限定在 adapter/路由/HTTP 响应层,AIServicecontracts 类型完全兼容历史实现。
  5. 补充测试:adapter、stream encoder、路由平铺兼容性单测,保障所有原有路由和新协议全量覆盖。

影响范围

  • /api/v1/ai/chat 可兼容 objectui useChat 及所有 Vercel AI 客户端
  • 保持原 /chat/stream 及非流式 JSON 响应接口不变,向下兼容 CLI/SDK 用户
  • agent/tool 多轮调用流程统一升级,无破坏性调整

步骤清单

  • 新增 VercelLLMAdapter
  • 新增 vercel-stream-encoder 工具
  • 改造 ai-routes 支持平铺 body + systemPrompt + stream Data Stream 响应
  • HTTP Server 层根据 RouteResponse.vercelDataStream 标志输出 Vercel 帧格式 SSE
  • 所有功能补充单元测试/集成测试
  • Update CHANGELOG.md, 补充 migration 指南

预期效果

  • Console Floating Chatbot/AI Chat 直接对接新版 /api/v1/ai/chat,无中间协议桥接/代码冗余
  • Vercel AI SDK 新特性上线后即可低成本升级
  • 服务端协议和核心能力抽象更加清晰,便于未来多模式(非 Vercel 客户端)扩展
    </issue_description>

Comments on the Issue (you are @copilot in this section)

@vercel

vercel Bot commented Apr 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
objectstack-play Ready Ready Preview, Comment Apr 1, 2026 2:22am
spec Ready Ready Preview, Comment Apr 1, 2026 2:22am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

服务端 AI Chat API 协议升级:对齐 Vercel/ai Data Stream Protocol 以支持 objectui 前端

2 participants