Add AI query constructor
This commit is contained in:
parent
e9d3c19c40
commit
76639a4195
@ -80,6 +80,37 @@ export const getAiImageQuery = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getAiImageQueryForField = (
|
||||||
|
field: AiAutoGeneratedField,
|
||||||
|
existingTags: Tags = [],
|
||||||
|
existingTitle?: string,
|
||||||
|
) => {
|
||||||
|
switch(field) {
|
||||||
|
case 'title': return `TITLE: ${getAiImageQuery('title', existingTags, existingTitle)}`;
|
||||||
|
case 'caption': return `CAPTION: ${getAiImageQuery('caption', existingTags, existingTitle)}`;
|
||||||
|
case 'tags': return `TAGS: ${getAiImageQuery('tags', existingTags, existingTitle)}`;
|
||||||
|
case 'semantic': return `SEMANTIC: ${getAiImageQuery('description-small', existingTags, existingTitle)}`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAiImageryQuerySet = (
|
||||||
|
fields: AiAutoGeneratedField[],
|
||||||
|
existingTags: Tags = [],
|
||||||
|
existingTitle?: string,
|
||||||
|
) => {
|
||||||
|
const query = ['Generate a suite of structured meta content for the attached image:' + '\n'];
|
||||||
|
|
||||||
|
fields.forEach(field => {
|
||||||
|
query.push(getAiImageQueryForField(field, existingTags, existingTitle));
|
||||||
|
});
|
||||||
|
|
||||||
|
query.push(`\nRespond with a valid JSON object with the following format: { ${fields.map(field => `${field}: 'string'`).join(', ')} }`);
|
||||||
|
|
||||||
|
console.log(query.join('\n'));
|
||||||
|
|
||||||
|
return query.join('\n');
|
||||||
|
};
|
||||||
|
|
||||||
export const parseTitleAndCaption = (text: string) => {
|
export const parseTitleAndCaption = (text: string) => {
|
||||||
const matches = text.includes('Title')
|
const matches = text.includes('Title')
|
||||||
? text.match(/^[`'"]*Title: ["']*(.*?)["']*[ ]*Caption: ["']*(.*?)\.*["']*[`'"]*$/)
|
? text.match(/^[`'"]*Title: ["']*(.*?)["']*[ ]*Caption: ["']*(.*?)\.*["']*[`'"]*$/)
|
||||||
|
|||||||
@ -119,7 +119,7 @@ export const getColorFieldsForPhotoForm = async (
|
|||||||
|
|
||||||
export const getColorFromAI = async (
|
export const getColorFromAI = async (
|
||||||
_url: string,
|
_url: string,
|
||||||
useBatch?: boolean,
|
isBatch?: boolean,
|
||||||
) => {
|
) => {
|
||||||
const url = getOptimizedPhotoUrlForManipulation(_url, IS_PREVIEW);
|
const url = getOptimizedPhotoUrlForManipulation(_url, IS_PREVIEW);
|
||||||
const image = await getImageBase64FromUrl(url);
|
const image = await getImageBase64FromUrl(url);
|
||||||
@ -128,7 +128,7 @@ export const getColorFromAI = async (
|
|||||||
If yes, what is the approximate hex color of the subject.
|
If yes, what is the approximate hex color of the subject.
|
||||||
If not, what is the approximate hex color of the background?
|
If not, what is the approximate hex color of the background?
|
||||||
Respond only with a hex color value:
|
Respond only with a hex color value:
|
||||||
`, useBatch);
|
`, isBatch);
|
||||||
const hex = hexColor?.match(/#*([a-f0-9]{6})/i)?.[1];
|
const hex = hexColor?.match(/#*([a-f0-9]{6})/i)?.[1];
|
||||||
if (hex) {
|
if (hex) {
|
||||||
return convertHexToOklch(`#${hex}`);
|
return convertHexToOklch(`#${hex}`);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user