@ai-stack/payloadcms 3.2.17-beta → 3.2.18-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,6 +4,15 @@ import { extractPromptAttachments } from '../../../utilities/extractPromptAttach
|
|
|
4
4
|
import { defaultSystemPrompt } from '../../prompts.js';
|
|
5
5
|
import { generateRichText } from './generateRichText.js';
|
|
6
6
|
const MODEL_KEY = 'ANTH-C';
|
|
7
|
+
const MODELS = [
|
|
8
|
+
'claude-opus-4-1',
|
|
9
|
+
'claude-opus-4-0',
|
|
10
|
+
'claude-sonnet-4-0',
|
|
11
|
+
'claude-3-opus-latest',
|
|
12
|
+
'claude-3-5-haiku-latest',
|
|
13
|
+
'claude-3-5-sonnet-latest',
|
|
14
|
+
'claude-3-7-sonnet-latest'
|
|
15
|
+
];
|
|
7
16
|
export const AnthropicConfig = {
|
|
8
17
|
models: [
|
|
9
18
|
{
|
|
@@ -41,15 +50,7 @@ export const AnthropicConfig = {
|
|
|
41
50
|
type: 'select',
|
|
42
51
|
defaultValue: 'claude-3-5-sonnet-latest',
|
|
43
52
|
label: 'Model',
|
|
44
|
-
options:
|
|
45
|
-
'claude-opus-4-1',
|
|
46
|
-
'claude-opus-4-0',
|
|
47
|
-
'claude-sonnet-4-0',
|
|
48
|
-
'claude-3-opus-latest',
|
|
49
|
-
'claude-3-5-haiku-latest',
|
|
50
|
-
'claude-3-5-sonnet-latest',
|
|
51
|
-
'claude-3-7-sonnet-latest'
|
|
52
|
-
]
|
|
53
|
+
options: MODELS
|
|
53
54
|
},
|
|
54
55
|
{
|
|
55
56
|
type: 'row',
|
|
@@ -100,15 +101,7 @@ export const AnthropicConfig = {
|
|
|
100
101
|
type: 'select',
|
|
101
102
|
defaultValue: 'claude-3-5-sonnet-latest',
|
|
102
103
|
label: 'Model',
|
|
103
|
-
options:
|
|
104
|
-
'claude-opus-4-1',
|
|
105
|
-
'claude-opus-4-0',
|
|
106
|
-
'claude-sonnet-4-0',
|
|
107
|
-
'claude-3-opus-latest',
|
|
108
|
-
'claude-3-5-haiku-latest',
|
|
109
|
-
'claude-3-5-sonnet-latest',
|
|
110
|
-
'claude-3-7-sonnet-latest'
|
|
111
|
-
]
|
|
104
|
+
options: MODELS
|
|
112
105
|
},
|
|
113
106
|
{
|
|
114
107
|
type: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/ai/models/anthropic/index.ts"],"sourcesContent":["import { anthropic } from '@ai-sdk/anthropic'\nimport { streamText } from 'ai'\n\nimport type { GenerationConfig } from '../../../types.js'\n\nimport { extractPromptAttachments } from '../../../utilities/extractPromptAttachments.js'\nimport { defaultSystemPrompt } from '../../prompts.js'\nimport { generateRichText } from './generateRichText.js'\n\nconst MODEL_KEY = 'ANTH-C'\n\nexport const AnthropicConfig: GenerationConfig = {\n models: [\n {\n id: `${MODEL_KEY}-text`,\n name: 'Anthropic Claude',\n fields: ['text', 'textarea'],\n handler: (prompt: string, options: { extractAttachments: boolean; locale: string; maxTokens: number; model: string; system: string; temperature: number; }) => {\n const streamTextResult = streamText({\n maxOutputTokens: options.maxTokens || 5000,\n model: anthropic(options.model),\n onError: (error) => {\n console.error(`${MODEL_KEY}-text: `, error)\n },\n prompt: options.extractAttachments ? extractPromptAttachments(prompt) : prompt,\n system: options.system || defaultSystemPrompt,\n temperature: options.temperature || 0.7,\n })\n\n return streamTextResult.toUIMessageStreamResponse();\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-text-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-text`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'claude-3-5-sonnet-latest',\n label: 'Model',\n options:
|
|
1
|
+
{"version":3,"sources":["../../../../src/ai/models/anthropic/index.ts"],"sourcesContent":["import { anthropic } from '@ai-sdk/anthropic'\nimport { streamText } from 'ai'\n\nimport type { GenerationConfig } from '../../../types.js'\n\nimport { extractPromptAttachments } from '../../../utilities/extractPromptAttachments.js'\nimport { defaultSystemPrompt } from '../../prompts.js'\nimport { generateRichText } from './generateRichText.js'\n\nconst MODEL_KEY = 'ANTH-C'\nconst MODELS = [\n 'claude-opus-4-1',\n 'claude-opus-4-0',\n 'claude-sonnet-4-0',\n 'claude-3-opus-latest',\n 'claude-3-5-haiku-latest',\n 'claude-3-5-sonnet-latest',\n 'claude-3-7-sonnet-latest',\n]\n\nexport const AnthropicConfig: GenerationConfig = {\n models: [\n {\n id: `${MODEL_KEY}-text`,\n name: 'Anthropic Claude',\n fields: ['text', 'textarea'],\n handler: (prompt: string, options: { extractAttachments: boolean; locale: string; maxTokens: number; model: string; system: string; temperature: number; }) => {\n const streamTextResult = streamText({\n maxOutputTokens: options.maxTokens || 5000,\n model: anthropic(options.model),\n onError: (error) => {\n console.error(`${MODEL_KEY}-text: `, error)\n },\n prompt: options.extractAttachments ? extractPromptAttachments(prompt) : prompt,\n system: options.system || defaultSystemPrompt,\n temperature: options.temperature || 0.7,\n })\n\n return streamTextResult.toUIMessageStreamResponse();\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-text-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-text`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'claude-3-5-sonnet-latest',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row', fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n\n ]\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n } \n ],\n label: 'Anthropic Claude Settings',\n },\n },\n {\n id: `${MODEL_KEY}-object`,\n name: 'Anthropic Claude',\n fields: ['richText'],\n handler: (text: string, options) => {\n return generateRichText(text, options)\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-object-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-object`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'claude-3-5-sonnet-latest',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row', fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n\n ]\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n }\n ],\n label: 'Anthropic Claude Settings',\n },\n },\n ],\n provider: 'Anthropic',\n}\n"],"names":["anthropic","streamText","extractPromptAttachments","defaultSystemPrompt","generateRichText","MODEL_KEY","MODELS","AnthropicConfig","models","id","name","fields","handler","prompt","options","streamTextResult","maxOutputTokens","maxTokens","model","onError","error","console","extractAttachments","system","temperature","toUIMessageStreamResponse","output","settings","type","admin","condition","data","defaultValue","label","max","min","text","provider"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAC7C,SAASC,UAAU,QAAQ,KAAI;AAI/B,SAASC,wBAAwB,QAAQ,iDAAgD;AACzF,SAASC,mBAAmB,QAAQ,mBAAkB;AACtD,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,MAAMC,YAAY;AAClB,MAAMC,SAAS;IACb;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,OAAO,MAAMC,kBAAoC;IAC/CC,QAAQ;QACN;YACEC,IAAI,GAAGJ,UAAU,KAAK,CAAC;YACvBK,MAAM;YACNC,QAAQ;gBAAC;gBAAQ;aAAW;YAC5BC,SAAS,CAACC,QAAgBC;gBACxB,MAAMC,mBAAmBd,WAAW;oBAClCe,iBAAiBF,QAAQG,SAAS,IAAI;oBACtCC,OAAOlB,UAAUc,QAAQI,KAAK;oBAC9BC,SAAS,CAACC;wBACRC,QAAQD,KAAK,CAAC,GAAGf,UAAU,OAAO,CAAC,EAAEe;oBACvC;oBACAP,QAAQC,QAAQQ,kBAAkB,GAAGpB,yBAAyBW,UAAUA;oBACxEU,QAAQT,QAAQS,MAAM,IAAIpB;oBAC1BqB,aAAaV,QAAQU,WAAW,IAAI;gBACtC;gBAEA,OAAOT,iBAAiBU,yBAAyB;YACnD;YACAC,QAAQ;YACRC,UAAU;gBACRjB,MAAM,GAAGL,UAAU,cAAc,CAAC;gBAClCuB,MAAM;gBACNC,OAAO;oBACLC,WAAUC,IAAI;wBACZ,OAAOA,IAAI,CAAC,WAAW,KAAK,GAAG1B,UAAU,KAAK,CAAC;oBACjD;gBACF;gBACAM,QAAQ;oBACN;wBACED,MAAM;wBACNkB,MAAM;wBACNI,cAAc;wBACdC,OAAO;wBACPnB,SAASR;oBACX;oBACA;wBACEsB,MAAM;wBAAOjB,QAAQ;4BACnB;gCACED,MAAM;gCACNkB,MAAM;gCACNI,cAAc;4BAChB;4BACA;gCACEtB,MAAM;gCACNkB,MAAM;gCACNI,cAAc;gCACdE,KAAK;gCACLC,KAAK;4BACP;yBAED;oBACH;oBACA;wBACEzB,MAAM;wBACNkB,MAAM;oBACR;iBACD;gBACDK,OAAO;YACT;QACF;QACA;YACExB,IAAI,GAAGJ,UAAU,OAAO,CAAC;YACzBK,MAAM;YACNC,QAAQ;gBAAC;aAAW;YACpBC,SAAS,CAACwB,MAActB;gBACtB,OAAOV,iBAAiBgC,MAAMtB;YAChC;YACAY,QAAQ;YACRC,UAAU;gBACRjB,MAAM,GAAGL,UAAU,gBAAgB,CAAC;gBACpCuB,MAAM;gBACNC,OAAO;oBACLC,WAAUC,IAAI;wBACZ,OAAOA,IAAI,CAAC,WAAW,KAAK,GAAG1B,UAAU,OAAO,CAAC;oBACnD;gBACF;gBACAM,QAAQ;oBACN;wBACED,MAAM;wBACNkB,MAAM;wBACNI,cAAc;wBACdC,OAAO;wBACPnB,SAASR;oBACX;oBACA;wBACEsB,MAAM;wBAAOjB,QAAQ;4BACnB;gCACED,MAAM;gCACNkB,MAAM;gCACNI,cAAc;4BAChB;4BACA;gCACEtB,MAAM;gCACNkB,MAAM;gCACNI,cAAc;gCACdE,KAAK;gCACLC,KAAK;4BACP;yBAED;oBACH;oBACA;wBACEzB,MAAM;wBACNkB,MAAM;oBACR;iBACD;gBACDK,OAAO;YACT;QACF;KACD;IACDI,UAAU;AACZ,EAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { streamText } from 'ai';
|
|
2
|
-
import { extractPromptAttachments } from
|
|
2
|
+
import { extractPromptAttachments } from '../../../utilities/extractPromptAttachments.js';
|
|
3
3
|
import { defaultSystemPrompt } from '../../prompts.js';
|
|
4
4
|
import { generateFileNameByPrompt } from '../../utils/generateFileNameByPrompt.js';
|
|
5
5
|
import { generateImage } from './generateImage.js';
|
|
@@ -7,6 +7,16 @@ import { generateRichText } from './generateRichText.js';
|
|
|
7
7
|
import { generateVoice } from './generateVoice.js';
|
|
8
8
|
import { openai } from './openai.js';
|
|
9
9
|
const MODEL_KEY = 'Oai';
|
|
10
|
+
const MODELS = [
|
|
11
|
+
'gpt-5',
|
|
12
|
+
'gpt-5-mini',
|
|
13
|
+
'gpt-5-nano',
|
|
14
|
+
'gpt-4.1',
|
|
15
|
+
'gpt-4o',
|
|
16
|
+
'gpt-4-turbo',
|
|
17
|
+
'gpt-4o-mini',
|
|
18
|
+
'gpt-3.5-turbo'
|
|
19
|
+
];
|
|
10
20
|
//TODO: Simplify this file by moving the handlers to separate files and remove duplicate code
|
|
11
21
|
export const OpenAIConfig = {
|
|
12
22
|
models: [
|
|
@@ -49,18 +59,7 @@ export const OpenAIConfig = {
|
|
|
49
59
|
type: 'select',
|
|
50
60
|
defaultValue: 'gpt-4o-mini',
|
|
51
61
|
label: 'Model',
|
|
52
|
-
options:
|
|
53
|
-
'gpt-5',
|
|
54
|
-
'gpt-5-mini',
|
|
55
|
-
'gpt-5-nano',
|
|
56
|
-
'gpt-4.1',
|
|
57
|
-
'gpt-4o',
|
|
58
|
-
'gpt-4-turbo',
|
|
59
|
-
'gpt-4o-mini',
|
|
60
|
-
'gpt-3.5-turbo',
|
|
61
|
-
'gpt-4.1',
|
|
62
|
-
'gpt-5'
|
|
63
|
-
]
|
|
62
|
+
options: MODELS
|
|
64
63
|
},
|
|
65
64
|
{
|
|
66
65
|
type: 'row',
|
|
@@ -393,18 +392,7 @@ export const OpenAIConfig = {
|
|
|
393
392
|
type: 'select',
|
|
394
393
|
defaultValue: 'gpt-4o',
|
|
395
394
|
label: 'Model',
|
|
396
|
-
options:
|
|
397
|
-
'gpt-5',
|
|
398
|
-
'gpt-5-mini',
|
|
399
|
-
'gpt-5-nano',
|
|
400
|
-
'gpt-4.1',
|
|
401
|
-
'gpt-4o',
|
|
402
|
-
'gpt-4-turbo',
|
|
403
|
-
'gpt-4o-mini',
|
|
404
|
-
'o4-mini',
|
|
405
|
-
'gpt-4.1',
|
|
406
|
-
'gpt-5'
|
|
407
|
-
]
|
|
395
|
+
options: MODELS
|
|
408
396
|
},
|
|
409
397
|
{
|
|
410
398
|
type: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/ai/models/openai/index.ts"],"sourcesContent":["import type { SpeechCreateParams } from 'openai/resources/audio/speech'\nimport type { File } from 'payload'\n\nimport { streamText } from 'ai'\n\nimport type { GenerationConfig } from '../../../types.js'\n\nimport { extractPromptAttachments } from \"../../../utilities/extractPromptAttachments.js\";\nimport { defaultSystemPrompt } from '../../prompts.js'\nimport { generateFileNameByPrompt } from '../../utils/generateFileNameByPrompt.js'\nimport { generateImage } from './generateImage.js'\nimport { generateRichText } from './generateRichText.js'\nimport { generateVoice } from './generateVoice.js'\nimport { openai } from './openai.js'\n\nconst MODEL_KEY = 'Oai'\n\n//TODO: Simplify this file by moving the handlers to separate files and remove duplicate code\nexport const OpenAIConfig: GenerationConfig = {\n models: [\n {\n id: `${MODEL_KEY}-text`,\n name: 'OpenAI GPT Text',\n fields: ['text', 'textarea'],\n handler: (prompt: string, options: { extractAttachments: boolean; locale: string; maxTokens: number; model: string; system: string; temperature: number; }) => {\n const streamTextResult = streamText({\n maxOutputTokens: options.maxTokens || 5000,\n model: openai(options.model),\n onError: (error) => {\n console.error(`${MODEL_KEY}-text: `, error)\n },\n temperature: options.temperature || 0.7,\n\n // TODO: Implement billing/token consumption\n // onFinish: (stepResult) => {\n // console.log('streamText : finish : ', stepResult)\n // },\n prompt: options.extractAttachments ? extractPromptAttachments(prompt) : prompt,\n system: options.system || defaultSystemPrompt,\n })\n\n return streamTextResult.toUIMessageStreamResponse();\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-text-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-text`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'gpt-4o-mini',\n label: 'Model',\n options: [\n 'gpt-5',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-4-turbo',\n 'gpt-4o-mini',\n 'gpt-3.5-turbo'\n , 'gpt-4.1', 'gpt-5'],\n },\n {\n type: 'row', fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n\n ]\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n }\n ],\n label: 'OpenAI GPT Settings',\n },\n },\n {\n id: 'dall-e',\n name: 'OpenAI DALL-E',\n fields: ['upload'],\n handler: async (prompt: string, options) => {\n const imageData = await generateImage(prompt, options)\n return {\n data: {\n alt: imageData.alt,\n },\n file: {\n name: `image_${generateFileNameByPrompt(imageData.alt || prompt)}.jpeg`,\n data: imageData.buffer,\n mimetype: 'image/jpeg',\n size: imageData.buffer.byteLength,\n } as File,\n }\n },\n output: 'image',\n settings: {\n name: 'dalle-e-settings',\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'dall-e'\n },\n },\n fields: [\n {\n name: 'version',\n type: 'select',\n defaultValue: 'dall-e-3',\n label: 'Version',\n options: ['dall-e-3', 'dall-e-2'],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'size',\n type: 'select',\n defaultValue: '1024x1024',\n label: 'Size',\n options: ['256x256', '512x512', '1024x1024', '1792x1024', '1024x1792'],\n },\n {\n name: 'style',\n type: 'select',\n defaultValue: 'natural',\n label: 'Style',\n options: ['vivid', 'natural'],\n },\n ],\n },\n {\n name: 'enable-prompt-optimization',\n type: 'checkbox',\n label: 'Optimize prompt',\n },\n ],\n label: 'OpenAI DALL-E Settings',\n },\n },\n {\n id: 'gpt-image-1',\n name: 'OpenAI GPT Image 1',\n fields: ['upload'],\n handler: async (prompt: string, options) => {\n const imageData = await generateImage(prompt, options)\n return {\n data: {\n alt: imageData.alt,\n },\n file: {\n name: `image_${generateFileNameByPrompt(imageData.alt || prompt)}.png`,\n data: imageData.buffer,\n mimetype: 'image/png',\n size: imageData.buffer.byteLength,\n } as File,\n }\n },\n output: 'image',\n settings: {\n name: 'gpt-image-1-settings',\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'gpt-image-1'\n },\n },\n fields: [\n {\n name: 'version',\n type: 'select',\n defaultValue: 'gpt-image-1',\n label: 'Version',\n options: ['gpt-image-1'],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'size',\n type: 'select',\n defaultValue: 'auto',\n label: 'Size',\n options: ['1024x1024', '1024x1536', '1536x1024', 'auto'],\n },\n {\n name: 'quality',\n type: 'select',\n defaultValue: 'auto',\n label: 'Quality',\n options: ['low', 'medium', 'high', 'auto'],\n },\n ],\n },\n {\n name: 'output_format',\n type: 'select',\n defaultValue: 'png',\n label: 'Output Format',\n options: ['png', 'jpeg', 'webp'],\n },\n {\n name: 'output_compression',\n type: 'number',\n admin: {\n condition(data) {\n return data.output_format === 'jpeg' || data.output_format === 'webp'\n },\n },\n defaultValue: 100,\n label: 'Output Compression',\n max: 100,\n min: 0,\n },\n {\n name: 'background',\n type: 'select',\n admin: {\n condition(data) {\n return data.output_format === 'png' || data.output_format === 'webp'\n },\n },\n defaultValue: 'white',\n label: 'Background',\n options: ['white', 'transparent'],\n },\n {\n name: 'moderation',\n type: 'select',\n defaultValue: 'auto',\n label: 'Moderation',\n options: ['auto', 'low'],\n },\n ],\n label: 'OpenAI GPT Image 1 Settings',\n },\n },\n {\n id: 'tts',\n name: 'OpenAI Text-to-Speech',\n fields: ['upload'],\n handler: async (text: string, options) => {\n //TODO: change it to open ai text to speech api\n const voiceData = await generateVoice(text, options)\n if (!voiceData || !voiceData.buffer) {\n throw new Error('Voice data missing')\n }\n return {\n data: {\n alt: text,\n },\n file: {\n name: `voice_${generateFileNameByPrompt(text)}.mp3`,\n data: voiceData.buffer,\n mimetype: 'audio/mp3',\n size: voiceData.buffer.byteLength,\n } as File,\n }\n },\n output: 'audio',\n settings: {\n name: `${MODEL_KEY}-tts-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'tts'\n },\n },\n fields: [\n {\n name: 'voice',\n type: 'select',\n defaultValue: 'alloy',\n label: 'Voice',\n options: ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'] as Array<\n SpeechCreateParams['voice']\n >,\n },\n {\n name: 'model',\n type: 'select',\n defaultValue: 'tts-1',\n label: 'Model',\n options: ['tts-1', 'tts-1-hd'] as Array<SpeechCreateParams['model']>,\n },\n {\n name: 'response_format',\n type: 'select',\n defaultValue: 'mp3',\n label: 'Response Format',\n options: ['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'],\n },\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1,\n label: 'Speed',\n max: 4,\n min: 0.25,\n },\n ],\n label: 'OpenAI Text-to-Speech Settings',\n },\n },\n {\n id: `${MODEL_KEY}-object`,\n name: 'OpenAI GPT',\n fields: ['richText'],\n handler: (text: string, options) => {\n return generateRichText(text, options)\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-object-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-object`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'gpt-4o',\n label: 'Model',\n options: [\n 'gpt-5',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-4-turbo',\n 'gpt-4o-mini',\n 'o4-mini'\n , 'gpt-4.1', 'gpt-5'],\n },\n {\n type: 'row', fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n\n ]\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n }\n ],\n label: 'OpenAI GPT Settings',\n },\n },\n ],\n provider: 'OpenAI',\n}\n"],"names":["streamText","extractPromptAttachments","defaultSystemPrompt","generateFileNameByPrompt","generateImage","generateRichText","generateVoice","openai","MODEL_KEY","OpenAIConfig","models","id","name","fields","handler","prompt","options","streamTextResult","maxOutputTokens","maxTokens","model","onError","error","console","temperature","extractAttachments","system","toUIMessageStreamResponse","output","settings","type","admin","condition","data","defaultValue","label","max","min","imageData","alt","file","buffer","mimetype","size","byteLength","output_format","text","voiceData","Error","provider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/ai/models/openai/index.ts"],"sourcesContent":["import type { SpeechCreateParams } from 'openai/resources/audio/speech'\nimport type { File } from 'payload'\n\nimport { streamText } from 'ai'\n\nimport type { GenerationConfig } from '../../../types.js'\n\nimport { extractPromptAttachments } from '../../../utilities/extractPromptAttachments.js'\nimport { defaultSystemPrompt } from '../../prompts.js'\nimport { generateFileNameByPrompt } from '../../utils/generateFileNameByPrompt.js'\nimport { generateImage } from './generateImage.js'\nimport { generateRichText } from './generateRichText.js'\nimport { generateVoice } from './generateVoice.js'\nimport { openai } from './openai.js'\n\nconst MODEL_KEY = 'Oai'\nconst MODELS = [\n 'gpt-5',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-4-turbo',\n 'gpt-4o-mini',\n 'gpt-3.5-turbo',\n]\n\n//TODO: Simplify this file by moving the handlers to separate files and remove duplicate code\nexport const OpenAIConfig: GenerationConfig = {\n models: [\n {\n id: `${MODEL_KEY}-text`,\n name: 'OpenAI GPT Text',\n fields: ['text', 'textarea'],\n handler: (\n prompt: string,\n options: {\n extractAttachments: boolean\n locale: string\n maxTokens: number\n model: string\n system: string\n temperature: number\n },\n ) => {\n const streamTextResult = streamText({\n maxOutputTokens: options.maxTokens || 5000,\n model: openai(options.model),\n onError: (error) => {\n console.error(`${MODEL_KEY}-text: `, error)\n },\n temperature: options.temperature || 0.7,\n\n // TODO: Implement billing/token consumption\n // onFinish: (stepResult) => {\n // console.log('streamText : finish : ', stepResult)\n // },\n prompt: options.extractAttachments ? extractPromptAttachments(prompt) : prompt,\n system: options.system || defaultSystemPrompt,\n })\n\n return streamTextResult.toUIMessageStreamResponse()\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-text-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-text`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'gpt-4o-mini',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n },\n ],\n label: 'OpenAI GPT Settings',\n },\n },\n {\n id: 'dall-e',\n name: 'OpenAI DALL-E',\n fields: ['upload'],\n handler: async (prompt: string, options) => {\n const imageData = await generateImage(prompt, options)\n return {\n data: {\n alt: imageData.alt,\n },\n file: {\n name: `image_${generateFileNameByPrompt(imageData.alt || prompt)}.jpeg`,\n data: imageData.buffer,\n mimetype: 'image/jpeg',\n size: imageData.buffer.byteLength,\n } as File,\n }\n },\n output: 'image',\n settings: {\n name: 'dalle-e-settings',\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'dall-e'\n },\n },\n fields: [\n {\n name: 'version',\n type: 'select',\n defaultValue: 'dall-e-3',\n label: 'Version',\n options: ['dall-e-3', 'dall-e-2'],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'size',\n type: 'select',\n defaultValue: '1024x1024',\n label: 'Size',\n options: ['256x256', '512x512', '1024x1024', '1792x1024', '1024x1792'],\n },\n {\n name: 'style',\n type: 'select',\n defaultValue: 'natural',\n label: 'Style',\n options: ['vivid', 'natural'],\n },\n ],\n },\n {\n name: 'enable-prompt-optimization',\n type: 'checkbox',\n label: 'Optimize prompt',\n },\n ],\n label: 'OpenAI DALL-E Settings',\n },\n },\n {\n id: 'gpt-image-1',\n name: 'OpenAI GPT Image 1',\n fields: ['upload'],\n handler: async (prompt: string, options) => {\n const imageData = await generateImage(prompt, options)\n return {\n data: {\n alt: imageData.alt,\n },\n file: {\n name: `image_${generateFileNameByPrompt(imageData.alt || prompt)}.png`,\n data: imageData.buffer,\n mimetype: 'image/png',\n size: imageData.buffer.byteLength,\n } as File,\n }\n },\n output: 'image',\n settings: {\n name: 'gpt-image-1-settings',\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'gpt-image-1'\n },\n },\n fields: [\n {\n name: 'version',\n type: 'select',\n defaultValue: 'gpt-image-1',\n label: 'Version',\n options: ['gpt-image-1'],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'size',\n type: 'select',\n defaultValue: 'auto',\n label: 'Size',\n options: ['1024x1024', '1024x1536', '1536x1024', 'auto'],\n },\n {\n name: 'quality',\n type: 'select',\n defaultValue: 'auto',\n label: 'Quality',\n options: ['low', 'medium', 'high', 'auto'],\n },\n ],\n },\n {\n name: 'output_format',\n type: 'select',\n defaultValue: 'png',\n label: 'Output Format',\n options: ['png', 'jpeg', 'webp'],\n },\n {\n name: 'output_compression',\n type: 'number',\n admin: {\n condition(data) {\n return data.output_format === 'jpeg' || data.output_format === 'webp'\n },\n },\n defaultValue: 100,\n label: 'Output Compression',\n max: 100,\n min: 0,\n },\n {\n name: 'background',\n type: 'select',\n admin: {\n condition(data) {\n return data.output_format === 'png' || data.output_format === 'webp'\n },\n },\n defaultValue: 'white',\n label: 'Background',\n options: ['white', 'transparent'],\n },\n {\n name: 'moderation',\n type: 'select',\n defaultValue: 'auto',\n label: 'Moderation',\n options: ['auto', 'low'],\n },\n ],\n label: 'OpenAI GPT Image 1 Settings',\n },\n },\n {\n id: 'tts',\n name: 'OpenAI Text-to-Speech',\n fields: ['upload'],\n handler: async (text: string, options) => {\n //TODO: change it to open ai text to speech api\n const voiceData = await generateVoice(text, options)\n if (!voiceData || !voiceData.buffer) {\n throw new Error('Voice data missing')\n }\n return {\n data: {\n alt: text,\n },\n file: {\n name: `voice_${generateFileNameByPrompt(text)}.mp3`,\n data: voiceData.buffer,\n mimetype: 'audio/mp3',\n size: voiceData.buffer.byteLength,\n } as File,\n }\n },\n output: 'audio',\n settings: {\n name: `${MODEL_KEY}-tts-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === 'tts'\n },\n },\n fields: [\n {\n name: 'voice',\n type: 'select',\n defaultValue: 'alloy',\n label: 'Voice',\n options: ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'] as Array<\n SpeechCreateParams['voice']\n >,\n },\n {\n name: 'model',\n type: 'select',\n defaultValue: 'tts-1',\n label: 'Model',\n options: ['tts-1', 'tts-1-hd'] as Array<SpeechCreateParams['model']>,\n },\n {\n name: 'response_format',\n type: 'select',\n defaultValue: 'mp3',\n label: 'Response Format',\n options: ['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'],\n },\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1,\n label: 'Speed',\n max: 4,\n min: 0.25,\n },\n ],\n label: 'OpenAI Text-to-Speech Settings',\n },\n },\n {\n id: `${MODEL_KEY}-object`,\n name: 'OpenAI GPT',\n fields: ['richText'],\n handler: (text: string, options) => {\n return generateRichText(text, options)\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-object-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-object`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'gpt-4o',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n },\n ],\n label: 'OpenAI GPT Settings',\n },\n },\n ],\n provider: 'OpenAI',\n}\n"],"names":["streamText","extractPromptAttachments","defaultSystemPrompt","generateFileNameByPrompt","generateImage","generateRichText","generateVoice","openai","MODEL_KEY","MODELS","OpenAIConfig","models","id","name","fields","handler","prompt","options","streamTextResult","maxOutputTokens","maxTokens","model","onError","error","console","temperature","extractAttachments","system","toUIMessageStreamResponse","output","settings","type","admin","condition","data","defaultValue","label","max","min","imageData","alt","file","buffer","mimetype","size","byteLength","output_format","text","voiceData","Error","provider"],"mappings":"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"}
|