



























@@ -1,13 +1,39 @@
1+import type { ModelCompatConfig } from "../config/types.models.js";
12import { normalizeToolParameterSchema } from "./pi-tools-parameter-schema.js";
23export { resolveOpenAIStrictToolSetting } from "./openai-strict-tool-setting.js";
345+type ToolSchemaCompatInput = {
6+unsupportedToolSchemaKeywords?: unknown;
7+};
8+49type ToolWithParameters = {
510name?: unknown;
611parameters: unknown;
712};
8139-export function normalizeStrictOpenAIJsonSchema(schema: unknown): unknown {
10-return normalizeStrictOpenAIJsonSchemaRecursive(normalizeToolParameterSchema(schema ?? {}), 0);
14+function resolveToolSchemaModelCompat(
15+compat: ToolSchemaCompatInput | null | undefined,
16+): ModelCompatConfig | undefined {
17+if (!compat || !Array.isArray(compat.unsupportedToolSchemaKeywords)) {
18+return undefined;
19+}
20+return {
21+unsupportedToolSchemaKeywords: compat.unsupportedToolSchemaKeywords.filter(
22+(keyword): keyword is string => typeof keyword === "string",
23+),
24+};
25+}
26+27+export function normalizeStrictOpenAIJsonSchema(
28+schema: unknown,
29+modelCompat?: ToolSchemaCompatInput | null,
30+): unknown {
31+return normalizeStrictOpenAIJsonSchemaRecursive(
32+normalizeToolParameterSchema(schema ?? {}, {
33+modelCompat: resolveToolSchemaModelCompat(modelCompat),
34+}),
35+0,
36+);
1137}
12381339function normalizeStrictOpenAIJsonSchemaRecursive(schema: unknown, depth: number): unknown {
@@ -56,11 +82,16 @@ function normalizeStrictOpenAIJsonSchemaRecursive(schema: unknown, depth: number
5682return changed ? normalized : schema;
5783}
588459-export function normalizeOpenAIStrictToolParameters<T>(schema: T, strict: boolean): T {
85+export function normalizeOpenAIStrictToolParameters<T>(
86+schema: T,
87+strict: boolean,
88+modelCompat?: ToolSchemaCompatInput | null,
89+): T {
90+const toolSchemaCompat = resolveToolSchemaModelCompat(modelCompat);
6091if (!strict) {
61-return normalizeToolParameterSchema(schema ?? {}) as T;
92+return normalizeToolParameterSchema(schema ?? {}, { modelCompat: toolSchemaCompat }) as T;
6293}
63-return normalizeStrictOpenAIJsonSchema(schema) as T;
94+return normalizeStrictOpenAIJsonSchema(schema, toolSchemaCompat) as T;
6495}
65966697export function isStrictOpenAIJsonSchemaCompatible(schema: unknown): boolean {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。