Files
GEOAgentArticleOptimizer/src/lib/workflow/article-optimizer.ts
T

38 lines
988 B
TypeScript

import type {
ArticleInput,
OptimizationFactCard,
OptimizedArticle,
} from "../domain/types";
import { optimizedArticleSchema } from "../domain/validation";
import { generateValidatedJson, type GenerateInput } from "../llm/client";
import {
ARTICLE_OPTIMIZER_SYSTEM_PROMPT,
buildArticleOptimizerPrompt,
} from "../llm/prompts";
export interface OptimizeArticleInput {
input: ArticleInput;
factCard: OptimizationFactCard;
onAuditSummary?: GenerateInput["onAuditSummary"];
}
export async function optimizeArticle({
input,
factCard,
onAuditSummary,
}: OptimizeArticleInput): Promise<OptimizedArticle> {
const llmArticle = await generateValidatedJson({
schema: optimizedArticleSchema,
system: ARTICLE_OPTIMIZER_SYSTEM_PROMPT,
prompt: buildArticleOptimizerPrompt(input, factCard),
temperature: 0.2,
task: "article_optimizer",
onAuditSummary,
});
return optimizedArticleSchema.parse({
...llmArticle,
image_suggestions: [],
});
}