接入文章优化LLM追踪
This commit is contained in:
@@ -7,7 +7,6 @@ import type {
|
||||
LlmTraceCallStatus,
|
||||
LlmTraceCompleteness,
|
||||
LlmTraceErrorType,
|
||||
LlmTraceRun,
|
||||
LlmTraceRunStatus,
|
||||
LlmTraceWorkflowStage,
|
||||
} from "./trace-types";
|
||||
|
||||
@@ -9,7 +9,6 @@ import type {
|
||||
LlmTraceCallStatus,
|
||||
LlmTraceCompleteness,
|
||||
LlmTraceErrorType,
|
||||
LlmTraceRun,
|
||||
LlmTraceRunStatus,
|
||||
LlmTraceWorkflowStage,
|
||||
} from "./trace-types";
|
||||
|
||||
@@ -13,12 +13,14 @@ import {
|
||||
export interface OptimizeArticleInput {
|
||||
input: ArticleInput;
|
||||
factCard: OptimizationFactCard;
|
||||
onTraceEvent?: GenerateInput["onTraceEvent"];
|
||||
onAuditSummary?: GenerateInput["onAuditSummary"];
|
||||
}
|
||||
|
||||
export async function optimizeArticle({
|
||||
input,
|
||||
factCard,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
}: OptimizeArticleInput): Promise<OptimizedArticle> {
|
||||
const llmArticle = await generateValidatedJson({
|
||||
@@ -27,6 +29,9 @@ export async function optimizeArticle({
|
||||
prompt: buildArticleOptimizerPrompt(input, factCard),
|
||||
temperature: 0.2,
|
||||
task: "article_optimizer",
|
||||
schemaName: "optimizedArticleSchema",
|
||||
traceStage: "draft",
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
|
||||
|
||||
@@ -8,7 +8,10 @@ import {
|
||||
|
||||
export async function extractCandidateFactCard(
|
||||
input: ArticleInput,
|
||||
options: { onAuditSummary?: GenerateInput["onAuditSummary"] } = {},
|
||||
options: {
|
||||
onAuditSummary?: GenerateInput["onAuditSummary"];
|
||||
onTraceEvent?: GenerateInput["onTraceEvent"];
|
||||
} = {},
|
||||
): Promise<CandidateFactCard> {
|
||||
return generateValidatedJson({
|
||||
schema: candidateFactCardSchema,
|
||||
@@ -16,6 +19,9 @@ export async function extractCandidateFactCard(
|
||||
prompt: buildFactExtractorPrompt(input),
|
||||
temperature: 0.1,
|
||||
task: "fact_extractor",
|
||||
schemaName: "candidateFactCardSchema",
|
||||
traceStage: "fact_card",
|
||||
onTraceEvent: options.onTraceEvent,
|
||||
onAuditSummary: options.onAuditSummary,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -43,6 +43,8 @@ export interface InspectQualityInput {
|
||||
factCard: OptimizationFactCard;
|
||||
platform: PublishPlatform;
|
||||
sourceImages: ImageInput[];
|
||||
rewriteRound?: number;
|
||||
onTraceEvent?: GenerateInput["onTraceEvent"];
|
||||
onAuditSummary?: GenerateInput["onAuditSummary"];
|
||||
}
|
||||
|
||||
@@ -72,6 +74,10 @@ export async function inspectQualityWithLlm(
|
||||
}),
|
||||
temperature: 0.1,
|
||||
task: "quality_inspector",
|
||||
schemaName: "llmQaPatchSchema",
|
||||
traceStage: "qa",
|
||||
rewriteRound: input.rewriteRound,
|
||||
onTraceEvent: input.onTraceEvent,
|
||||
onAuditSummary: input.onAuditSummary,
|
||||
});
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface RunStreamingOptimizationWorkflowInput {
|
||||
input: ArticleInput;
|
||||
factCard: OptimizationFactCard;
|
||||
onEvent: (event: OptimizationStreamEvent) => void | Promise<void>;
|
||||
onTraceEvent?: GenerateInput["onTraceEvent"];
|
||||
onAuditSummary?: GenerateInput["onAuditSummary"];
|
||||
}
|
||||
|
||||
@@ -21,6 +22,7 @@ export async function runStreamingOptimizationWorkflow({
|
||||
input,
|
||||
factCard,
|
||||
onEvent,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
}: RunStreamingOptimizationWorkflowInput) {
|
||||
const processSummary: ProcessSummaryStep[] = [];
|
||||
@@ -31,7 +33,12 @@ export async function runStreamingOptimizationWorkflow({
|
||||
message: "正在生成优化草稿",
|
||||
});
|
||||
let stageStartedAt = Date.now();
|
||||
let article = await optimizeArticle({ input, factCard, onAuditSummary });
|
||||
let article = await optimizeArticle({
|
||||
input,
|
||||
factCard,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
processSummary.push(
|
||||
createProcessStep({
|
||||
stage: "draft",
|
||||
@@ -54,6 +61,8 @@ export async function runStreamingOptimizationWorkflow({
|
||||
factCard,
|
||||
platform: input.platform,
|
||||
sourceImages: input.images,
|
||||
rewriteRound: 0,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
processSummary.push(
|
||||
@@ -81,6 +90,8 @@ export async function runStreamingOptimizationWorkflow({
|
||||
article,
|
||||
factCard,
|
||||
failedChecks,
|
||||
rewriteRound: nextRound,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
rewriteRounds = nextRound;
|
||||
@@ -112,6 +123,8 @@ export async function runStreamingOptimizationWorkflow({
|
||||
factCard,
|
||||
platform: input.platform,
|
||||
sourceImages: input.images,
|
||||
rewriteRound: nextRound,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
processSummary.push(
|
||||
|
||||
@@ -10,6 +10,8 @@ export interface RewriteFailedSectionsInput {
|
||||
article: OptimizedArticle;
|
||||
factCard: OptimizationFactCard;
|
||||
failedChecks: QaCheck[];
|
||||
rewriteRound?: number;
|
||||
onTraceEvent?: GenerateInput["onTraceEvent"];
|
||||
onAuditSummary?: GenerateInput["onAuditSummary"];
|
||||
}
|
||||
|
||||
@@ -17,6 +19,8 @@ export async function rewriteFailedSections({
|
||||
article,
|
||||
factCard,
|
||||
failedChecks,
|
||||
rewriteRound,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
}: RewriteFailedSectionsInput): Promise<OptimizedArticle> {
|
||||
const llmArticle = await generateValidatedJson({
|
||||
@@ -25,6 +29,10 @@ export async function rewriteFailedSections({
|
||||
prompt: buildTargetedRewritePrompt({ article, factCard, failedChecks }),
|
||||
temperature: 0.15,
|
||||
task: "targeted_rewriter",
|
||||
schemaName: "optimizedArticleSchema",
|
||||
traceStage: "rewrite",
|
||||
rewriteRound,
|
||||
onTraceEvent,
|
||||
onAuditSummary,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user