payload-ai v0.0.67
Payload AI
Translate content to different languages using OpenAI's GPT.
How to install the plugin
Install via npm:
npm install payload-ai
Or yarn:
yarn add payload-ai
To install the plugin, simply add it to your payload.config() in the Plugin array.
import payloadAi from 'payload-ai';
export const config = buildConfig({
plugins: [
// You can pass options to the plugin
payloadAi({
enabled: true,
}),
]
});
Collection translation 📦
Add the collections
where you want to enable the translation and the fields
. It will translate each field (also nested fields) on every update of the default language.
plugins: [
aiTranslatorPlugin({
enabled: true,
collections: {
examples: { // Name of the collection you want to add translations
fields: [
'stringText', // Keys of fields you want to translate (wil also translate nested fields)
'richText',
],
},
},
}),
],
Custom prompts by Field
Use promptFunc
for each field to customize the prompt.
plugins: [
aiTranslatorPlugin({
enabled: true,
collections: {
examples: {
settings: {
model: 'gpt-4',
promptFunc: ({ messages, namespace }) => {
return [
{
role: 'system',
content:
'Important: Add a smily face at the end of the message to make the AI more friendly. 😊',
},
...messages,
]
},
},
},
}
}
]
The function will allow you to use the following
req
: Requestdoc
Document in languagespreviousDoc
Old document (only available on Update)targetDoc
The old target documentcollectionOptions
language
translatorConfig language: string, sourceLanguage?: string,
targetField
- sourceField
Use with payload-seo
import {generateTitle, generateDescription } from "payload-ai";
seo({
collections: ['examples'],
// uploadsCollection: 'media',
generateTitle: generateTitle,
generateDescription: ({ doc }) => generateDescription,
});
String translation
Use this to provide a backend for i18next string translations.
plugins: [
aiTranslatorPlugin({
enabled: true,
stringTranslation: {
enabled: true
}
}),
],
Change model for string translation
To update the model you can change the collection settings in the same way as with other collections.
plugins: [
aiTranslatorPlugin({
enabled: true,
stringTranslation: {
enabled: true
}
collections: {
translations: {
settings: {
model: 'gpt-4',
},
}
}
}),
],
Access control
By default the plugin will use the update access control of the collection.
To overwrite that behaviour you can add access
to the collections configuration.
plugins: [
aiTranslatorPlugin({
enabled: true,
stringTranslation: {
enabled: true
}
collections: {
examples: {
access: () => true,
}
}
}),
],
Planned features 🧭
- generate image alt text from GPT
- generate SEO Text
- generate structured content
- custom access control
- custom overrides for translation
- generate images based on input
- generate Open Graph based on content
Use in hooks
TODO: add documentation
myCollectionPrompt = ({source}) => {
source()
return }