Translate content to different languages using OpenAI's GPT.
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,
}),
]
});
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',
],
},
},
}),
],
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
: Request -
doc
Document in languages -
previousDoc
Old document (only available on Update) -
targetDoc
The old target document -
collectionOptions
-
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,
});
Use this to provide a backend for i18next string translations.
plugins: [
aiTranslatorPlugin({
enabled: true,
stringTranslation: {
enabled: true
}
}),
],
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',
},
}
}
}),
],
- 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
TODO: add documentation
myCollectionPrompt = ({source}) => {
source()
return }