

























@@ -3,11 +3,10 @@ import { beforeEach, describe, expect, it } from "vitest";
33import { projectOpenAITools } from "./openai-tool-projection.js";
44import {
55clearOpenAIToolSchemaCacheForTest,
6-findOpenAIStrictToolSchemaDiagnostics,
6+findOpenAIStrictToolProjectionDiagnostics,
77isStrictOpenAIJsonSchemaCompatible,
88normalizeOpenAIStrictToolParameters,
99normalizeStrictOpenAIJsonSchema,
10-resolveOpenAIStrictToolFlagForInventory,
1110resolveOpenAIStrictToolFlagForProjection,
1211} from "./openai-tool-schema.js";
1312@@ -34,7 +33,10 @@ describe("OpenAI strict tool schema normalization", () => {
3433});
3534expect(isStrictOpenAIJsonSchemaCompatible(schema)).toBe(true);
3635expect(
37-resolveOpenAIStrictToolFlagForInventory([{ name: "empty", parameters: schema }], true),
36+resolveOpenAIStrictToolFlagForProjection(
37+projectOpenAITools([{ name: "empty", parameters: schema }]),
38+true,
39+),
3840).toBe(true);
3941}
4042});
@@ -60,7 +62,10 @@ describe("OpenAI strict tool schema normalization", () => {
6062expect(normalized.properties?.metadata).not.toHaveProperty("additionalProperties");
6163expect(isStrictOpenAIJsonSchemaCompatible(schema)).toBe(false);
6264expect(
63-resolveOpenAIStrictToolFlagForInventory([{ name: "write", parameters: schema }], true),
65+resolveOpenAIStrictToolFlagForProjection(
66+projectOpenAITools([{ name: "write", parameters: schema }]),
67+true,
68+),
6469).toBe(false);
6570});
6671@@ -110,14 +115,16 @@ describe("OpenAI strict tool schema normalization", () => {
110115},
111116};
112117113-expect(findOpenAIStrictToolSchemaDiagnostics([unreadable])).toEqual([
118+const projection = projectOpenAITools([unreadable]);
119+120+expect(findOpenAIStrictToolProjectionDiagnostics(projection)).toEqual([
114121{
115122toolIndex: 0,
116123toolName: "broken",
117124violations: ["broken.parameters is not JSON-serializable"],
118125},
119126]);
120-expect(resolveOpenAIStrictToolFlagForInventory([unreadable], true)).toBe(false);
127+expect(resolveOpenAIStrictToolFlagForProjection(projection, true)).toBe(false);
121128});
122129123130it("reuses projected schemas for strict checks and normalization", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。