Strapi的AI SDK插件
注: 这是一个我正在构建的个人学习项目,旨在探索通过插件向Strapi添加AI原生功能的乐趣。这是一项正在进行的工作。
Strapi v5插件,通过Vercel AI SDK集成了Anthropic的Claude。它在Strapi管理面板中添加了一个人工智能聊天功能,包括工具调用和3D化身,并通过REST API和MCP公开所有内容。
它的作用
- 管理员聊天 --Strapi管理面板内的聊天界面(
/admin/api/ai-sdk/chat)具有流式响应和工具调用功能 - API公共路线 --外部客户端的REST端点:简单的提示/响应(
/api/ai-sdk/ask),流媒体(/api/ai-sdk/ask-stream),并使用工具进行全面聊天(/api/ai-sdk/chat) - 工具调用 --Claude可以与您的Strapi内容交互(列出内容类型、搜索和编写文档),并在管理UI中控制3D化身(挥手、点头、庆祝、思考等)
- MCP服务器 --所有内容工具都通过模型上下文协议公开(
/api/ai-sdk/mcp),因此像Claude Desktop或Cursor这样的AI助手可以直接管理您的Strapi内容
设置
在中配置 server/config/plugins.ts:
export default ({ env }) => ({
'ai-sdk': {
enabled: true,
resolve: 'src/plugins/ai-sdk',
config: {
anthropicApiKey: env('ANTHROPIC_API_KEY'),
chatModel: env('ANTHROPIC_MODEL', 'claude-sonnet-4-20250514'),
systemPrompt: env('AI_SYSTEM_PROMPT', 'You are a helpful assistant.'),
},
},
});工具
| 工具 | 描述 | 聊天 | MCP |
|---|---|---|---|
listContentTypes | 列出所有内容类型和组件及其字段、关系和结构 | yes | yes |
searchContent | 使用过滤器、全文搜索、排序和分页搜索和查询任何内容类型 | yes | yes |
writeContent | 创建或更新任何内容类型的文档 | yes | yes |
triggerAnimation | 触发3D化身动画(说话、挥手、点头、思考、庆祝、摇晃、旋转) | 是 | -- |
项目结构
server/src/plugins/ai-sdk/
├── admin/src/ # React admin UI (chat, 3D avatar)
├── server/src/
│ ├── controllers/ # Route handlers
│ ├── services/ # Business logic bridge
│ ├── tool-logic/ # Shared tool implementations
│ ├── tools/ # AI SDK tool() wrappers for chat
│ ├── mcp/ # MCP server + tool handlers
│ ├── routes/ # Admin + content API routes
│ └── lib/ # AISDKManager, types, utils