有效载荷AI插件
升级到4.0.0? 读取 移徙指南。引用图像和提取的即时附件现在需要一个明确的存储解析器.
用智能自动化转换内容创造——你的模型,你的方式
这是什么?
有效载荷AI插件是您用于涡轮充电内容创建的秘密武器. 它无缝地将尖端AI能力直接整合到 有效载荷CMS将你的内容工作流程从乏味变为巨大.
🎥 在行动中看到它
QQ Beta 通知
此插件正在积极演变 。 我们不断的运输改进和新的特征. 已测试有效载荷v3.88.0.
快速启动提示 : 试试看 有效载荷网站模板 对于最平滑的经验.
* 特性
& RichText 字段
内容生成魔法 :
- ✅ 编曲 - 从零开始生成内容
- ✅ 校对 - 波兰语你的口语(Beta)
- ✅ 翻译 - 打破语言障碍
- ✅ 重写 - 找更好的方法说出来(Beta)
- 🔜 扩展 - 阐述想法
- 🔜 总结 - 淡出精髓
- 🔜 简化 - 把复杂的事情说清楚
QQ 上传字段
- 🎙️ 语音生成 - 由11Labs & OpenAI提供动力
- 🖼️ 图像生成 - 由OpenAI(DALL-E & GPT-Image-1)提供动力
功率用户特性
- 🔌 带上你的模型 - 不仅限于我们的违约
- 🎛️ 外地一级提示 - 定制每个字段的AI行为
- 🔐 访问控制 - 锁定谁可以使用AI特性
- 🧠 提示编辑器 - 微调AI指示
- 🌍 i18n 辅助 - 与你的多语言设置工作
- 🎨 自定义组件 - 用你自己的UI扩展
就快来了
- 文档分析器
- 事实检查
- * 自动化工作流程
- 编辑建议
- AI聊天助理
* 安装
pnpm add @ai-stack/payloadcms
就这样! 现在,让我们配置它.
QQ 快速设置
步骤1:配置插件
添加为 src/payload.config.ts数字 :
import { payloadAiPlugin } from '@ai-stack/payloadcms'
export default buildConfig({
plugins: [
payloadAiPlugin({
collections: {
[Posts.slug]: true,
},
debugging: false,
}),
],
// ... rest of your config
})
步骤2: 在您的字段中启用 AI
添加到您的 RichText 字段(例如, src/collections/Posts/index.ts:
import { PayloadAiPluginLexicalEditorFeature } from '@ai-stack/payloadcms'
fields: [
{
name: 'content',
type: 'richText',
editor: lexicalEditor({
features: ({ rootFeatures }) => {
return [
HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }),
// Add this line:
PayloadAiPluginLexicalEditorFeature(),
]
},
}),
},
]
第3步: 添加您的 API 密钥
有效载荷AI可以从两个方面读取提供者证书:
- 环境变量.
- 插件配置, 当证书在有效载荷开始前得到解决时有用, 例如 per- instect 多租户设置, 外部秘密管理器, 或测试 .
备选案文A:环境变量
创建一个 .env 中的文件。 为您想要使用的提供者添加密钥 :
# Text Generation - Choose your provider(s)
OPENAI_API_KEY=your-openai-api-key # OpenAI models (GPT-4, etc.)
ANTHROPIC_API_KEY=your-anthropic-api-key # Claude models
GOOGLE_GENERATIVE_AI_API_KEY=your-google-key # Gemini models
MINIMAX_API_KEY=your-minimax-api-key # MiniMax M3 / M2.7 models
# Image Generation - Choose your provider(s)
OPENAI_API_KEY=your-openai-api-key # DALL-E (uses same key as above)
# OPENAI_ORG_ID=your-org-id # Required only for GPT-Image-1 model
GOOGLE_GENERATIVE_AI_API_KEY=your-google-key # Imagen (uses same key as above)
# Audio/Voice Generation - Choose your provider(s)
ELEVENLABS_API_KEY=your-elevenlabs-api-key # ElevenLabs voices
OPENAI_API_KEY=your-openai-api-key # OpenAI TTS (uses same key as above)
# Optional: Use custom OpenAI-compatible endpoint
# OPENAI_BASE_URL=https://api.openai.com/v1
您只需要您计划使用的提供者的钥匙 . 根据你的喜好来混合和匹配!
选项B:插件配置
如果你想在开始的时候自己解开秘密,就通过 providers。配置值优先于环境变量,省略值仍然回到 .env。 。 。 .
payloadAiPlugin({
collections: {
[Posts.slug]: true,
},
providers: {
openai: {
apiKey: process.env.PAYLOAD_AI_OPENAI_API_KEY,
baseURL: process.env.PAYLOAD_AI_OPENAI_BASE_URL,
orgId: process.env.PAYLOAD_AI_OPENAI_ORG_ID,
},
},
})
支持的提供者密钥 : openai, (中文(简体) ), anthropic, (中文(简体) ), google, (中文(简体) ), elevenLabs,以及 minimax。 。 。 .
重要内容: 更新后重新启动您的服务器 .env 或插件设置!
您可能需要重新生成导入地图 :
payload generate:importmap
高级配置
QQ 访问控制与多选项设置
生成需要来自 access.generate源文件,
并且内置媒体的创建也强制要求用户的收藏、字段和
每个文档权限。 配置 overrideInstructions.access 限制能读的人
或编辑指令; access.settings 控制设置 UI 不替换这些设置
收藏规则。 自定义 mediaUpload 召回必须执行自己的访问检查,因为
如下所示。 信任的初始化和教学种子与用户请求分开运行.
参考图像和存储
参考图像现在需要服务器侧 resolveReferenceImage 调用。 这是一个
断开图像编辑的更改,在提示中使用样本图像或图像 URL,以及用于
文本生成方式 extractAttachments 启用 。 文本到图像
生成时没有引用,则不变。 插件不获取引用 URL,
转发登录证书,或要求Node DNS/HTTP API进行参考解析.
对于选中的样本图像, 插件从
uploadCollectionSlug (默认 : media)与呼叫者的有效载荷读取权限和
depth: 0 之前,他引用解析器。 使用文档的ID从一个
固定存储桶或其他应用控制的商店。 不要使用文档的 URL
或文件名作为未选中的网络目的或文件系统路径。 访问所隐藏的字段
解析器将无法使用控制 .
解决者收到 { source, request, signal, maxBytes } 并且必须返回一个PNG,JPEG,
或网络P Blob。 。 。 . source.kind 实值 media (与 collection 和授权 document(中文(简体) )
或者说 url (与 无信任 从快取出 URL). 拒绝 URL 源, 除非您
应用程序可以将其映射到明确批准的存储对象并授权访问.
仅仅检查一个 URL 是否使用 HTTPS 是不够的 。 优先储存有固定的 SDK
任意获取 URL 的 buckle/ account ; 不转发 cookie 或 符号 .
例如,连接应用程序的存储读取器:
resolveReferenceImage: async ({ source, signal, maxBytes }) => {
if (source.kind !== 'media') {
throw new Error('Only selected media can be used as reference images.')
}
// Application-owned helper: map this authorized ID to your fixed bucket/object key.
// Enforce maxBytes during loading and honor signal to cancel outstanding work.
return readReferenceBlobFromStorage({
collection: source.collection,
id: source.document.id,
signal,
maxBytes,
})
},
readReferenceBlobFromStorage 上面是一个应用程序帮助器,而不是一个有效载荷或插件 API.
它的执行取决于您的存储适配器。 该插件验证返回的 Blob,
拒绝20米B以上的空文件或文件,30秒后停止等待. 解决者
必须在加载时执行限制,以避免缓冲过大的对象;取消是
合作和需要荣誉 signal。MIME 检查不验证图像文件内容.
内建文本模型通过相同的回调和通过字节解决已提取附件
给AI SDK。 自动SDK附件下载被禁用 。 URL 仍然是普通文本
当附件提取被禁用时.
自定义生成模型继续负责它们自己提出的任何网络请求.
import { payloadAiPlugin } from '@ai-stack/payloadcms'
export default buildConfig({
plugins: [
payloadAiPlugin({
collections: {
[Posts.slug]: true,
},
// Enable AI for globals too
globals: {
[Home.slug]: true,
},
// Development helpers
debugging: false,
disableSponsorMessage: false,
generatePromptOnInit: process.env.NODE_ENV !== 'production',
// Specify media collection for GPT-Image-1
uploadCollectionSlug: 'media',
// Lock down AI features
access: {
generate: ({ req }) => req.user?.role === 'admin',
settings: ({ req }) => req.user?.role === 'admin',
},
// Customize language options
options: {
enabledLanguages: ['en-US', 'zh-SG', 'zh-CN', 'en'],
},
// Reference additional fields in prompts
promptFields: [
{
name: 'url',
collections: ['images'],
},
{
name: 'markdown',
async getter(doc, { collection }) {
return docToMarkdown(collection, doc)
},
},
],
// Control initial prompt generation
seedPrompts: ({ path }) => {
if (path.endsWith('.meta.description')) {
return {
data: {
prompt: 'Generate SEO-friendly meta description: {{markdown}}',
},
}
}
if (path.endsWith('.slug')) return false // Disable for slugs
return undefined // Use defaults
},
// Custom media upload (useful for multi-tenant)
mediaUpload: async (result, { request, collection }) => {
return request.payload.create({
collection,
data: result.data,
file: result.file,
overrideAccess: false,
req: request,
})
},
}),
],
})
自定义组件和字段
自定义字段不会自动继承AI能力. 如果您的 AI 启用字段没有显示 Compose 设置, 请手动添加此组件路径 :
@ai-stack/payloadcms/fields#ComposeField
除错提示 : 启用 debugging: true 在您的插件配置中查看哪些字段启用了 AI.
页:1
需要更多细节吗? 看看这个 完整设置指南 用于:
- 自定义模型配置
- 高级快速工程
- 外地定制
- 解决问题提示
支持此项目
我空闲时间用"Q"建造的 如果此插件能节省您的工作时间, 请考虑为未来的开发加油 !
每杯咖啡都会让AI模型运行 和新的特性运输。 谢谢
捐款
我们爱贡献者! 无论你正在修复打字机,建议特征,还是建设新的能力,所有的贡献都是受欢迎的.
贡献方式
- 报告错误
- 建议的特性
- * 改进文件编制
- 提交拉动请求
加入对话 有效载荷的磁盘 让我们一起打造一个神奇的东西!
地方发展
想黑进插件吗? 这就是:
先决条件
- 节点.js(版本为
.nvmrc(中文(简体) ) - 小时
- 数据库连接( Postgres 或 MongoDB)
- 可选: AI 提供者 API 密钥
设置
# 1. Install dependencies
pnpm install
# 2. Set up environment
cp dev/.env.example dev/.env
# Edit dev/.env with your DATABASE_URI, PAYLOAD_SECRET, and API keys
# 3. Start development server
pnpm dev
# Admin UI available at http://localhost:3000
# 4. Generate types/importmap if needed
pnpm generate:importmap
pnpm generate:types
发展 工作流量
- 插件来源 :
src/ - 测试应用程序 :
dev/ - 编辑文件
src/并刷新以查看变化
测试和质量
pnpm test # Run all tests
pnpm lint # ESLint
pnpm prettier --write . # Format code
pnpm build # Build plugin
在另一个工程中测试
pnpm pack
# In your other project:
pnpm add /path/to/ai-plugin-*.tgz
项目结构
├── src/ # Plugin source code
├── dev/ # Test Payload app
│ ├── int.spec.ts # Integration tests
│ └── e2e.spec.ts # E2E tests
└── README.md # You are here!
由社区制作
恒星在 GitHub 二. 支助 加入磁盘 二. 支助 阅读指南