UNPKG

@arizeai/phoenix-client

Version:

A client for the Phoenix API

60 lines 1.95 kB
import { schemaMatches } from "../../../utils/schemaMatches.js"; import z from "zod"; export const textPartSchema = schemaMatches()(z.object({ type: z.literal("text"), text: z.string(), })); export const toolCallPartSchema = schemaMatches()(z.object({ type: z.literal("tool_call"), tool_call_id: z.string(), tool_call: z.object({ type: z.literal("function"), name: z.string(), arguments: z.string(), }), })); export const toolResultPartSchema = schemaMatches()(z.object({ type: z.literal("tool_result"), tool_call_id: z.string(), tool_result: z.union([ z.string(), z.number(), z.boolean(), z.null(), z.record(z.unknown()), z.array(z.unknown()), ]), })); export const phoenixContentPartSchema = schemaMatches()(z.discriminatedUnion("type", [ textPartSchema, toolCallPartSchema, toolResultPartSchema, ])); /* * * Creation helpers * */ export const asTextPart = (maybePart) => { const parsed = textPartSchema.safeParse(maybePart); return parsed.success ? parsed.data : null; }; export const makeTextPart = (text) => { const optimisticTextPart = { text: { text } }; const parsed = textPartSchema.safeParse(optimisticTextPart); return parsed.success ? parsed.data : null; }; export const asToolCallPart = (maybePart) => { const parsed = toolCallPartSchema.safeParse(maybePart); return parsed.success ? parsed.data : null; }; export const asToolResultPart = (maybePart) => { const parsed = toolResultPartSchema.safeParse(maybePart); return parsed.success ? parsed.data : null; }; export const makeToolResultPart = (toolCallId, result) => { const optimisticToolResultPart = { toolResult: { toolCallId, result } }; const parsed = toolResultPartSchema.safeParse(optimisticToolResultPart); return parsed.success ? parsed.data : null; }; //# sourceMappingURL=messagePartSchemas.js.map