Skip to content

AI chat协议与数据结构完全对齐Vercel/ai(移除自定义协议与类型定义) #1027

Description

@hotlong

背景

目前 spec/service-ai 层定义了若干自研 AI Chat 协议/类型(如 AIMessage/AiChatRequestSchema/AiChatResponseSchema/AIStreamEvent),主要用于后端与 objectui 前端的对接。但 objectui 前端已全量采用 Vercel AI SDK(@ai-sdk/react/useChat),其消息、SSE协议、ToolCall协议均直接依赖 Vercel 官方包,并且前端不会消费自定义的 Zod schema 或 TypeScript 类型。

对齐 Vercel,要把协议演进/维护责任交给上游,减少冗余和潜在兼容成本。


需完成的工作

1. 移除重复协议/类型定义

  • 移除 AIMessageAIToolCallAIStreamEventAiChatRequestSchemaAiChatResponseSchema 等 TypeScript 和 Zod 定义,转为直接 re-export Vercel/ai 的类型:
    • import type { CoreMessage, ToolCall, DataStreamPart } from 'ai'
    • 保留对 IAIService/IAIConversationService 的依赖,但接口方法参数改为 Vercel 类型

2. 服务端Handler与SSE协议对齐

  • /api/v1/ai/chat 及 /chat/stream,参数/返回值、SSE流式协议改为直接透传 Vercel/ai 标准
  • Handler 层不再做 message/body 数据结构转换与校验,直接派发给 ai SDK
  • 出口严格使用 Vercel 官方 Data Stream 响应(StreamingTextResponse/toDataStreamResponse)

3. 仅保留/适配 spec 独有内容

  • 保留/修正 NLQ、Suggest、Insights 协议,这些为 ObjectStack 元数据平台独有
  • IAIService/IAIConversationService 继续作为依赖倒置合约,但推荐方法签名参数引入 Vercel aiSDK 类型

4. 生态兼容性&风险管控

  • 检查 platform 依赖 @ai-sdk/* 的升级兼容性
  • 补充 changelog/roadmap,review 全平台可能依赖链
  • 【勿快速修复】确保未来协议变更(如 Vercel/ai 推出新数据结构)能无痛升级

预期效果

  • 让 objectui <-> service-ai 代码零自定义协议桥接,全部统一到 Vercel/ai SDK 及其类型
  • 明显减少二次维护成本和升级出错风险
  • 不破坏 NLQ/元数据独有协议与扩展能力

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions