@arizeai/phoenix-client 5.8.2 → 5.9.0
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/README.md +1 -1
- package/dist/esm/__generated__/api/v1.d.ts +4 -1
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/client.d.ts +1 -1
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +1 -1
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/datasets/appendDatasetExamples.d.ts +2 -2
- package/dist/esm/datasets/appendDatasetExamples.d.ts.map +1 -1
- package/dist/esm/datasets/appendDatasetExamples.js +1 -1
- package/dist/esm/datasets/appendDatasetExamples.js.map +1 -1
- package/dist/esm/datasets/createDataset.d.ts +2 -2
- package/dist/esm/datasets/createDataset.d.ts.map +1 -1
- package/dist/esm/datasets/createDataset.js +1 -1
- package/dist/esm/datasets/createDataset.js.map +1 -1
- package/dist/esm/datasets/createOrGetDataset.d.ts +1 -1
- package/dist/esm/datasets/createOrGetDataset.d.ts.map +1 -1
- package/dist/esm/datasets/createOrGetDataset.js.map +1 -1
- package/dist/esm/datasets/getDataset.d.ts +2 -2
- package/dist/esm/datasets/getDataset.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.js.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.d.ts +2 -2
- package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.js +1 -1
- package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
- package/dist/esm/datasets/getDatasetInfo.d.ts +2 -2
- package/dist/esm/datasets/getDatasetInfo.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetInfo.js +1 -1
- package/dist/esm/datasets/getDatasetInfo.js.map +1 -1
- package/dist/esm/datasets/getDatasetInfoByName.d.ts +2 -2
- package/dist/esm/datasets/getDatasetInfoByName.d.ts.map +1 -1
- package/dist/esm/datasets/listDatasets.d.ts +2 -2
- package/dist/esm/datasets/listDatasets.d.ts.map +1 -1
- package/dist/esm/datasets/listDatasets.js +1 -1
- package/dist/esm/datasets/listDatasets.js.map +1 -1
- package/dist/esm/experiments/createExperiment.d.ts +2 -2
- package/dist/esm/experiments/createExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/createExperiment.js +1 -1
- package/dist/esm/experiments/createExperiment.js.map +1 -1
- package/dist/esm/experiments/deleteExperiment.d.ts +8 -2
- package/dist/esm/experiments/deleteExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/deleteExperiment.js +5 -1
- package/dist/esm/experiments/deleteExperiment.js.map +1 -1
- package/dist/esm/experiments/getExperiment.d.ts +2 -2
- package/dist/esm/experiments/getExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/getExperiment.js.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.d.ts +2 -2
- package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.js +1 -1
- package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
- package/dist/esm/experiments/getExperimentRuns.d.ts +2 -2
- package/dist/esm/experiments/getExperimentRuns.d.ts.map +1 -1
- package/dist/esm/experiments/getExperimentRuns.js +1 -1
- package/dist/esm/experiments/getExperimentRuns.js.map +1 -1
- package/dist/esm/experiments/helpers/asExperimentEvaluator.d.ts +2 -2
- package/dist/esm/experiments/helpers/asExperimentEvaluator.d.ts.map +1 -1
- package/dist/esm/experiments/helpers/fromPhoenixLLMEvaluator.d.ts +1 -1
- package/dist/esm/experiments/helpers/fromPhoenixLLMEvaluator.d.ts.map +1 -1
- package/dist/esm/experiments/helpers/fromPhoenixLLMEvaluator.js.map +1 -1
- package/dist/esm/experiments/helpers/getExperimentEvaluators.d.ts +1 -1
- package/dist/esm/experiments/helpers/getExperimentEvaluators.d.ts.map +1 -1
- package/dist/esm/experiments/helpers/getExperimentEvaluators.js.map +1 -1
- package/dist/esm/experiments/listExperiments.d.ts +2 -2
- package/dist/esm/experiments/listExperiments.d.ts.map +1 -1
- package/dist/esm/experiments/listExperiments.js +1 -1
- package/dist/esm/experiments/listExperiments.js.map +1 -1
- package/dist/esm/experiments/logging.d.ts +55 -0
- package/dist/esm/experiments/logging.d.ts.map +1 -0
- package/dist/esm/experiments/logging.js +112 -0
- package/dist/esm/experiments/logging.js.map +1 -0
- package/dist/esm/experiments/resumeEvaluation.d.ts +3 -3
- package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/esm/experiments/resumeEvaluation.js +18 -29
- package/dist/esm/experiments/resumeEvaluation.js.map +1 -1
- package/dist/esm/experiments/resumeExperiment.d.ts +3 -3
- package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/resumeExperiment.js +23 -32
- package/dist/esm/experiments/resumeExperiment.js.map +1 -1
- package/dist/esm/experiments/runExperiment.d.ts +6 -5
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +64 -45
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/logger.d.ts +40 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +59 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/prompts/createPrompt.d.ts +2 -2
- package/dist/esm/prompts/createPrompt.d.ts.map +1 -1
- package/dist/esm/prompts/getPrompt.d.ts +2 -2
- package/dist/esm/prompts/getPrompt.d.ts.map +1 -1
- package/dist/esm/prompts/listPrompts.d.ts +2 -2
- package/dist/esm/prompts/listPrompts.d.ts.map +1 -1
- package/dist/esm/prompts/listPrompts.js +1 -1
- package/dist/esm/prompts/listPrompts.js.map +1 -1
- package/dist/esm/prompts/sdks/toAI.d.ts +4 -4
- package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAI.js +5 -29
- package/dist/esm/prompts/sdks/toAI.js.map +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.d.ts +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.js +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.js.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.d.ts +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.js +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/esm/prompts/sdks/toSDK.d.ts +1 -1
- package/dist/esm/prompts/sdks/toSDK.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toSDK.js +1 -1
- package/dist/esm/prompts/sdks/toSDK.js.map +1 -1
- package/dist/esm/prompts/sdks/types.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/converters.js +3 -3
- package/dist/esm/schemas/llm/anthropic/converters.js.map +1 -1
- package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js +1 -1
- package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/messageSchemas.js +7 -2
- package/dist/esm/schemas/llm/anthropic/messageSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js +1 -1
- package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/toolSchemas.js +1 -1
- package/dist/esm/schemas/llm/anthropic/toolSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/constants.d.ts +1 -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 +8 -8
- package/dist/esm/schemas/llm/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/converters.js +1 -1
- package/dist/esm/schemas/llm/converters.js.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.js +1 -1
- package/dist/esm/schemas/llm/openai/converters.js.map +1 -1
- package/dist/esm/schemas/llm/openai/messageSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/messageSchemas.js +1 -1
- package/dist/esm/schemas/llm/openai/messageSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/responseFormatSchema.js +1 -1
- package/dist/esm/schemas/llm/openai/responseFormatSchema.js.map +1 -1
- package/dist/esm/schemas/llm/openai/toolSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/toolSchemas.js +1 -1
- package/dist/esm/schemas/llm/openai/toolSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/converters.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js +1 -1
- package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/schemas.js +1 -1
- package/dist/esm/schemas/llm/schemas.js.map +1 -1
- package/dist/esm/schemas/llm/types.d.ts +18 -18
- package/dist/esm/schemas/llm/types.d.ts.map +1 -1
- package/dist/esm/schemas/llm/utils.d.ts +1 -1
- package/dist/esm/schemas/llm/utils.d.ts.map +1 -1
- package/dist/esm/schemas/llm/utils.js +1 -1
- package/dist/esm/schemas/llm/utils.js.map +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.js +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/vercel/messageSchemas.js +1 -1
- package/dist/esm/schemas/llm/vercel/messageSchemas.js.map +1 -1
- package/dist/esm/sessions/addSessionAnnotation.d.ts +2 -2
- package/dist/esm/sessions/addSessionAnnotation.d.ts.map +1 -1
- package/dist/esm/sessions/addSessionAnnotation.js.map +1 -1
- package/dist/esm/sessions/logSessionAnnotations.d.ts +2 -2
- package/dist/esm/sessions/logSessionAnnotations.d.ts.map +1 -1
- package/dist/esm/sessions/logSessionAnnotations.js.map +1 -1
- package/dist/esm/sessions/types.d.ts +2 -2
- package/dist/esm/sessions/types.d.ts.map +1 -1
- package/dist/esm/spans/addDocumentAnnotation.d.ts +2 -2
- package/dist/esm/spans/addDocumentAnnotation.d.ts.map +1 -1
- package/dist/esm/spans/addDocumentAnnotation.js.map +1 -1
- package/dist/esm/spans/addSpanAnnotation.d.ts +2 -2
- package/dist/esm/spans/addSpanAnnotation.d.ts.map +1 -1
- package/dist/esm/spans/addSpanAnnotation.js.map +1 -1
- package/dist/esm/spans/addSpanNote.d.ts +1 -1
- package/dist/esm/spans/addSpanNote.d.ts.map +1 -1
- package/dist/esm/spans/deleteSpan.d.ts +1 -1
- package/dist/esm/spans/deleteSpan.d.ts.map +1 -1
- package/dist/esm/spans/getSpanAnnotations.d.ts +3 -3
- package/dist/esm/spans/getSpanAnnotations.d.ts.map +1 -1
- package/dist/esm/spans/getSpans.d.ts +3 -3
- package/dist/esm/spans/getSpans.d.ts.map +1 -1
- package/dist/esm/spans/logDocumentAnnotations.d.ts +2 -2
- package/dist/esm/spans/logDocumentAnnotations.d.ts.map +1 -1
- package/dist/esm/spans/logDocumentAnnotations.js.map +1 -1
- package/dist/esm/spans/logSpanAnnotations.d.ts +2 -2
- package/dist/esm/spans/logSpanAnnotations.d.ts.map +1 -1
- package/dist/esm/spans/logSpanAnnotations.js.map +1 -1
- package/dist/esm/spans/types.d.ts +2 -2
- package/dist/esm/spans/types.d.ts.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/annotations.d.ts +1 -1
- package/dist/esm/types/annotations.d.ts.map +1 -1
- package/dist/esm/types/core.d.ts +1 -1
- package/dist/esm/types/core.d.ts.map +1 -1
- package/dist/esm/types/datasets.d.ts +1 -1
- package/dist/esm/types/datasets.d.ts.map +1 -1
- package/dist/esm/types/experiments.d.ts +3 -3
- package/dist/esm/types/experiments.d.ts.map +1 -1
- package/dist/esm/types/prompts.d.ts +1 -1
- package/dist/esm/types/prompts.d.ts.map +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts +2 -2
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/formatPromptMessages.js +1 -1
- package/dist/esm/utils/formatPromptMessages.js.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts +2 -2
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.js +1 -1
- package/dist/esm/utils/getPromptBySelector.js.map +1 -1
- package/dist/esm/utils/noopLogger.d.ts +1 -8
- package/dist/esm/utils/noopLogger.d.ts.map +1 -1
- package/dist/esm/utils/noopLogger.js +1 -8
- package/dist/esm/utils/noopLogger.js.map +1 -1
- package/dist/esm/utils/schemaMatches.d.ts +1 -1
- package/dist/esm/utils/schemaMatches.d.ts.map +1 -1
- package/dist/esm/utils/toObjectHeaders.d.ts +1 -1
- package/dist/esm/utils/toObjectHeaders.d.ts.map +1 -1
- package/dist/src/__generated__/api/v1.d.ts +4 -1
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/client.d.ts +1 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +1 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/datasets/appendDatasetExamples.d.ts +2 -2
- package/dist/src/datasets/appendDatasetExamples.d.ts.map +1 -1
- package/dist/src/datasets/appendDatasetExamples.js +1 -1
- package/dist/src/datasets/appendDatasetExamples.js.map +1 -1
- package/dist/src/datasets/createDataset.d.ts +2 -2
- package/dist/src/datasets/createDataset.d.ts.map +1 -1
- package/dist/src/datasets/createDataset.js +1 -1
- package/dist/src/datasets/createDataset.js.map +1 -1
- package/dist/src/datasets/createOrGetDataset.d.ts +1 -1
- package/dist/src/datasets/createOrGetDataset.d.ts.map +1 -1
- package/dist/src/datasets/createOrGetDataset.js.map +1 -1
- package/dist/src/datasets/getDataset.d.ts +2 -2
- package/dist/src/datasets/getDataset.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.js.map +1 -1
- package/dist/src/datasets/getDatasetExamples.d.ts +2 -2
- package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetExamples.js +1 -1
- package/dist/src/datasets/getDatasetExamples.js.map +1 -1
- package/dist/src/datasets/getDatasetInfo.d.ts +2 -2
- package/dist/src/datasets/getDatasetInfo.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetInfo.js +1 -1
- package/dist/src/datasets/getDatasetInfo.js.map +1 -1
- package/dist/src/datasets/getDatasetInfoByName.d.ts +2 -2
- package/dist/src/datasets/getDatasetInfoByName.d.ts.map +1 -1
- package/dist/src/datasets/listDatasets.d.ts +2 -2
- package/dist/src/datasets/listDatasets.d.ts.map +1 -1
- package/dist/src/datasets/listDatasets.js +1 -1
- package/dist/src/datasets/listDatasets.js.map +1 -1
- package/dist/src/experiments/createExperiment.d.ts +2 -2
- package/dist/src/experiments/createExperiment.d.ts.map +1 -1
- package/dist/src/experiments/createExperiment.js +1 -1
- package/dist/src/experiments/createExperiment.js.map +1 -1
- package/dist/src/experiments/deleteExperiment.d.ts +8 -2
- package/dist/src/experiments/deleteExperiment.d.ts.map +1 -1
- package/dist/src/experiments/deleteExperiment.js +6 -5
- package/dist/src/experiments/deleteExperiment.js.map +1 -1
- package/dist/src/experiments/getExperiment.d.ts +2 -2
- package/dist/src/experiments/getExperiment.d.ts.map +1 -1
- package/dist/src/experiments/getExperiment.js.map +1 -1
- package/dist/src/experiments/getExperimentInfo.d.ts +2 -2
- package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/src/experiments/getExperimentInfo.js +1 -1
- package/dist/src/experiments/getExperimentInfo.js.map +1 -1
- package/dist/src/experiments/getExperimentRuns.d.ts +2 -2
- package/dist/src/experiments/getExperimentRuns.d.ts.map +1 -1
- package/dist/src/experiments/getExperimentRuns.js +1 -1
- package/dist/src/experiments/getExperimentRuns.js.map +1 -1
- package/dist/src/experiments/helpers/asExperimentEvaluator.d.ts +2 -2
- package/dist/src/experiments/helpers/asExperimentEvaluator.d.ts.map +1 -1
- package/dist/src/experiments/helpers/fromPhoenixLLMEvaluator.d.ts +1 -1
- package/dist/src/experiments/helpers/fromPhoenixLLMEvaluator.d.ts.map +1 -1
- package/dist/src/experiments/helpers/fromPhoenixLLMEvaluator.js.map +1 -1
- package/dist/src/experiments/helpers/getExperimentEvaluators.d.ts +1 -1
- package/dist/src/experiments/helpers/getExperimentEvaluators.d.ts.map +1 -1
- package/dist/src/experiments/helpers/getExperimentEvaluators.js.map +1 -1
- package/dist/src/experiments/listExperiments.d.ts +2 -2
- package/dist/src/experiments/listExperiments.d.ts.map +1 -1
- package/dist/src/experiments/listExperiments.js +1 -1
- package/dist/src/experiments/listExperiments.js.map +1 -1
- package/dist/src/experiments/logging.d.ts +55 -0
- package/dist/src/experiments/logging.d.ts.map +1 -0
- package/dist/src/experiments/logging.js +121 -0
- package/dist/src/experiments/logging.js.map +1 -0
- package/dist/src/experiments/resumeEvaluation.d.ts +3 -3
- package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/src/experiments/resumeEvaluation.js +18 -29
- package/dist/src/experiments/resumeEvaluation.js.map +1 -1
- package/dist/src/experiments/resumeExperiment.d.ts +3 -3
- package/dist/src/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/src/experiments/resumeExperiment.js +23 -32
- package/dist/src/experiments/resumeExperiment.js.map +1 -1
- package/dist/src/experiments/runExperiment.d.ts +6 -5
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +65 -47
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/logger.d.ts +40 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +63 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/prompts/createPrompt.d.ts +2 -2
- package/dist/src/prompts/createPrompt.d.ts.map +1 -1
- package/dist/src/prompts/getPrompt.d.ts +2 -2
- package/dist/src/prompts/getPrompt.d.ts.map +1 -1
- package/dist/src/prompts/listPrompts.d.ts +2 -2
- package/dist/src/prompts/listPrompts.d.ts.map +1 -1
- package/dist/src/prompts/listPrompts.js +1 -1
- package/dist/src/prompts/listPrompts.js.map +1 -1
- package/dist/src/prompts/sdks/toAI.d.ts +4 -4
- package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAI.js +6 -30
- package/dist/src/prompts/sdks/toAI.js.map +1 -1
- package/dist/src/prompts/sdks/toAnthropic.d.ts +1 -1
- package/dist/src/prompts/sdks/toAnthropic.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAnthropic.js +1 -1
- package/dist/src/prompts/sdks/toAnthropic.js.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.d.ts +1 -1
- package/dist/src/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.js +1 -1
- package/dist/src/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/src/prompts/sdks/toSDK.d.ts +1 -1
- package/dist/src/prompts/sdks/toSDK.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toSDK.js +1 -1
- package/dist/src/prompts/sdks/toSDK.js.map +1 -1
- package/dist/src/prompts/sdks/types.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/converters.js +1 -1
- package/dist/src/schemas/llm/anthropic/converters.js.map +1 -1
- package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/messagePartSchemas.js +1 -1
- package/dist/src/schemas/llm/anthropic/messagePartSchemas.js.map +1 -1
- package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/messageSchemas.js +7 -2
- package/dist/src/schemas/llm/anthropic/messageSchemas.js.map +1 -1
- package/dist/src/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/toolCallSchemas.js +1 -1
- package/dist/src/schemas/llm/anthropic/toolCallSchemas.js.map +1 -1
- package/dist/src/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/toolSchemas.js +1 -1
- package/dist/src/schemas/llm/anthropic/toolSchemas.js.map +1 -1
- package/dist/src/schemas/llm/constants.d.ts +1 -1
- package/dist/src/schemas/llm/constants.d.ts.map +1 -1
- package/dist/src/schemas/llm/constants.js +2 -2
- package/dist/src/schemas/llm/constants.js.map +1 -1
- package/dist/src/schemas/llm/converters.d.ts +8 -8
- package/dist/src/schemas/llm/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/converters.js +1 -1
- package/dist/src/schemas/llm/converters.js.map +1 -1
- package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/converters.js +1 -1
- package/dist/src/schemas/llm/openai/converters.js.map +1 -1
- package/dist/src/schemas/llm/openai/messageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/messageSchemas.js +1 -1
- package/dist/src/schemas/llm/openai/messageSchemas.js.map +1 -1
- package/dist/src/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/responseFormatSchema.js +1 -1
- package/dist/src/schemas/llm/openai/responseFormatSchema.js.map +1 -1
- package/dist/src/schemas/llm/openai/toolSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/toolSchemas.js +1 -1
- package/dist/src/schemas/llm/openai/toolSchemas.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/converters.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js +1 -1
- package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -1
- package/dist/src/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/schemas.js +1 -1
- package/dist/src/schemas/llm/schemas.js.map +1 -1
- package/dist/src/schemas/llm/types.d.ts +18 -18
- package/dist/src/schemas/llm/types.d.ts.map +1 -1
- package/dist/src/schemas/llm/utils.d.ts +1 -1
- package/dist/src/schemas/llm/utils.d.ts.map +1 -1
- package/dist/src/schemas/llm/utils.js +1 -1
- package/dist/src/schemas/llm/utils.js.map +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.js +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
- package/dist/src/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/vercel/messageSchemas.js +1 -1
- package/dist/src/schemas/llm/vercel/messageSchemas.js.map +1 -1
- package/dist/src/sessions/addSessionAnnotation.d.ts +2 -2
- package/dist/src/sessions/addSessionAnnotation.d.ts.map +1 -1
- package/dist/src/sessions/addSessionAnnotation.js.map +1 -1
- package/dist/src/sessions/logSessionAnnotations.d.ts +2 -2
- package/dist/src/sessions/logSessionAnnotations.d.ts.map +1 -1
- package/dist/src/sessions/logSessionAnnotations.js.map +1 -1
- package/dist/src/sessions/types.d.ts +2 -2
- package/dist/src/sessions/types.d.ts.map +1 -1
- package/dist/src/spans/addDocumentAnnotation.d.ts +2 -2
- package/dist/src/spans/addDocumentAnnotation.d.ts.map +1 -1
- package/dist/src/spans/addDocumentAnnotation.js.map +1 -1
- package/dist/src/spans/addSpanAnnotation.d.ts +2 -2
- package/dist/src/spans/addSpanAnnotation.d.ts.map +1 -1
- package/dist/src/spans/addSpanAnnotation.js.map +1 -1
- package/dist/src/spans/addSpanNote.d.ts +1 -1
- package/dist/src/spans/addSpanNote.d.ts.map +1 -1
- package/dist/src/spans/deleteSpan.d.ts +1 -1
- package/dist/src/spans/deleteSpan.d.ts.map +1 -1
- package/dist/src/spans/getSpanAnnotations.d.ts +3 -3
- package/dist/src/spans/getSpanAnnotations.d.ts.map +1 -1
- package/dist/src/spans/getSpans.d.ts +3 -3
- package/dist/src/spans/getSpans.d.ts.map +1 -1
- package/dist/src/spans/logDocumentAnnotations.d.ts +2 -2
- package/dist/src/spans/logDocumentAnnotations.d.ts.map +1 -1
- package/dist/src/spans/logDocumentAnnotations.js.map +1 -1
- package/dist/src/spans/logSpanAnnotations.d.ts +2 -2
- package/dist/src/spans/logSpanAnnotations.d.ts.map +1 -1
- package/dist/src/spans/logSpanAnnotations.js.map +1 -1
- package/dist/src/spans/types.d.ts +2 -2
- package/dist/src/spans/types.d.ts.map +1 -1
- package/dist/src/types/annotations.d.ts +1 -1
- package/dist/src/types/annotations.d.ts.map +1 -1
- package/dist/src/types/core.d.ts +1 -1
- package/dist/src/types/core.d.ts.map +1 -1
- package/dist/src/types/datasets.d.ts +1 -1
- package/dist/src/types/datasets.d.ts.map +1 -1
- package/dist/src/types/experiments.d.ts +3 -3
- package/dist/src/types/experiments.d.ts.map +1 -1
- package/dist/src/types/prompts.d.ts +1 -1
- package/dist/src/types/prompts.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.d.ts +2 -2
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.js.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts +2 -2
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.js +1 -1
- package/dist/src/utils/getPromptBySelector.js.map +1 -1
- package/dist/src/utils/noopLogger.d.ts +1 -8
- package/dist/src/utils/noopLogger.d.ts.map +1 -1
- package/dist/src/utils/noopLogger.js +2 -8
- package/dist/src/utils/noopLogger.js.map +1 -1
- package/dist/src/utils/schemaMatches.d.ts +1 -1
- package/dist/src/utils/schemaMatches.d.ts.map +1 -1
- package/dist/src/utils/toObjectHeaders.d.ts +1 -1
- package/dist/src/utils/toObjectHeaders.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +47 -48
- package/src/__generated__/api/v1.ts +4 -1
- package/src/client.ts +5 -5
- package/src/config.ts +1 -2
- package/src/datasets/appendDatasetExamples.ts +4 -5
- package/src/datasets/createDataset.ts +4 -4
- package/src/datasets/createOrGetDataset.ts +2 -2
- package/src/datasets/getDataset.ts +2 -3
- package/src/datasets/getDatasetExamples.ts +4 -5
- package/src/datasets/getDatasetInfo.ts +4 -5
- package/src/datasets/getDatasetInfoByName.ts +2 -2
- package/src/datasets/listDatasets.ts +4 -4
- package/src/experiments/createExperiment.ts +4 -4
- package/src/experiments/deleteExperiment.ts +11 -1
- package/src/experiments/getExperiment.ts +2 -3
- package/src/experiments/getExperimentInfo.ts +4 -4
- package/src/experiments/getExperimentRuns.ts +5 -5
- package/src/experiments/helpers/asExperimentEvaluator.ts +2 -2
- package/src/experiments/helpers/fromPhoenixLLMEvaluator.ts +1 -2
- package/src/experiments/helpers/getExperimentEvaluators.ts +1 -2
- package/src/experiments/listExperiments.ts +5 -5
- package/src/experiments/logging.ts +169 -0
- package/src/experiments/resumeEvaluation.ts +23 -51
- package/src/experiments/resumeExperiment.ts +35 -56
- package/src/experiments/runExperiment.ts +83 -69
- package/src/logger.ts +82 -0
- package/src/prompts/createPrompt.ts +2 -2
- package/src/prompts/getPrompt.ts +2 -2
- package/src/prompts/listPrompts.ts +4 -4
- package/src/prompts/sdks/constants.ts +1 -1
- package/src/prompts/sdks/toAI.ts +8 -38
- package/src/prompts/sdks/toAnthropic.ts +4 -5
- package/src/prompts/sdks/toOpenAI.ts +8 -9
- package/src/prompts/sdks/toSDK.ts +3 -4
- package/src/prompts/sdks/types.ts +0 -1
- package/src/schemas/llm/anthropic/converters.ts +10 -13
- package/src/schemas/llm/anthropic/messagePartSchemas.ts +2 -2
- package/src/schemas/llm/anthropic/messageSchemas.ts +6 -3
- package/src/schemas/llm/anthropic/toolCallSchemas.ts +2 -2
- package/src/schemas/llm/anthropic/toolSchemas.ts +2 -2
- package/src/schemas/llm/constants.ts +3 -4
- package/src/schemas/llm/converters.ts +10 -11
- package/src/schemas/llm/openai/converters.ts +15 -14
- package/src/schemas/llm/openai/messageSchemas.ts +2 -2
- package/src/schemas/llm/openai/responseFormatSchema.ts +2 -2
- package/src/schemas/llm/openai/toolSchemas.ts +2 -2
- package/src/schemas/llm/phoenixPrompt/converters.ts +7 -9
- package/src/schemas/llm/phoenixPrompt/messagePartSchemas.ts +2 -2
- package/src/schemas/llm/phoenixPrompt/messageSchemas.ts +2 -3
- package/src/schemas/llm/phoenixPrompt/responseFormatSchema.ts +3 -3
- package/src/schemas/llm/phoenixPrompt/toolCallSchemas.ts +2 -2
- package/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.ts +3 -3
- package/src/schemas/llm/phoenixPrompt/toolSchemas.ts +3 -3
- package/src/schemas/llm/schemas.ts +2 -2
- package/src/schemas/llm/types.ts +18 -19
- package/src/schemas/llm/utils.ts +4 -5
- package/src/schemas/llm/vercel/messagePartSchemas.ts +2 -2
- package/src/schemas/llm/vercel/messageSchemas.ts +2 -2
- package/src/sessions/addSessionAnnotation.ts +3 -3
- package/src/sessions/logSessionAnnotations.ts +3 -3
- package/src/sessions/types.ts +2 -2
- package/src/spans/addDocumentAnnotation.ts +3 -3
- package/src/spans/addSpanAnnotation.ts +3 -3
- package/src/spans/addSpanNote.ts +1 -1
- package/src/spans/deleteSpan.ts +1 -1
- package/src/spans/getSpanAnnotations.ts +3 -3
- package/src/spans/getSpans.ts +3 -3
- package/src/spans/logDocumentAnnotations.ts +3 -3
- package/src/spans/logSpanAnnotations.ts +3 -3
- package/src/spans/types.ts +2 -2
- package/src/types/annotations.ts +1 -1
- package/src/types/core.ts +1 -1
- package/src/types/datasets.ts +1 -1
- package/src/types/experiments.ts +3 -3
- package/src/types/prompts.ts +1 -1
- package/src/utils/formatPromptMessages.ts +4 -7
- package/src/utils/getPromptBySelector.ts +4 -4
- package/src/utils/noopLogger.ts +1 -10
- package/src/utils/schemaMatches.ts +1 -1
- package/src/utils/toObjectHeaders.ts +1 -1
- package/dist/esm/types/logger.d.ts +0 -6
- package/dist/esm/types/logger.d.ts.map +0 -1
- package/dist/esm/types/logger.js +0 -2
- package/dist/esm/types/logger.js.map +0 -1
- package/dist/src/types/logger.d.ts +0 -6
- package/dist/src/types/logger.d.ts.map +0 -1
- package/dist/src/types/logger.js +0 -3
- package/dist/src/types/logger.js.map +0 -1
- package/src/types/logger.ts +0 -5
|
@@ -3,22 +3,24 @@ import {
|
|
|
3
3
|
OpenInferenceSpanKind,
|
|
4
4
|
SemanticConventions,
|
|
5
5
|
} from "@arizeai/openinference-semantic-conventions";
|
|
6
|
+
import type { NodeTracerProvider, Tracer } from "@arizeai/phoenix-otel";
|
|
6
7
|
import {
|
|
7
8
|
createNoOpProvider,
|
|
8
9
|
type DiagLogLevel,
|
|
9
|
-
NodeTracerProvider,
|
|
10
10
|
objectAsAttributes,
|
|
11
11
|
register,
|
|
12
12
|
SpanStatusCode,
|
|
13
13
|
trace,
|
|
14
|
-
Tracer,
|
|
15
14
|
} from "@arizeai/phoenix-otel";
|
|
15
|
+
import { queue } from "async";
|
|
16
|
+
import invariant from "tiny-invariant";
|
|
16
17
|
|
|
17
18
|
import { createClient, type PhoenixClient } from "../client";
|
|
18
19
|
import { getDataset } from "../datasets/getDataset";
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
20
|
+
import { createLogger, type Logger } from "../logger";
|
|
21
|
+
import type { AnnotatorKind } from "../types/annotations";
|
|
22
|
+
import type { ClientFn } from "../types/core";
|
|
23
|
+
import type {
|
|
22
24
|
Dataset,
|
|
23
25
|
DatasetSelector,
|
|
24
26
|
Example,
|
|
@@ -34,7 +36,6 @@ import type {
|
|
|
34
36
|
ExperimentTask,
|
|
35
37
|
RanExperiment,
|
|
36
38
|
} from "../types/experiments";
|
|
37
|
-
import { type Logger } from "../types/logger";
|
|
38
39
|
import { ensureString } from "../utils/ensureString";
|
|
39
40
|
import { pluralize } from "../utils/pluralize";
|
|
40
41
|
import { promisifyResult } from "../utils/promisifyResult";
|
|
@@ -44,12 +45,14 @@ import {
|
|
|
44
45
|
getDatasetUrl,
|
|
45
46
|
getExperimentUrl,
|
|
46
47
|
} from "../utils/urlUtils";
|
|
47
|
-
|
|
48
48
|
import { getExperimentInfo } from "./getExperimentInfo";
|
|
49
49
|
import { getExperimentEvaluators } from "./helpers";
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
import {
|
|
51
|
+
logEvalSummary,
|
|
52
|
+
logLinks,
|
|
53
|
+
logTaskSummary,
|
|
54
|
+
PROGRESS_PREFIX,
|
|
55
|
+
} from "./logging";
|
|
53
56
|
|
|
54
57
|
/**
|
|
55
58
|
* Validate that a repetition is valid
|
|
@@ -170,7 +173,7 @@ export async function runExperiment({
|
|
|
170
173
|
dataset: datasetSelector,
|
|
171
174
|
task,
|
|
172
175
|
evaluators,
|
|
173
|
-
logger =
|
|
176
|
+
logger = createLogger(),
|
|
174
177
|
record = true,
|
|
175
178
|
concurrency = 5,
|
|
176
179
|
dryRun = false,
|
|
@@ -284,35 +287,39 @@ export async function runExperiment({
|
|
|
284
287
|
}
|
|
285
288
|
if (!record) {
|
|
286
289
|
logger.info(
|
|
287
|
-
|
|
290
|
+
`Running experiment in readonly mode. Results will not be recorded.`
|
|
288
291
|
);
|
|
289
292
|
}
|
|
290
293
|
|
|
294
|
+
const links: Array<{ label: string; url: string }> = [];
|
|
291
295
|
if (!isDryRun && client.config.baseUrl) {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
296
|
+
links.push({
|
|
297
|
+
label: "Dataset",
|
|
298
|
+
url: getDatasetUrl({
|
|
299
|
+
baseUrl: client.config.baseUrl,
|
|
300
|
+
datasetId: dataset.id,
|
|
301
|
+
}),
|
|
295
302
|
});
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
303
|
+
links.push({
|
|
304
|
+
label: "Experiments",
|
|
305
|
+
url: getDatasetExperimentsUrl({
|
|
306
|
+
baseUrl: client.config.baseUrl,
|
|
307
|
+
datasetId: dataset.id,
|
|
308
|
+
}),
|
|
299
309
|
});
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
310
|
+
links.push({
|
|
311
|
+
label: "Experiment",
|
|
312
|
+
url: getExperimentUrl({
|
|
313
|
+
baseUrl: client.config.baseUrl,
|
|
314
|
+
datasetId: dataset.id,
|
|
315
|
+
experimentId: experiment.id,
|
|
316
|
+
}),
|
|
304
317
|
});
|
|
305
|
-
|
|
306
|
-
logger.info(`📊 View dataset: ${datasetUrl}`);
|
|
307
|
-
logger.info(`📺 View dataset experiments: ${datasetExperimentsUrl}`);
|
|
308
|
-
logger.info(`🔗 View this experiment: ${experimentUrl}`);
|
|
309
318
|
}
|
|
310
319
|
|
|
320
|
+
const evCount = evaluators?.length ?? 0;
|
|
311
321
|
logger.info(
|
|
312
|
-
|
|
313
|
-
"evaluator",
|
|
314
|
-
evaluators?.length ?? 0
|
|
315
|
-
)} and ${concurrency} concurrent runs`
|
|
322
|
+
`${PROGRESS_PREFIX.start}Experiment ${experimentName || "<unnamed>"} (dataset ${dataset.name}, ${nExamples} ${pluralize("example", nExamples)}, ${evCount} ${pluralize("evaluator", evCount)})`
|
|
316
323
|
);
|
|
317
324
|
|
|
318
325
|
const runs: Record<ExperimentRunID, ExperimentRun> = {};
|
|
@@ -331,13 +338,27 @@ export async function runExperiment({
|
|
|
331
338
|
tracer: taskTracer,
|
|
332
339
|
repetitions,
|
|
333
340
|
});
|
|
334
|
-
|
|
341
|
+
const taskRuns = Object.values(runs);
|
|
342
|
+
const taskErrors = taskRuns.filter((run) => run.error != null).length;
|
|
343
|
+
const taskTotal = nExamples * repetitions;
|
|
344
|
+
const taskOkStr =
|
|
345
|
+
taskErrors > 0
|
|
346
|
+
? `${taskRuns.length - taskErrors}/${taskTotal} ok (${taskErrors} failed)`
|
|
347
|
+
: `${taskRuns.length}/${taskTotal} ok`;
|
|
348
|
+
logger.info(`${PROGRESS_PREFIX.completed}Tasks ${taskOkStr}`);
|
|
335
349
|
|
|
336
350
|
const ranExperiment: RanExperiment = {
|
|
337
351
|
...experiment,
|
|
338
352
|
runs,
|
|
339
353
|
};
|
|
340
354
|
|
|
355
|
+
if (evaluators && evaluators.length > 0) {
|
|
356
|
+
const evNames = getExperimentEvaluators(evaluators)
|
|
357
|
+
.map((evaluator) => evaluator.name)
|
|
358
|
+
.join(", ");
|
|
359
|
+
logger.info(`${PROGRESS_PREFIX.start}Evaluations (${evNames})`);
|
|
360
|
+
}
|
|
361
|
+
|
|
341
362
|
const { evaluationRuns } = await evaluateExperiment({
|
|
342
363
|
experiment: ranExperiment,
|
|
343
364
|
evaluators: evaluators ?? [],
|
|
@@ -351,8 +372,6 @@ export async function runExperiment({
|
|
|
351
372
|
});
|
|
352
373
|
ranExperiment.evaluationRuns = evaluationRuns;
|
|
353
374
|
|
|
354
|
-
logger.info(`✅ Experiment ${experiment.id} completed`);
|
|
355
|
-
|
|
356
375
|
// Refresh experiment info from server to get updated counts (non-dry-run only)
|
|
357
376
|
if (!isDryRun) {
|
|
358
377
|
const updatedExperiment = await getExperimentInfo({
|
|
@@ -363,15 +382,19 @@ export async function runExperiment({
|
|
|
363
382
|
Object.assign(ranExperiment, updatedExperiment);
|
|
364
383
|
}
|
|
365
384
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
385
|
+
logTaskSummary(logger, {
|
|
386
|
+
nExamples,
|
|
387
|
+
repetitions,
|
|
388
|
+
nRuns: taskRuns.length,
|
|
389
|
+
nErrors: taskErrors,
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
if (ranExperiment.evaluationRuns && ranExperiment.evaluationRuns.length > 0) {
|
|
393
|
+
logEvalSummary(logger, ranExperiment.evaluationRuns);
|
|
373
394
|
}
|
|
374
395
|
|
|
396
|
+
logLinks(logger, links);
|
|
397
|
+
|
|
375
398
|
return ranExperiment;
|
|
376
399
|
}
|
|
377
400
|
|
|
@@ -420,7 +443,9 @@ function runTaskWithExamples({
|
|
|
420
443
|
"repetitions must be an integer greater than 0"
|
|
421
444
|
);
|
|
422
445
|
|
|
423
|
-
logger.
|
|
446
|
+
logger.debug(
|
|
447
|
+
`${PROGRESS_PREFIX.start}Tasks (${nExamples} ${pluralize("example", nExamples)} × ${repetitions} ${pluralize("repetition", repetitions)})`
|
|
448
|
+
);
|
|
424
449
|
const run = async ({
|
|
425
450
|
example,
|
|
426
451
|
repetitionNumber,
|
|
@@ -429,9 +454,7 @@ function runTaskWithExamples({
|
|
|
429
454
|
repetitionNumber: number;
|
|
430
455
|
}) => {
|
|
431
456
|
return tracer.startActiveSpan(`Task: ${task.name}`, async (span) => {
|
|
432
|
-
logger.
|
|
433
|
-
`🔧 Running task "${task.name}" on example "${example.id} of dataset "${dataset.id}"`
|
|
434
|
-
);
|
|
457
|
+
logger.debug(`${PROGRESS_PREFIX.progress}Task on example ${example.id}`);
|
|
435
458
|
const traceId = span.spanContext().traceId;
|
|
436
459
|
const thisRun: ExperimentRun = {
|
|
437
460
|
id: localId(), // initialized with local id, will be replaced with server-assigned id when dry run is false
|
|
@@ -522,7 +545,7 @@ export async function evaluateExperiment({
|
|
|
522
545
|
experiment,
|
|
523
546
|
evaluators,
|
|
524
547
|
client: _client,
|
|
525
|
-
logger =
|
|
548
|
+
logger = createLogger(),
|
|
526
549
|
concurrency = 5,
|
|
527
550
|
dryRun = false,
|
|
528
551
|
setGlobalTracerProvider = true,
|
|
@@ -624,21 +647,6 @@ export async function evaluateExperiment({
|
|
|
624
647
|
evaluationRuns: [],
|
|
625
648
|
};
|
|
626
649
|
}
|
|
627
|
-
logger.info(
|
|
628
|
-
`🧠 Evaluating experiment "${experiment.id}" with ${evaluators?.length ?? 0} ${pluralize(
|
|
629
|
-
"evaluator",
|
|
630
|
-
evaluators?.length ?? 0
|
|
631
|
-
)}`
|
|
632
|
-
);
|
|
633
|
-
|
|
634
|
-
if (!isDryRun && client.config.baseUrl) {
|
|
635
|
-
const experimentUrl = getExperimentUrl({
|
|
636
|
-
baseUrl: client.config.baseUrl,
|
|
637
|
-
datasetId: experiment.datasetId,
|
|
638
|
-
experimentId: experiment.id,
|
|
639
|
-
});
|
|
640
|
-
logger.info(`🔗 View experiment evaluation: ${experimentUrl}`);
|
|
641
|
-
}
|
|
642
650
|
type EvaluationId = string;
|
|
643
651
|
const evaluationRuns: Record<EvaluationId, ExperimentEvaluationRun> = {};
|
|
644
652
|
|
|
@@ -725,7 +733,7 @@ export async function evaluateExperiment({
|
|
|
725
733
|
concurrency
|
|
726
734
|
);
|
|
727
735
|
if (!evaluatorsAndRuns.length) {
|
|
728
|
-
logger.
|
|
736
|
+
logger.warn(`No evaluators to run`);
|
|
729
737
|
return {
|
|
730
738
|
...experiment,
|
|
731
739
|
evaluationRuns: [],
|
|
@@ -735,13 +743,22 @@ export async function evaluateExperiment({
|
|
|
735
743
|
evaluatorsQueue.push(evaluatorAndRun, (err) => {
|
|
736
744
|
if (err) {
|
|
737
745
|
logger.error(
|
|
738
|
-
|
|
746
|
+
`Error running evaluator "${evaluatorAndRun.evaluator.name}" on run "${evaluatorAndRun.run.id}": ${err}`
|
|
739
747
|
);
|
|
740
748
|
}
|
|
741
749
|
})
|
|
742
750
|
);
|
|
743
751
|
await evaluatorsQueue.drain();
|
|
744
|
-
|
|
752
|
+
const evalTotal = Object.values(evaluationRuns).length;
|
|
753
|
+
const evalErrors = Object.values(evaluationRuns).filter(
|
|
754
|
+
(ev) => ev.error != null
|
|
755
|
+
).length;
|
|
756
|
+
const evalExpected = runsToEvaluate.length * normalizedEvaluators.length;
|
|
757
|
+
const evalOkStr =
|
|
758
|
+
evalErrors > 0
|
|
759
|
+
? `${evalTotal - evalErrors}/${evalExpected} ok (${evalErrors} failed)`
|
|
760
|
+
: `${evalTotal}/${evalExpected} ok`;
|
|
761
|
+
logger.info(`${PROGRESS_PREFIX.completed}Evaluations ${evalOkStr}`);
|
|
745
762
|
|
|
746
763
|
if (provider) {
|
|
747
764
|
await provider.shutdown();
|
|
@@ -778,8 +795,8 @@ async function runEvaluator({
|
|
|
778
795
|
const example = exampleCache[run.datasetExampleId];
|
|
779
796
|
invariant(example, `Example "${run.datasetExampleId}" not found`);
|
|
780
797
|
const evaluate = async () => {
|
|
781
|
-
logger.
|
|
782
|
-
|
|
798
|
+
logger.debug(
|
|
799
|
+
`${PROGRESS_PREFIX.progress}Eval ${evaluator.name} on run ${run.id}`
|
|
783
800
|
);
|
|
784
801
|
const thisEval: ExperimentEvaluationRun = {
|
|
785
802
|
id: localId(),
|
|
@@ -800,13 +817,10 @@ async function runEvaluator({
|
|
|
800
817
|
metadata: example?.metadata,
|
|
801
818
|
});
|
|
802
819
|
thisEval.result = result;
|
|
803
|
-
logger.info(
|
|
804
|
-
`✅ Evaluator "${evaluator.name}" on run "${run.id}" completed`
|
|
805
|
-
);
|
|
806
820
|
} catch (error) {
|
|
807
821
|
thisEval.error = error instanceof Error ? error.message : "Unknown error";
|
|
808
822
|
logger.error(
|
|
809
|
-
|
|
823
|
+
`Evaluator "${evaluator.name}" on run "${run.id}" failed: ${thisEval.error}`
|
|
810
824
|
);
|
|
811
825
|
}
|
|
812
826
|
thisEval.endTime = new Date();
|
package/src/logger.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ENV_PHOENIX_LOG_LEVEL,
|
|
3
|
+
getStrFromEnvironment,
|
|
4
|
+
} from "@arizeai/phoenix-config";
|
|
5
|
+
|
|
6
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
7
|
+
|
|
8
|
+
export type Logger = {
|
|
9
|
+
info: (message: string) => void;
|
|
10
|
+
warn: (message: string) => void;
|
|
11
|
+
error: (message: string) => void;
|
|
12
|
+
log: (message: string) => void;
|
|
13
|
+
debug: (message: string) => void;
|
|
14
|
+
table: (data: unknown) => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A logger that does nothing
|
|
19
|
+
*/
|
|
20
|
+
export const noopLogger = {
|
|
21
|
+
info: () => undefined,
|
|
22
|
+
warn: () => undefined,
|
|
23
|
+
error: () => undefined,
|
|
24
|
+
log: () => undefined,
|
|
25
|
+
debug: () => undefined,
|
|
26
|
+
table: () => undefined,
|
|
27
|
+
} satisfies Logger;
|
|
28
|
+
|
|
29
|
+
const VALID_LOG_LEVELS: readonly LogLevel[] = [
|
|
30
|
+
"debug",
|
|
31
|
+
"info",
|
|
32
|
+
"warn",
|
|
33
|
+
"error",
|
|
34
|
+
"silent",
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
function isLogLevel(value: string): value is LogLevel {
|
|
38
|
+
return VALID_LOG_LEVELS.includes(value as LogLevel);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function getLogLevelFromEnvironment(): LogLevel {
|
|
42
|
+
const value = getStrFromEnvironment(ENV_PHOENIX_LOG_LEVEL);
|
|
43
|
+
if (value && isLogLevel(value)) {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
return "info";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Creates a logger with the given log level, optionally wrapping a custom logger.
|
|
51
|
+
* If no level is provided, reads PHOENIX_LOG_LEVEL from the environment, defaulting to "info".
|
|
52
|
+
* If a custom logger is provided, it is used as the underlying output target instead of console.
|
|
53
|
+
*
|
|
54
|
+
* Log level hierarchy (lowest to highest): debug < info < warn < error < silent
|
|
55
|
+
* Messages below the configured level are suppressed.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* const logger = createLogger(); // uses PHOENIX_LOG_LEVEL env var, defaults to "info"
|
|
59
|
+
* const logger = createLogger({ level: "debug" }); // show all messages including progress
|
|
60
|
+
* const logger = createLogger({ level: "silent" }); // suppress all output
|
|
61
|
+
* const logger = createLogger({ logger: myWinstonLogger }); // wrap a custom logger
|
|
62
|
+
* const logger = createLogger({ level: "warn", logger: myWinstonLogger }); // custom + level filter
|
|
63
|
+
*/
|
|
64
|
+
export function createLogger({
|
|
65
|
+
level,
|
|
66
|
+
logger,
|
|
67
|
+
}: { level?: LogLevel; logger?: Logger } = {}): Logger {
|
|
68
|
+
const resolvedLevel = level ?? getLogLevelFromEnvironment();
|
|
69
|
+
const levelIndex = VALID_LOG_LEVELS.indexOf(resolvedLevel);
|
|
70
|
+
const shouldLog = (l: LogLevel) => VALID_LOG_LEVELS.indexOf(l) >= levelIndex;
|
|
71
|
+
|
|
72
|
+
const base = logger ?? console;
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
debug: shouldLog("debug") ? (msg) => base.debug(msg) : () => undefined,
|
|
76
|
+
info: shouldLog("info") ? (msg) => base.info(msg) : () => undefined,
|
|
77
|
+
warn: shouldLog("warn") ? (msg) => base.warn(msg) : () => undefined,
|
|
78
|
+
error: shouldLog("error") ? (msg) => base.error(msg) : () => undefined,
|
|
79
|
+
log: shouldLog("info") ? (msg) => base.log(msg) : () => undefined,
|
|
80
|
+
table: shouldLog("info") ? (data) => base.table(data) : () => undefined,
|
|
81
|
+
};
|
|
82
|
+
}
|
package/src/prompts/getPrompt.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createClient } from "../client";
|
|
2
|
-
import { ClientFn } from "../types/core";
|
|
3
|
-
import { PromptSelector, PromptVersion } from "../types/prompts";
|
|
2
|
+
import type { ClientFn } from "../types/core";
|
|
3
|
+
import type { PromptSelector, PromptVersion } from "../types/prompts";
|
|
4
4
|
import { getPromptBySelector } from "../utils/getPromptBySelector";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { createClient } from "../client";
|
|
2
|
-
import { ClientFn } from "../types/core";
|
|
3
|
-
import { Prompt } from "../types/prompts";
|
|
4
|
-
|
|
5
1
|
import invariant from "tiny-invariant";
|
|
6
2
|
|
|
3
|
+
import { createClient } from "../client";
|
|
4
|
+
import type { ClientFn } from "../types/core";
|
|
5
|
+
import type { Prompt } from "../types/prompts";
|
|
6
|
+
|
|
7
7
|
export type ListPromptsParams = ClientFn;
|
|
8
8
|
|
|
9
9
|
/**
|
package/src/prompts/sdks/toAI.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
safelyConvertMessageToProvider,
|
|
3
|
-
safelyConvertToolChoiceToProvider,
|
|
4
|
-
} from "../../schemas/llm/converters";
|
|
5
|
-
import { VercelAIToolChoice } from "../../schemas/llm/vercel/toolChoiceSchemas";
|
|
6
|
-
import { formatPromptMessages } from "../../utils/formatPromptMessages";
|
|
7
|
-
|
|
8
|
-
import { toSDKParamsBase, Variables } from "./types";
|
|
9
|
-
|
|
10
|
-
import { type ModelMessage, type ToolChoice, type ToolSet } from "ai";
|
|
1
|
+
import type { ModelMessage, ToolChoice, ToolSet } from "ai";
|
|
11
2
|
import invariant from "tiny-invariant";
|
|
12
3
|
|
|
4
|
+
import { safelyConvertMessageToProvider } from "../../schemas/llm/converters";
|
|
5
|
+
import { formatPromptMessages } from "../../utils/formatPromptMessages";
|
|
6
|
+
import type { Variables, toSDKParamsBase } from "./types";
|
|
7
|
+
|
|
13
8
|
export type PartialAIParams = {
|
|
14
9
|
messages: ModelMessage[];
|
|
15
10
|
/**
|
|
@@ -27,8 +22,8 @@ export type ToAIParams<V extends Variables> = toSDKParamsBase<V>;
|
|
|
27
22
|
/**
|
|
28
23
|
* Converts a Phoenix prompt to Vercel AI sdk params.
|
|
29
24
|
*
|
|
30
|
-
* - note: To use response format, you must pass `prompt.response_format.
|
|
31
|
-
*
|
|
25
|
+
* - note: To use response format, you must pass `prompt.response_format.json_schema.schema` to generateObject or streamObject
|
|
26
|
+
* via `jsonSchema()`, through the `schema` argument.
|
|
32
27
|
*/
|
|
33
28
|
export const toAI = <V extends Variables>({
|
|
34
29
|
prompt,
|
|
@@ -67,44 +62,19 @@ export const toAI = <V extends Variables>({
|
|
|
67
62
|
return vercelAIMessage;
|
|
68
63
|
});
|
|
69
64
|
|
|
70
|
-
// convert tools to Vercel AI tool set, which is a map of tool name to tool
|
|
71
|
-
// TODO: Vercel AI SDK 5 has complex tool schema
|
|
72
|
-
// let tools: ToolSet | undefined = prompt.tools?.tools.reduce((acc, tool) => {
|
|
73
|
-
// if (!tool.function.parameters) {
|
|
74
|
-
// return acc;
|
|
75
|
-
// }
|
|
76
|
-
// const vercelAIToolDefinition = safelyConvertToolDefinitionToProvider({
|
|
77
|
-
// toolDefinition: tool,
|
|
78
|
-
// targetProvider: "VERCEL_AI",
|
|
79
|
-
// });
|
|
80
|
-
// invariant(vercelAIToolDefinition, "Tool definition is not valid");
|
|
81
|
-
// // TODO: get the symbol working here for validators
|
|
82
|
-
// acc[tool.function.name] = vercelAIToolDefinition as unknown as Tool;
|
|
83
|
-
// return acc;
|
|
84
|
-
// }, {} as ToolSet);
|
|
85
|
-
// const hasTools = Object.keys(tools ?? {}).length > 0;
|
|
86
|
-
// tools = hasTools ? tools : undefined;
|
|
87
|
-
const hasTools = false;
|
|
88
65
|
const tools = undefined;
|
|
89
66
|
if (prompt.tools?.tools && prompt.tools?.tools.length) {
|
|
90
67
|
// eslint-disable-next-line no-console
|
|
91
68
|
console.warn(
|
|
92
|
-
"
|
|
69
|
+
"Phoenix client does not automatically convert tools to AI SDK tools, please manually convert them."
|
|
93
70
|
);
|
|
94
71
|
}
|
|
95
|
-
let toolChoice: VercelAIToolChoice | undefined =
|
|
96
|
-
safelyConvertToolChoiceToProvider({
|
|
97
|
-
toolChoice: prompt.tools?.tool_choice,
|
|
98
|
-
targetProvider: "VERCEL_AI",
|
|
99
|
-
}) || undefined;
|
|
100
|
-
toolChoice = hasTools ? toolChoice : undefined;
|
|
101
72
|
|
|
102
73
|
// combine base and computed params
|
|
103
74
|
const completionParams: PartialAIParams = {
|
|
104
75
|
...baseCompletionParams,
|
|
105
76
|
messages,
|
|
106
77
|
tools,
|
|
107
|
-
toolChoice,
|
|
108
78
|
};
|
|
109
79
|
|
|
110
80
|
return completionParams;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { MessageCreateParams } from "@anthropic-ai/sdk/resources/messages/messages";
|
|
2
|
+
import invariant from "tiny-invariant";
|
|
3
|
+
|
|
4
|
+
import type { AnthropicToolChoice } from "../../schemas/llm/anthropic/toolChoiceSchemas";
|
|
2
5
|
import {
|
|
3
6
|
safelyConvertMessageToProvider,
|
|
4
7
|
safelyConvertToolChoiceToProvider,
|
|
5
8
|
safelyConvertToolDefinitionToProvider,
|
|
6
9
|
} from "../../schemas/llm/converters";
|
|
7
10
|
import { formatPromptMessages } from "../../utils/formatPromptMessages";
|
|
8
|
-
|
|
9
11
|
import type { toSDKParamsBase, Variables } from "./types";
|
|
10
12
|
|
|
11
|
-
import type { MessageCreateParams } from "@anthropic-ai/sdk/resources/messages/messages";
|
|
12
|
-
import invariant from "tiny-invariant";
|
|
13
|
-
|
|
14
13
|
// We must re-export these types so that they are included in the phoenix-client distribution
|
|
15
14
|
export type { MessageCreateParams };
|
|
16
15
|
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ChatCompletionCreateParams,
|
|
3
|
+
ChatCompletionMessageParam,
|
|
4
|
+
ResponseFormatJSONSchema,
|
|
5
|
+
} from "openai/resources";
|
|
6
|
+
import invariant from "tiny-invariant";
|
|
7
|
+
|
|
1
8
|
import {
|
|
2
9
|
safelyConvertMessageToProvider,
|
|
3
10
|
safelyConvertToolChoiceToProvider,
|
|
4
11
|
safelyConvertToolDefinitionToProvider,
|
|
5
12
|
} from "../../schemas/llm/converters";
|
|
6
|
-
import { OpenaiToolChoice } from "../../schemas/llm/openai/toolChoiceSchemas";
|
|
13
|
+
import type { OpenaiToolChoice } from "../../schemas/llm/openai/toolChoiceSchemas";
|
|
7
14
|
import { phoenixResponseFormatToOpenAI } from "../../schemas/llm/phoenixPrompt/converters";
|
|
8
15
|
import { formatPromptMessages } from "../../utils/formatPromptMessages";
|
|
9
|
-
|
|
10
16
|
import type { toSDKParamsBase, Variables } from "./types";
|
|
11
17
|
|
|
12
|
-
import type {
|
|
13
|
-
ChatCompletionCreateParams,
|
|
14
|
-
ChatCompletionMessageParam,
|
|
15
|
-
ResponseFormatJSONSchema,
|
|
16
|
-
} from "openai/resources";
|
|
17
|
-
import invariant from "tiny-invariant";
|
|
18
|
-
|
|
19
18
|
// We must re-export these types so that they are included in the phoenix-client distribution
|
|
20
19
|
export type {
|
|
21
20
|
ChatCompletionCreateParams,
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import invariant from "tiny-invariant";
|
|
2
2
|
|
|
3
|
+
import { assertUnreachable } from "../../utils/assertUnreachable";
|
|
3
4
|
import { toAI } from "./toAI";
|
|
4
5
|
import { toAnthropic } from "./toAnthropic";
|
|
5
6
|
import { toOpenAI } from "./toOpenAI";
|
|
6
|
-
import { SupportedSDK, toSDKParamsBase, Variables } from "./types";
|
|
7
|
-
|
|
8
|
-
import invariant from "tiny-invariant";
|
|
7
|
+
import type { SupportedSDK, toSDKParamsBase, Variables } from "./types";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Parameters for an SDK conversion function
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
+
import invariant from "tiny-invariant";
|
|
2
|
+
|
|
1
3
|
import { assertUnreachable } from "../../../utils/assertUnreachable";
|
|
2
4
|
import { safelyStringifyJSON } from "../../../utils/safelyStringifyJSON";
|
|
3
|
-
import {
|
|
5
|
+
import type {
|
|
4
6
|
OpenAIChatPart,
|
|
5
7
|
OpenAIChatPartImage,
|
|
6
8
|
OpenAIChatPartText,
|
|
7
9
|
} from "../openai/messagePartSchemas";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from "../openai/
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { OpenAIToolDefinition } from "../openai/toolSchemas";
|
|
15
|
-
|
|
16
|
-
import {
|
|
10
|
+
import type { OpenAIMessage } from "../openai/messageSchemas";
|
|
11
|
+
import { openAIMessageRoleSchema } from "../openai/messageSchemas";
|
|
12
|
+
import type { OpenAIToolCall } from "../openai/toolCallSchemas";
|
|
13
|
+
import type { OpenaiToolChoice } from "../openai/toolChoiceSchemas";
|
|
14
|
+
import type { OpenAIToolDefinition } from "../openai/toolSchemas";
|
|
15
|
+
import type {
|
|
17
16
|
AnthropicMessagePart,
|
|
18
|
-
anthropicMessagePartSchema,
|
|
19
17
|
AnthropicToolUseBlock,
|
|
20
18
|
} from "./messagePartSchemas";
|
|
19
|
+
import { anthropicMessagePartSchema } from "./messagePartSchemas";
|
|
21
20
|
import { anthropicMessageSchema } from "./messageSchemas";
|
|
22
21
|
import { anthropicToolCallSchema } from "./toolCallSchemas";
|
|
23
22
|
import { anthropicToolChoiceSchema } from "./toolChoiceSchemas";
|
|
24
23
|
import { anthropicToolDefinitionSchema } from "./toolSchemas";
|
|
25
24
|
|
|
26
|
-
import invariant from "tiny-invariant";
|
|
27
|
-
|
|
28
25
|
/*
|
|
29
26
|
* Conversion Functions
|
|
30
27
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { anthropicMessagePartSchema } from "./messagePartSchemas";
|
|
2
|
-
|
|
3
1
|
import z from "zod";
|
|
4
2
|
import zodToJsonSchema from "zod-to-json-schema";
|
|
5
3
|
|
|
4
|
+
import { anthropicMessagePartSchema } from "./messagePartSchemas";
|
|
5
|
+
|
|
6
6
|
/**
|
|
7
7
|
*
|
|
8
8
|
* Anthropic Message Schemas
|
|
@@ -26,8 +26,11 @@ export type AnthropicMessage = z.infer<typeof anthropicMessageSchema>;
|
|
|
26
26
|
|
|
27
27
|
export const anthropicMessagesSchema = z.array(anthropicMessageSchema);
|
|
28
28
|
|
|
29
|
+
// Type assertion needed due to TypeScript's deep type instantiation limits with complex recursive schemas
|
|
30
|
+
// This is safe because zodToJsonSchema works correctly at runtime regardless of TypeScript's type analysis
|
|
29
31
|
export const anthropicMessagesJSONSchema = zodToJsonSchema(
|
|
30
|
-
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
anthropicMessagesSchema as any, // TODO: use zod4 toJSONSchema instead
|
|
31
34
|
{
|
|
32
35
|
removeAdditionalStrategy: "passthrough",
|
|
33
36
|
}
|