@arizeai/phoenix-client 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAI.js +7 -7
- package/dist/esm/prompts/sdks/toAI.js.map +1 -1
- package/dist/esm/schemas/llm/constants.d.ts +1689 -1
- package/dist/esm/schemas/llm/constants.d.ts.map +1 -1
- package/dist/esm/schemas/llm/constants.js +2 -2
- package/dist/esm/schemas/llm/constants.js.map +1 -1
- package/dist/esm/schemas/llm/converters.d.ts +12444 -5692
- package/dist/esm/schemas/llm/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/converters.js +2 -2
- package/dist/esm/schemas/llm/converters.js.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.d.ts +1692 -0
- package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.js +12 -0
- package/dist/esm/schemas/llm/openai/converters.js.map +1 -1
- package/dist/esm/schemas/llm/types.d.ts +2 -1
- package/dist/esm/schemas/llm/types.d.ts.map +1 -1
- package/dist/esm/schemas/llm/utils.d.ts.map +1 -1
- package/dist/esm/schemas/llm/utils.js +5 -0
- package/dist/esm/schemas/llm/utils.js.map +1 -1
- package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts +42 -0
- package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
- package/dist/esm/schemas/llm/vercel/toolSchemas.js +17 -0
- package/dist/esm/schemas/llm/vercel/toolSchemas.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAI.js +6 -6
- package/dist/src/prompts/sdks/toAI.js.map +1 -1
- package/dist/src/schemas/llm/constants.d.ts +1689 -1
- package/dist/src/schemas/llm/constants.d.ts.map +1 -1
- package/dist/src/schemas/llm/constants.js +1 -1
- package/dist/src/schemas/llm/constants.js.map +1 -1
- package/dist/src/schemas/llm/converters.d.ts +12444 -5692
- package/dist/src/schemas/llm/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/converters.js +2 -2
- package/dist/src/schemas/llm/converters.js.map +1 -1
- package/dist/src/schemas/llm/openai/converters.d.ts +1692 -0
- package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/converters.js +13 -1
- package/dist/src/schemas/llm/openai/converters.js.map +1 -1
- package/dist/src/schemas/llm/types.d.ts +2 -1
- package/dist/src/schemas/llm/types.d.ts.map +1 -1
- package/dist/src/schemas/llm/utils.d.ts.map +1 -1
- package/dist/src/schemas/llm/utils.js +5 -0
- package/dist/src/schemas/llm/utils.js.map +1 -1
- package/dist/src/schemas/llm/vercel/toolSchemas.d.ts +42 -0
- package/dist/src/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
- package/dist/src/schemas/llm/vercel/toolSchemas.js +20 -0
- package/dist/src/schemas/llm/vercel/toolSchemas.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/prompts/sdks/toAI.ts +7 -6
- package/src/schemas/llm/constants.ts +2 -1
- package/src/schemas/llm/converters.ts +6 -2
- package/src/schemas/llm/openai/converters.ts +17 -0
- package/src/schemas/llm/types.ts +2 -1
- package/src/schemas/llm/utils.ts +6 -0
- package/src/schemas/llm/vercel/toolSchemas.ts +21 -0
package/package.json
CHANGED
package/src/prompts/sdks/toAI.ts
CHANGED
|
@@ -2,6 +2,7 @@ import invariant from "tiny-invariant";
|
|
|
2
2
|
import {
|
|
3
3
|
safelyConvertMessageToProvider,
|
|
4
4
|
safelyConvertToolChoiceToProvider,
|
|
5
|
+
safelyConvertToolDefinitionToProvider,
|
|
5
6
|
} from "../../schemas/llm/converters";
|
|
6
7
|
import { formatPromptMessages } from "../../utils/formatPromptMessages";
|
|
7
8
|
import { Variables, toSDKParamsBase } from "./types";
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
type generateText,
|
|
11
12
|
type ToolSet,
|
|
12
13
|
type Tool,
|
|
13
|
-
jsonSchema,
|
|
14
14
|
} from "ai";
|
|
15
15
|
import { VercelAIToolChoice } from "../../schemas/llm/vercel/toolChoiceSchemas";
|
|
16
16
|
|
|
@@ -69,11 +69,12 @@ export const toAI = <V extends Variables>({
|
|
|
69
69
|
if (!tool.function.parameters) {
|
|
70
70
|
return acc;
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
const vercelAIToolDefinition = safelyConvertToolDefinitionToProvider({
|
|
73
|
+
toolDefinition: tool,
|
|
74
|
+
targetProvider: "VERCEL_AI",
|
|
75
|
+
});
|
|
76
|
+
invariant(vercelAIToolDefinition, "Tool definition is not valid");
|
|
77
|
+
acc[tool.function.name] = vercelAIToolDefinition satisfies Tool;
|
|
77
78
|
return acc;
|
|
78
79
|
}, {} as ToolSet);
|
|
79
80
|
const hasTools = Object.keys(tools ?? {}).length > 0;
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
openAIToolChoiceToAnthropic,
|
|
17
17
|
openAIToolChoiceToVercelAI,
|
|
18
18
|
openAIToolDefinitionToAnthropic,
|
|
19
|
+
openAIToolDefinitionToVercelAI,
|
|
19
20
|
} from "./openai/converters";
|
|
20
21
|
import {
|
|
21
22
|
phoenixResponseFormatToOpenAI,
|
|
@@ -150,7 +151,7 @@ export const SDKProviderConverterMap = {
|
|
|
150
151
|
},
|
|
151
152
|
toolDefinitions: {
|
|
152
153
|
toOpenAI: openAIToolDefinitionSchema,
|
|
153
|
-
fromOpenAI:
|
|
154
|
+
fromOpenAI: openAIToolDefinitionToVercelAI,
|
|
154
155
|
},
|
|
155
156
|
}),
|
|
156
157
|
} satisfies Record<PromptProviderSDKs, unknown>;
|
|
@@ -378,7 +378,9 @@ export const toOpenAIToolDefinition = (
|
|
|
378
378
|
validatedToolDefinition
|
|
379
379
|
);
|
|
380
380
|
case "VERCEL_AI":
|
|
381
|
-
return
|
|
381
|
+
return SDKProviderConverterMap.VERCEL_AI.toolDefinitions.toOpenAI.parse(
|
|
382
|
+
validatedToolDefinition
|
|
383
|
+
);
|
|
382
384
|
case null:
|
|
383
385
|
return null;
|
|
384
386
|
default:
|
|
@@ -415,7 +417,9 @@ export const fromOpenAIToolDefinition = <
|
|
|
415
417
|
toolDefinition
|
|
416
418
|
);
|
|
417
419
|
case "VERCEL_AI":
|
|
418
|
-
return
|
|
420
|
+
return SDKProviderConverterMap.VERCEL_AI.toolDefinitions.fromOpenAI.parse(
|
|
421
|
+
toolDefinition
|
|
422
|
+
);
|
|
419
423
|
default:
|
|
420
424
|
assertUnreachable(targetProvider);
|
|
421
425
|
}
|
|
@@ -28,6 +28,7 @@ import { isObject } from "../../../utils/isObject";
|
|
|
28
28
|
import { VercelAIToolChoice } from "../vercel/toolChoiceSchemas";
|
|
29
29
|
import { openAIToolDefinitionSchema } from "./toolSchemas";
|
|
30
30
|
import { AnthropicToolDefinition } from "../anthropic/toolSchemas";
|
|
31
|
+
import { VercelAIToolDefinition } from "../vercel/toolSchemas";
|
|
31
32
|
|
|
32
33
|
export const openAIChatPartToAnthropic = openaiChatPartSchema.transform(
|
|
33
34
|
(openai) => {
|
|
@@ -381,3 +382,19 @@ export const openAIToolDefinitionToAnthropic =
|
|
|
381
382
|
input_schema: openai.function.parameters,
|
|
382
383
|
})
|
|
383
384
|
);
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Parse incoming object as an OpenAI tool definition and immediately convert to Vercel AI format
|
|
388
|
+
*/
|
|
389
|
+
export const openAIToolDefinitionToVercelAI =
|
|
390
|
+
openAIToolDefinitionSchema.transform(
|
|
391
|
+
(openai): VercelAIToolDefinition => ({
|
|
392
|
+
type: "function",
|
|
393
|
+
description: openai.function.description,
|
|
394
|
+
parameters: {
|
|
395
|
+
_type: undefined,
|
|
396
|
+
jsonSchema: openai.function.parameters,
|
|
397
|
+
validate: undefined,
|
|
398
|
+
},
|
|
399
|
+
})
|
|
400
|
+
);
|
package/src/schemas/llm/types.ts
CHANGED
|
@@ -22,6 +22,7 @@ import { OpenAIResponseFormat } from "./openai/responseFormatSchema";
|
|
|
22
22
|
import { AnthropicToolDefinition } from "./anthropic/toolSchemas";
|
|
23
23
|
import { PhoenixToolDefinition } from "./phoenixPrompt/toolSchemas";
|
|
24
24
|
import { PhoenixContentPart } from "./phoenixPrompt/messagePartSchemas";
|
|
25
|
+
import { VercelAIToolDefinition } from "./vercel/toolSchemas";
|
|
25
26
|
|
|
26
27
|
export type PromptSDKFormat = PromptProviderSDKs | null;
|
|
27
28
|
|
|
@@ -118,7 +119,7 @@ export type ToolDefinitionWithProvider =
|
|
|
118
119
|
}
|
|
119
120
|
| {
|
|
120
121
|
provider: Extract<PromptSDKFormat, "VERCEL_AI">;
|
|
121
|
-
validatedToolDefinition:
|
|
122
|
+
validatedToolDefinition: VercelAIToolDefinition;
|
|
122
123
|
}
|
|
123
124
|
| { provider: null; validatedToolDefinition: null };
|
|
124
125
|
|
package/src/schemas/llm/utils.ts
CHANGED
|
@@ -26,6 +26,7 @@ import { phoenixToolCallSchema } from "./phoenixPrompt/toolCallSchemas";
|
|
|
26
26
|
import { phoenixToolChoiceSchema } from "./phoenixPrompt/toolChoiceSchemas";
|
|
27
27
|
import { phoenixToolDefinitionSchema } from "./phoenixPrompt/toolSchemas";
|
|
28
28
|
import { phoenixContentPartSchema } from "./phoenixPrompt/messagePartSchemas";
|
|
29
|
+
import { vercelAIToolDefinitionSchema } from "./vercel/toolSchemas";
|
|
29
30
|
|
|
30
31
|
export const makeSDKConverters = <
|
|
31
32
|
MessageSchema extends ZodTypeAny,
|
|
@@ -208,6 +209,11 @@ export const detectToolDefinitionProvider = (
|
|
|
208
209
|
if (phoenixSuccess) {
|
|
209
210
|
return { provider: "PHOENIX", validatedToolDefinition: phoenixData };
|
|
210
211
|
}
|
|
212
|
+
const { success: vercelSuccess, data: vercelData } =
|
|
213
|
+
vercelAIToolDefinitionSchema.safeParse(toolDefinition);
|
|
214
|
+
if (vercelSuccess) {
|
|
215
|
+
return { provider: "VERCEL_AI", validatedToolDefinition: vercelData };
|
|
216
|
+
}
|
|
211
217
|
return { provider: null, validatedToolDefinition: null };
|
|
212
218
|
};
|
|
213
219
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Vercel AI Tool Definition Schema
|
|
5
|
+
*
|
|
6
|
+
* Produces the same result as if you called `import { jsonSchema } from "ai"`
|
|
7
|
+
* https://github.com/vercel/ai/blob/83976abfa99bf26f8227cf493386b8a6f0e71fdd/packages/ui-utils/src/schema.ts#L34
|
|
8
|
+
*/
|
|
9
|
+
export const vercelAIToolDefinitionSchema = z.object({
|
|
10
|
+
type: z.literal("function"),
|
|
11
|
+
description: z.string().optional(),
|
|
12
|
+
parameters: z.object({
|
|
13
|
+
_type: z.unknown().optional().default(undefined),
|
|
14
|
+
validate: z.unknown().optional().default(undefined),
|
|
15
|
+
jsonSchema: z.record(z.string(), z.unknown()).optional(),
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type VercelAIToolDefinition = z.infer<
|
|
20
|
+
typeof vercelAIToolDefinitionSchema
|
|
21
|
+
>;
|