@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.
Files changed (58) hide show
  1. package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
  2. package/dist/esm/prompts/sdks/toAI.js +7 -7
  3. package/dist/esm/prompts/sdks/toAI.js.map +1 -1
  4. package/dist/esm/schemas/llm/constants.d.ts +1689 -1
  5. package/dist/esm/schemas/llm/constants.d.ts.map +1 -1
  6. package/dist/esm/schemas/llm/constants.js +2 -2
  7. package/dist/esm/schemas/llm/constants.js.map +1 -1
  8. package/dist/esm/schemas/llm/converters.d.ts +12444 -5692
  9. package/dist/esm/schemas/llm/converters.d.ts.map +1 -1
  10. package/dist/esm/schemas/llm/converters.js +2 -2
  11. package/dist/esm/schemas/llm/converters.js.map +1 -1
  12. package/dist/esm/schemas/llm/openai/converters.d.ts +1692 -0
  13. package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
  14. package/dist/esm/schemas/llm/openai/converters.js +12 -0
  15. package/dist/esm/schemas/llm/openai/converters.js.map +1 -1
  16. package/dist/esm/schemas/llm/types.d.ts +2 -1
  17. package/dist/esm/schemas/llm/types.d.ts.map +1 -1
  18. package/dist/esm/schemas/llm/utils.d.ts.map +1 -1
  19. package/dist/esm/schemas/llm/utils.js +5 -0
  20. package/dist/esm/schemas/llm/utils.js.map +1 -1
  21. package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts +42 -0
  22. package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
  23. package/dist/esm/schemas/llm/vercel/toolSchemas.js +17 -0
  24. package/dist/esm/schemas/llm/vercel/toolSchemas.js.map +1 -0
  25. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  26. package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
  27. package/dist/src/prompts/sdks/toAI.js +6 -6
  28. package/dist/src/prompts/sdks/toAI.js.map +1 -1
  29. package/dist/src/schemas/llm/constants.d.ts +1689 -1
  30. package/dist/src/schemas/llm/constants.d.ts.map +1 -1
  31. package/dist/src/schemas/llm/constants.js +1 -1
  32. package/dist/src/schemas/llm/constants.js.map +1 -1
  33. package/dist/src/schemas/llm/converters.d.ts +12444 -5692
  34. package/dist/src/schemas/llm/converters.d.ts.map +1 -1
  35. package/dist/src/schemas/llm/converters.js +2 -2
  36. package/dist/src/schemas/llm/converters.js.map +1 -1
  37. package/dist/src/schemas/llm/openai/converters.d.ts +1692 -0
  38. package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
  39. package/dist/src/schemas/llm/openai/converters.js +13 -1
  40. package/dist/src/schemas/llm/openai/converters.js.map +1 -1
  41. package/dist/src/schemas/llm/types.d.ts +2 -1
  42. package/dist/src/schemas/llm/types.d.ts.map +1 -1
  43. package/dist/src/schemas/llm/utils.d.ts.map +1 -1
  44. package/dist/src/schemas/llm/utils.js +5 -0
  45. package/dist/src/schemas/llm/utils.js.map +1 -1
  46. package/dist/src/schemas/llm/vercel/toolSchemas.d.ts +42 -0
  47. package/dist/src/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
  48. package/dist/src/schemas/llm/vercel/toolSchemas.js +20 -0
  49. package/dist/src/schemas/llm/vercel/toolSchemas.js.map +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +1 -1
  52. package/src/prompts/sdks/toAI.ts +7 -6
  53. package/src/schemas/llm/constants.ts +2 -1
  54. package/src/schemas/llm/converters.ts +6 -2
  55. package/src/schemas/llm/openai/converters.ts +17 -0
  56. package/src/schemas/llm/types.ts +2 -1
  57. package/src/schemas/llm/utils.ts +6 -0
  58. package/src/schemas/llm/vercel/toolSchemas.ts +21 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-client",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A client for the Phoenix API",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -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
- acc[tool.function.name] = {
73
- type: "function",
74
- parameters: jsonSchema(tool.function.parameters),
75
- description: tool.function.description,
76
- } satisfies Tool;
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: z.unknown(),
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 null;
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 null;
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
+ );
@@ -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: null;
122
+ validatedToolDefinition: VercelAIToolDefinition;
122
123
  }
123
124
  | { provider: null; validatedToolDefinition: null };
124
125
 
@@ -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
+ >;