ai-chatbot/lib/ai/runtime/direct-agent-response-builders.ts

99 lines
2.5 KiB
TypeScript

import {
buildAgentToolImageMarkdown,
buildAgentToolImagesMarkdown,
buildAgentToolVideoMarkdown,
prependImageModelBadge,
} from "@/lib/ai/runtime/agent-media-markdown";
import {
getDirectAgentToolLabel,
getDirectAgentToolSuccessMessage,
type DirectAgentToolCapability,
} from "@/lib/ai/runtime/direct-agent-execution";
export function buildDirectAgentAnalysisAssistantText(params: {
summary: string;
answer?: string | null;
}) {
const answer = String(params.answer || "").trim();
return prependImageModelBadge(
[
getDirectAgentToolSuccessMessage("analyze"),
`图像观察:\n${String(params.summary || "").trim()}`,
answer ? `分析结论:\n${answer}` : "",
]
.filter(Boolean)
.join("\n\n"),
getDirectAgentToolLabel("analyze"),
);
}
export function buildDirectAgentImageGenerationAssistantText(params: {
imageMarkdown: string;
modelDisplayName?: string | null;
}) {
return prependImageModelBadge(
[
getDirectAgentToolSuccessMessage("generate_image"),
params.imageMarkdown,
]
.filter(Boolean)
.join("\n\n"),
params.modelDisplayName,
);
}
export function buildDirectAgentVideoGenerationAssistantText(params: {
videoUrl: string;
modelDisplayName?: string | null;
}) {
return prependImageModelBadge(
[
getDirectAgentToolSuccessMessage("generate_video"),
buildAgentToolVideoMarkdown(params.videoUrl),
]
.filter(Boolean)
.join("\n\n"),
params.modelDisplayName,
);
}
export function buildDirectAgentImageEditAssistantText(params: {
capability: DirectAgentToolCapability;
originalUrl: string;
thumbnailUrl?: string | null;
imageSize?: string;
}) {
return prependImageModelBadge(
[
getDirectAgentToolSuccessMessage(params.capability),
buildAgentToolImageMarkdown({
originalUrl: params.originalUrl,
thumbnailUrl: params.thumbnailUrl,
imageSize: params.imageSize,
}),
]
.filter(Boolean)
.join("\n\n"),
getDirectAgentToolLabel(params.capability),
);
}
export function buildDirectAgentBatchImageEditAssistantText(params: {
capability: DirectAgentToolCapability;
results: Array<{
originalUrl: string;
thumbnailUrl?: string | null;
imageSize?: string;
}>;
}) {
return prependImageModelBadge(
[
getDirectAgentToolSuccessMessage(params.capability),
buildAgentToolImagesMarkdown(params.results),
]
.filter(Boolean)
.join("\n\n"),
getDirectAgentToolLabel(params.capability),
);
}