冻结消息上下文后并行重放多个配置,并顺带挂上定价接口路由。 Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { reconstructLlmMessages } from "../src/server/model-compare.js";
|
|
import { buildContextTrace } from "../src/types/context-trace.js";
|
|
|
|
describe("model-compare reconstructLlmMessages", () => {
|
|
it("restores plain roles", () => {
|
|
const trace = buildContextTrace({
|
|
caller: "test",
|
|
messages: [
|
|
{ role: "system", content: "sys" },
|
|
{ role: "user", content: "hi" },
|
|
],
|
|
model: "m1",
|
|
});
|
|
expect(reconstructLlmMessages(trace)).toEqual([
|
|
{ role: "system", content: "sys" },
|
|
{ role: "user", content: "hi" },
|
|
]);
|
|
});
|
|
|
|
it("restores tool_calls extras frozen as JSON content", () => {
|
|
const trace = buildContextTrace({
|
|
caller: "test",
|
|
messages: [
|
|
{
|
|
role: "assistant",
|
|
content: null,
|
|
tool_calls: [
|
|
{
|
|
id: "c1",
|
|
type: "function",
|
|
function: { name: "foo", arguments: "{}" },
|
|
},
|
|
],
|
|
},
|
|
{ role: "tool", content: "ok", tool_call_id: "c1" },
|
|
],
|
|
});
|
|
const msgs = reconstructLlmMessages(trace);
|
|
expect(msgs[0]).toMatchObject({
|
|
role: "assistant",
|
|
tool_calls: [
|
|
{
|
|
id: "c1",
|
|
type: "function",
|
|
function: { name: "foo", arguments: "{}" },
|
|
},
|
|
],
|
|
});
|
|
expect(msgs[1]).toEqual({
|
|
role: "tool",
|
|
content: "ok",
|
|
tool_call_id: "c1",
|
|
});
|
|
});
|
|
});
|