Files
ST-Bionic-Memory-Ecology/tests/generation-options-filter.mjs
2026-04-08 01:17:57 +08:00

84 lines
2.4 KiB
JavaScript

import assert from "node:assert/strict";
import { resolveTaskGenerationOptions } from "../runtime/generation-options.js";
import { createDefaultTaskProfiles } from "../prompting/prompt-profiles.js";
function buildSettingsWithExtractGeneration(generation) {
const taskProfiles = createDefaultTaskProfiles();
taskProfiles.extract.profiles[0].generation = {
...taskProfiles.extract.profiles[0].generation,
...generation,
};
return {
taskProfilesVersion: 1,
taskProfiles,
};
}
const openAiLikeSettings = buildSettingsWithExtractGeneration({
temperature: 0.6,
top_p: 0.95,
top_k: 30,
max_completion_tokens: 512,
stream: true,
reasoning_effort: "high",
enable_function_calling: true,
wrap_user_messages_in_quotes: true,
character_name_prefix: "Narrator",
});
const openAiLike = resolveTaskGenerationOptions(
openAiLikeSettings,
"extract",
{ max_completion_tokens: 256 },
{ mode: "dedicated-openai-compatible" },
);
assert.equal(openAiLike.capabilityMode, "openai-compatible");
assert.equal(openAiLike.filtered.temperature, 0.6);
assert.equal(openAiLike.filtered.top_p, 0.95);
assert.equal(openAiLike.filtered.max_completion_tokens, 512);
assert.equal(openAiLike.filtered.stream, true);
assert.equal(openAiLike.filtered.reasoning_effort, "high");
assert.equal(openAiLike.filtered.enable_function_calling, true);
assert.equal(openAiLike.filtered.wrap_user_messages_in_quotes, true);
assert.ok(!Object.prototype.hasOwnProperty.call(openAiLike.filtered, "top_k"));
assert.ok(
openAiLike.removed.some(
(entry) => entry.field === "top_k" && entry.reason === "capability_filtered",
),
);
const conservative = resolveTaskGenerationOptions(
openAiLikeSettings,
"extract",
{ max_completion_tokens: 256 },
{ mode: "sillytavern-current-model" },
);
assert.equal(conservative.capabilityMode, "conservative");
assert.ok(
!Object.prototype.hasOwnProperty.call(
conservative.filtered,
"reasoning_effort",
),
);
assert.ok(
conservative.removed.some(
(entry) =>
entry.field === "reasoning_effort" &&
entry.reason === "capability_filtered",
),
);
const fallbackSettings = buildSettingsWithExtractGeneration({
max_completion_tokens: "",
});
const fallback = resolveTaskGenerationOptions(
fallbackSettings,
"extract",
{ max_completion_tokens: 300 },
{ mode: "conservative" },
);
assert.equal(fallback.filtered.max_completion_tokens, 300);
console.log("generation-options-filter tests passed");