53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
(() => {
|
|
function getResult(responses, providerId) {
|
|
return typeof responses?.get === "function" ? responses.get(providerId) : responses?.[providerId];
|
|
}
|
|
|
|
function buildComparisonMarkdown(question, providers, responses) {
|
|
const sections = ["# AI Parallel Context", "", "## Question", "", question || "(未提供)"];
|
|
for (const provider of providers) {
|
|
const result = getResult(responses, provider.id);
|
|
sections.push(
|
|
"",
|
|
`## ${provider.name}`,
|
|
"",
|
|
result?.response?.markdown || result?.response?.content || "(未收集到回答)"
|
|
);
|
|
}
|
|
return `${sections.join("\n")}\n`;
|
|
}
|
|
|
|
function buildComparisonJson(question, providers, responses) {
|
|
return JSON.stringify({
|
|
question: question || "",
|
|
responses: providers.map((provider) => {
|
|
const result = getResult(responses, provider.id);
|
|
return result?.response
|
|
? result.response
|
|
: {
|
|
provider: provider.id,
|
|
content: "",
|
|
markdown: "",
|
|
timestamp: null,
|
|
error: result?.error || "未收集到回答"
|
|
};
|
|
})
|
|
}, null, 2);
|
|
}
|
|
|
|
function buildHandoffPrompt(question, providers, responses) {
|
|
return [
|
|
"You are the target agent in an AI Parallel workflow.",
|
|
"Review the question and the collected model responses below. Synthesize a reliable answer, call out disagreements, and improve the result instead of blindly concatenating responses.",
|
|
"",
|
|
buildComparisonMarkdown(question, providers, responses)
|
|
].join("\n");
|
|
}
|
|
|
|
globalThis.AIParallelWorkspaceUtils = Object.freeze({
|
|
buildComparisonMarkdown,
|
|
buildComparisonJson,
|
|
buildHandoffPrompt
|
|
});
|
|
})();
|