@arizeai/phoenix-client 5.2.0 → 5.3.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/dist/esm/__generated__/api/v1.d.ts +321 -9
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/client.d.ts +2 -2
- 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/datasets/appendDatasetExamples.d.ts +1 -1
- 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.map +1 -1
- package/dist/esm/datasets/createDataset.js.map +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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/listDatasets.d.ts +1 -1
- package/dist/esm/datasets/listDatasets.d.ts.map +1 -1
- package/dist/esm/datasets/listDatasets.js.map +1 -1
- package/dist/esm/experiments/createExperiment.d.ts +39 -0
- package/dist/esm/experiments/createExperiment.d.ts.map +1 -0
- package/dist/esm/experiments/createExperiment.js +43 -0
- package/dist/esm/experiments/createExperiment.js.map +1 -0
- package/dist/esm/experiments/deleteExperiment.d.ts +36 -0
- package/dist/esm/experiments/deleteExperiment.d.ts.map +1 -0
- package/dist/esm/experiments/deleteExperiment.js +49 -0
- package/dist/esm/experiments/deleteExperiment.js.map +1 -0
- 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.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.js +10 -3
- package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
- package/dist/esm/experiments/getExperimentRuns.d.ts.map +1 -1
- package/dist/esm/experiments/getExperimentRuns.js.map +1 -1
- package/dist/esm/experiments/index.d.ts +5 -0
- package/dist/esm/experiments/index.d.ts.map +1 -1
- package/dist/esm/experiments/index.js +5 -0
- package/dist/esm/experiments/index.js.map +1 -1
- package/dist/esm/experiments/listExperiments.d.ts +29 -0
- package/dist/esm/experiments/listExperiments.d.ts.map +1 -0
- package/dist/esm/experiments/listExperiments.js +59 -0
- package/dist/esm/experiments/listExperiments.js.map +1 -0
- package/dist/esm/experiments/resumeEvaluation.d.ts +105 -0
- package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -0
- package/dist/esm/experiments/resumeEvaluation.js +558 -0
- package/dist/esm/experiments/resumeEvaluation.js.map +1 -0
- package/dist/esm/experiments/resumeExperiment.d.ts +102 -0
- package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -0
- package/dist/esm/experiments/resumeExperiment.js +517 -0
- package/dist/esm/experiments/resumeExperiment.js.map +1 -0
- package/dist/esm/experiments/runExperiment.d.ts +2 -2
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +35 -9
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/prompts/createPrompt.d.ts +20 -2
- package/dist/esm/prompts/createPrompt.d.ts.map +1 -1
- package/dist/esm/prompts/createPrompt.js +14 -1
- package/dist/esm/prompts/createPrompt.js.map +1 -1
- package/dist/esm/prompts/sdks/toAI.d.ts +2 -2
- package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAI.js +1 -1
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- 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 +9 -9
- package/dist/esm/schemas/llm/constants.d.ts.map +1 -1
- package/dist/esm/schemas/llm/constants.js +8 -8
- package/dist/esm/schemas/llm/constants.js.map +1 -1
- package/dist/esm/schemas/llm/converters.d.ts +33 -33
- 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 +2 -2
- package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.js +3 -3
- 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 +2 -2
- 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 +5 -5
- 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 +2 -2
- 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.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 +12 -12
- package/dist/esm/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/schemas.js +8 -8
- package/dist/esm/schemas/llm/schemas.js.map +1 -1
- package/dist/esm/schemas/llm/types.d.ts +14 -14
- 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 +8 -8
- package/dist/esm/schemas/llm/utils.js.map +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts +8 -8
- 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 +8 -8
- 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.map +1 -1
- package/dist/esm/sessions/addSessionAnnotation.js.map +1 -1
- package/dist/esm/sessions/logSessionAnnotations.d.ts.map +1 -1
- package/dist/esm/sessions/logSessionAnnotations.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/spans/addSpanAnnotation.js.map +1 -1
- package/dist/esm/spans/getSpanAnnotations.d.ts +1 -1
- package/dist/esm/spans/getSpanAnnotations.d.ts.map +1 -1
- package/dist/esm/spans/getSpanAnnotations.js.map +1 -1
- package/dist/esm/spans/getSpans.d.ts +1 -1
- package/dist/esm/spans/getSpans.d.ts.map +1 -1
- package/dist/esm/spans/getSpans.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/spans/logSpanAnnotations.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/experiments.d.ts +60 -3
- package/dist/esm/types/experiments.d.ts.map +1 -1
- package/dist/esm/utils/channel.d.ts +229 -0
- package/dist/esm/utils/channel.d.ts.map +1 -0
- package/dist/esm/utils/channel.js +352 -0
- package/dist/esm/utils/channel.js.map +1 -0
- 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 +1 -1
- 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/isHttpError.d.ts +21 -0
- package/dist/esm/utils/isHttpError.d.ts.map +1 -0
- package/dist/esm/utils/isHttpError.js +33 -0
- package/dist/esm/utils/isHttpError.js.map +1 -0
- package/dist/src/__generated__/api/v1.d.ts +321 -9
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/client.d.ts +2 -2
- 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/datasets/appendDatasetExamples.d.ts +1 -1
- 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.map +1 -1
- package/dist/src/datasets/createDataset.js.map +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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/listDatasets.d.ts +1 -1
- package/dist/src/datasets/listDatasets.d.ts.map +1 -1
- package/dist/src/datasets/listDatasets.js.map +1 -1
- package/dist/src/experiments/createExperiment.d.ts +39 -0
- package/dist/src/experiments/createExperiment.d.ts.map +1 -0
- package/dist/src/experiments/createExperiment.js +43 -0
- package/dist/src/experiments/createExperiment.js.map +1 -0
- package/dist/src/experiments/deleteExperiment.d.ts +36 -0
- package/dist/src/experiments/deleteExperiment.d.ts.map +1 -0
- package/dist/src/experiments/deleteExperiment.js +52 -0
- package/dist/src/experiments/deleteExperiment.js.map +1 -0
- 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.map +1 -1
- package/dist/src/experiments/getExperimentInfo.js +10 -3
- package/dist/src/experiments/getExperimentInfo.js.map +1 -1
- package/dist/src/experiments/getExperimentRuns.d.ts.map +1 -1
- package/dist/src/experiments/getExperimentRuns.js.map +1 -1
- package/dist/src/experiments/index.d.ts +5 -0
- package/dist/src/experiments/index.d.ts.map +1 -1
- package/dist/src/experiments/index.js +5 -0
- package/dist/src/experiments/index.js.map +1 -1
- package/dist/src/experiments/listExperiments.d.ts +29 -0
- package/dist/src/experiments/listExperiments.d.ts.map +1 -0
- package/dist/src/experiments/listExperiments.js +66 -0
- package/dist/src/experiments/listExperiments.js.map +1 -0
- package/dist/src/experiments/resumeEvaluation.d.ts +105 -0
- package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -0
- package/dist/src/experiments/resumeEvaluation.js +584 -0
- package/dist/src/experiments/resumeEvaluation.js.map +1 -0
- package/dist/src/experiments/resumeExperiment.d.ts +102 -0
- package/dist/src/experiments/resumeExperiment.d.ts.map +1 -0
- package/dist/src/experiments/resumeExperiment.js +540 -0
- package/dist/src/experiments/resumeExperiment.js.map +1 -0
- package/dist/src/experiments/runExperiment.d.ts +2 -2
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +34 -8
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/prompts/createPrompt.d.ts +20 -2
- package/dist/src/prompts/createPrompt.d.ts.map +1 -1
- package/dist/src/prompts/createPrompt.js +14 -1
- package/dist/src/prompts/createPrompt.js.map +1 -1
- package/dist/src/prompts/sdks/toAI.d.ts +2 -2
- package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAI.js +1 -1
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- 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 +9 -9
- package/dist/src/schemas/llm/constants.d.ts.map +1 -1
- package/dist/src/schemas/llm/constants.js +12 -12
- package/dist/src/schemas/llm/constants.js.map +1 -1
- package/dist/src/schemas/llm/converters.d.ts +33 -33
- 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 +2 -2
- package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/converters.js +8 -8
- 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 +2 -2
- 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 +5 -5
- 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 +2 -2
- 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.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 +12 -12
- package/dist/src/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/schemas.js +16 -16
- package/dist/src/schemas/llm/schemas.js.map +1 -1
- package/dist/src/schemas/llm/types.d.ts +14 -14
- 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 +19 -19
- package/dist/src/schemas/llm/utils.js.map +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts +8 -8
- 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 +8 -8
- 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.map +1 -1
- package/dist/src/sessions/addSessionAnnotation.js.map +1 -1
- package/dist/src/sessions/logSessionAnnotations.d.ts.map +1 -1
- package/dist/src/sessions/logSessionAnnotations.js.map +1 -1
- 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.map +1 -1
- package/dist/src/spans/addSpanAnnotation.js.map +1 -1
- package/dist/src/spans/getSpanAnnotations.d.ts +1 -1
- package/dist/src/spans/getSpanAnnotations.d.ts.map +1 -1
- package/dist/src/spans/getSpanAnnotations.js.map +1 -1
- package/dist/src/spans/getSpans.d.ts +1 -1
- package/dist/src/spans/getSpans.d.ts.map +1 -1
- package/dist/src/spans/getSpans.js.map +1 -1
- 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.map +1 -1
- package/dist/src/spans/logSpanAnnotations.js.map +1 -1
- package/dist/src/types/experiments.d.ts +60 -3
- package/dist/src/types/experiments.d.ts.map +1 -1
- package/dist/src/utils/channel.d.ts +229 -0
- package/dist/src/utils/channel.d.ts.map +1 -0
- package/dist/src/utils/channel.js +385 -0
- package/dist/src/utils/channel.js.map +1 -0
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.js +1 -1
- package/dist/src/utils/formatPromptMessages.js.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts +1 -1
- 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/isHttpError.d.ts +21 -0
- package/dist/src/utils/isHttpError.d.ts.map +1 -0
- package/dist/src/utils/isHttpError.js +37 -0
- package/dist/src/utils/isHttpError.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/__generated__/api/v1.ts +321 -9
- package/src/client.ts +6 -5
- package/src/datasets/appendDatasetExamples.ts +4 -2
- package/src/datasets/createDataset.ts +1 -0
- package/src/datasets/createOrGetDataset.ts +2 -1
- package/src/datasets/getDataset.ts +2 -1
- package/src/datasets/getDatasetExamples.ts +4 -2
- package/src/datasets/getDatasetInfo.ts +4 -2
- package/src/datasets/listDatasets.ts +2 -1
- package/src/experiments/createExperiment.ts +90 -0
- package/src/experiments/deleteExperiment.ts +67 -0
- package/src/experiments/getExperiment.ts +1 -0
- package/src/experiments/getExperimentInfo.ts +11 -3
- package/src/experiments/getExperimentRuns.ts +3 -2
- package/src/experiments/index.ts +5 -0
- package/src/experiments/listExperiments.ts +83 -0
- package/src/experiments/resumeEvaluation.ts +799 -0
- package/src/experiments/resumeExperiment.ts +742 -0
- package/src/experiments/runExperiment.ts +55 -25
- package/src/prompts/createPrompt.ts +27 -9
- package/src/prompts/sdks/toAI.ts +6 -4
- package/src/prompts/sdks/toAnthropic.ts +7 -6
- package/src/prompts/sdks/toOpenAI.ts +10 -9
- package/src/prompts/sdks/toSDK.ts +5 -3
- package/src/prompts/sdks/types.ts +1 -0
- package/src/schemas/llm/anthropic/converters.ts +9 -7
- package/src/schemas/llm/anthropic/messagePartSchemas.ts +2 -1
- package/src/schemas/llm/anthropic/messageSchemas.ts +2 -2
- package/src/schemas/llm/anthropic/toolCallSchemas.ts +2 -1
- package/src/schemas/llm/anthropic/toolSchemas.ts +2 -1
- package/src/schemas/llm/constants.ts +14 -12
- package/src/schemas/llm/converters.ts +4 -3
- package/src/schemas/llm/openai/converters.ts +15 -13
- package/src/schemas/llm/openai/messageSchemas.ts +3 -3
- package/src/schemas/llm/openai/responseFormatSchema.ts +2 -1
- package/src/schemas/llm/openai/toolSchemas.ts +2 -1
- package/src/schemas/llm/phoenixPrompt/converters.ts +11 -10
- package/src/schemas/llm/phoenixPrompt/messagePartSchemas.ts +3 -2
- package/src/schemas/llm/phoenixPrompt/messageSchemas.ts +4 -3
- package/src/schemas/llm/phoenixPrompt/responseFormatSchema.ts +3 -2
- package/src/schemas/llm/phoenixPrompt/toolCallSchemas.ts +2 -2
- package/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.ts +3 -2
- package/src/schemas/llm/phoenixPrompt/toolSchemas.ts +3 -2
- package/src/schemas/llm/schemas.ts +9 -8
- package/src/schemas/llm/types.ts +17 -16
- package/src/schemas/llm/utils.ts +14 -12
- package/src/schemas/llm/vercel/messagePartSchemas.ts +2 -1
- package/src/schemas/llm/vercel/messageSchemas.ts +2 -2
- package/src/sessions/addSessionAnnotation.ts +1 -0
- package/src/sessions/logSessionAnnotations.ts +1 -0
- package/src/spans/addDocumentAnnotation.ts +1 -0
- package/src/spans/addSpanAnnotation.ts +1 -0
- package/src/spans/getSpanAnnotations.ts +1 -1
- package/src/spans/getSpans.ts +1 -1
- package/src/spans/logDocumentAnnotations.ts +1 -0
- package/src/spans/logSpanAnnotations.ts +1 -0
- package/src/types/experiments.ts +62 -3
- package/src/utils/channel.ts +397 -0
- package/src/utils/formatPromptMessages.ts +4 -3
- package/src/utils/getPromptBySelector.ts +4 -3
- package/src/utils/isHttpError.ts +45 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type DiagLogLevel } from "@arizeai/phoenix-otel";
|
|
2
|
+
import { ClientFn } from "../types/core.js";
|
|
3
|
+
import type { Evaluator, ExperimentTask } from "../types/experiments.js";
|
|
4
|
+
import { type Logger } from "../types/logger.js";
|
|
5
|
+
export type ResumeExperimentParams = ClientFn & {
|
|
6
|
+
/**
|
|
7
|
+
* The ID of the experiment to resume
|
|
8
|
+
*/
|
|
9
|
+
readonly experimentId: string;
|
|
10
|
+
/**
|
|
11
|
+
* The task to run on incomplete examples
|
|
12
|
+
*/
|
|
13
|
+
readonly task: ExperimentTask;
|
|
14
|
+
/**
|
|
15
|
+
* Optional evaluators to run on completed task runs
|
|
16
|
+
* @default undefined
|
|
17
|
+
*/
|
|
18
|
+
readonly evaluators?: readonly Evaluator[];
|
|
19
|
+
/**
|
|
20
|
+
* The logger to use
|
|
21
|
+
* @default console
|
|
22
|
+
*/
|
|
23
|
+
readonly logger?: Logger;
|
|
24
|
+
/**
|
|
25
|
+
* The number of concurrent task executions
|
|
26
|
+
* @default 5
|
|
27
|
+
*/
|
|
28
|
+
readonly concurrency?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to set the global tracer provider when running the task.
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
33
|
+
readonly setGlobalTracerProvider?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Whether to use batch span processor for tracing.
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
38
|
+
readonly useBatchSpanProcessor?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Log level to set for the default DiagConsoleLogger when tracing.
|
|
41
|
+
*/
|
|
42
|
+
readonly diagLogLevel?: DiagLogLevel;
|
|
43
|
+
/**
|
|
44
|
+
* Stop processing and exit as soon as any task fails.
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
readonly stopOnFirstError?: boolean;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Resume an incomplete experiment by running only the missing or failed runs.
|
|
51
|
+
*
|
|
52
|
+
* This function identifies which (example, repetition) pairs have not been completed
|
|
53
|
+
* (either missing or failed) and re-runs the task only for those pairs. Optionally,
|
|
54
|
+
* evaluators can be run on the completed runs after task execution.
|
|
55
|
+
*
|
|
56
|
+
* The function processes incomplete runs in batches using pagination to minimize memory usage.
|
|
57
|
+
*
|
|
58
|
+
* @throws {Error} Throws different error types based on failure:
|
|
59
|
+
* - "TaskFetchError": Unable to fetch incomplete runs from the server.
|
|
60
|
+
* Always thrown regardless of stopOnFirstError, as it indicates critical infrastructure failure.
|
|
61
|
+
* - "TaskAbortedError": stopOnFirstError=true and a task failed.
|
|
62
|
+
* Original error preserved in `cause` property.
|
|
63
|
+
* - Generic Error: Other task execution errors or unexpected failures.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { resumeExperiment } from "@arizeai/phoenix-client/experiments";
|
|
68
|
+
*
|
|
69
|
+
* // Resume an interrupted experiment
|
|
70
|
+
* try {
|
|
71
|
+
* await resumeExperiment({
|
|
72
|
+
* experimentId: "exp_123",
|
|
73
|
+
* task: myTask,
|
|
74
|
+
* });
|
|
75
|
+
* } catch (error) {
|
|
76
|
+
* // Handle by error name (no instanceof needed)
|
|
77
|
+
* if (error.name === "TaskFetchError") {
|
|
78
|
+
* console.error("Failed to connect to server:", error.cause);
|
|
79
|
+
* } else if (error.name === "TaskAbortedError") {
|
|
80
|
+
* console.error("Task stopped due to error:", error.cause);
|
|
81
|
+
* } else {
|
|
82
|
+
* console.error("Unexpected error:", error);
|
|
83
|
+
* }
|
|
84
|
+
* }
|
|
85
|
+
*
|
|
86
|
+
* // Resume with evaluators
|
|
87
|
+
* await resumeExperiment({
|
|
88
|
+
* experimentId: "exp_123",
|
|
89
|
+
* task: myTask,
|
|
90
|
+
* evaluators: [correctnessEvaluator, relevanceEvaluator],
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* // Stop on first error (useful for debugging)
|
|
94
|
+
* await resumeExperiment({
|
|
95
|
+
* experimentId: "exp_123",
|
|
96
|
+
* task: myTask,
|
|
97
|
+
* stopOnFirstError: true, // Exit immediately on first task failure
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function resumeExperiment({ client: _client, experimentId, task, evaluators, logger, concurrency, setGlobalTracerProvider, useBatchSpanProcessor, diagLogLevel, stopOnFirstError, }: ResumeExperimentParams): Promise<void>;
|
|
102
|
+
//# sourceMappingURL=resumeExperiment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumeExperiment.d.ts","sourceRoot":"","sources":["../../../src/experiments/resumeExperiment.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAsC9C,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG;IAC9C;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAgIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EAAE,OAAO,EACf,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,MAAgB,EAChB,WAAe,EACf,uBAA8B,EAC9B,qBAA4B,EAC5B,YAAY,EACZ,gBAAwB,GACzB,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqSxC"}
|
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import { MimeType, OpenInferenceSpanKind, SemanticConventions, } from "@arizeai/openinference-semantic-conventions";
|
|
2
|
+
import { objectAsAttributes, register, SpanStatusCode, } from "@arizeai/phoenix-otel";
|
|
3
|
+
import { createClient } from "../client.js";
|
|
4
|
+
import { Channel, ChannelError } from "../utils/channel.js";
|
|
5
|
+
import { ensureString } from "../utils/ensureString.js";
|
|
6
|
+
import { isHttpErrorWithStatus } from "../utils/isHttpError.js";
|
|
7
|
+
import { toObjectHeaders } from "../utils/toObjectHeaders.js";
|
|
8
|
+
import { getDatasetExperimentsUrl, getExperimentUrl } from "../utils/urlUtils.js";
|
|
9
|
+
import { getExperimentInfo } from "./getExperimentInfo.js";
|
|
10
|
+
import { resumeEvaluation } from "./resumeEvaluation.js";
|
|
11
|
+
import invariant from "tiny-invariant";
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when task is aborted due to a failure in stopOnFirstError mode.
|
|
14
|
+
* This provides semantic context that the abort was intentional, not an infrastructure failure.
|
|
15
|
+
* @internal - Not exported to minimize API surface area
|
|
16
|
+
*/
|
|
17
|
+
class TaskAbortedError extends Error {
|
|
18
|
+
constructor(message, cause) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = "TaskAbortedError";
|
|
21
|
+
this.cause = cause;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Error thrown when the producer fails to fetch incomplete runs from the server.
|
|
26
|
+
* This is a critical error that should always be surfaced, even in stopOnFirstError=false mode.
|
|
27
|
+
* @internal - Not exported to minimize API surface area
|
|
28
|
+
*/
|
|
29
|
+
class TaskFetchError extends Error {
|
|
30
|
+
constructor(message, cause) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "TaskFetchError";
|
|
33
|
+
this.cause = cause;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
37
|
+
/**
|
|
38
|
+
* Channel capacity multiplier for producer-consumer buffering.
|
|
39
|
+
* A value of 2 enables pipeline efficiency: workers process batch N while
|
|
40
|
+
* the producer fetches batch N+1, eliminating idle time without excessive
|
|
41
|
+
* memory usage. The channel blocks when full, providing natural backpressure.
|
|
42
|
+
*/
|
|
43
|
+
const CHANNEL_CAPACITY_MULTIPLIER = 2;
|
|
44
|
+
/**
|
|
45
|
+
* Transforms API incomplete run response to ExampleWithId
|
|
46
|
+
*/
|
|
47
|
+
function buildExampleFromApiResponse(apiExample) {
|
|
48
|
+
return {
|
|
49
|
+
id: apiExample.id,
|
|
50
|
+
input: apiExample.input,
|
|
51
|
+
output: apiExample.output || null,
|
|
52
|
+
metadata: apiExample.metadata || {},
|
|
53
|
+
updatedAt: new Date(apiExample.updated_at),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Handles fetch errors with helpful version information for unsupported features
|
|
58
|
+
*/
|
|
59
|
+
async function handleFetchError(error, client, featureName) {
|
|
60
|
+
// Check if this is a JSON parse error (likely 404 HTML response from old server)
|
|
61
|
+
const isJsonError = error instanceof SyntaxError &&
|
|
62
|
+
error.message.toLowerCase().includes("json");
|
|
63
|
+
if (isJsonError) {
|
|
64
|
+
// Fetch server version to provide helpful context
|
|
65
|
+
let versionInfo = "";
|
|
66
|
+
try {
|
|
67
|
+
const baseUrl = client.config.baseUrl || "";
|
|
68
|
+
const versionRes = await fetch(`${baseUrl}/arize_phoenix_version`);
|
|
69
|
+
if (versionRes.ok) {
|
|
70
|
+
const version = await versionRes.text();
|
|
71
|
+
versionInfo = ` Your current server version is ${version}.`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Ignore errors fetching version
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`The ${featureName} feature is not available on this Phoenix server. ` +
|
|
78
|
+
"Please upgrade your Phoenix server to use this feature." +
|
|
79
|
+
versionInfo);
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Sets up OpenTelemetry tracer for experiment tracing
|
|
85
|
+
*/
|
|
86
|
+
function setupTracer({ projectName, baseUrl, headers, useBatchSpanProcessor, diagLogLevel, setGlobalTracerProvider, }) {
|
|
87
|
+
if (!projectName) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const provider = register({
|
|
91
|
+
projectName,
|
|
92
|
+
url: baseUrl,
|
|
93
|
+
headers,
|
|
94
|
+
batch: useBatchSpanProcessor,
|
|
95
|
+
diagLogLevel,
|
|
96
|
+
global: setGlobalTracerProvider,
|
|
97
|
+
});
|
|
98
|
+
const tracer = provider.getTracer(projectName);
|
|
99
|
+
return { provider, tracer };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Prints experiment summary to logger
|
|
103
|
+
*/
|
|
104
|
+
function printExperimentSummary({ logger, experimentId, totalProcessed, totalCompleted, }) {
|
|
105
|
+
logger.info("\n" + "=".repeat(70));
|
|
106
|
+
logger.info("📊 Experiment Resume Summary");
|
|
107
|
+
logger.info("=".repeat(70));
|
|
108
|
+
logger.info(`Experiment ID: ${experimentId}`);
|
|
109
|
+
logger.info(`Incomplete runs processed: ${totalProcessed}`);
|
|
110
|
+
logger.info(`Successfully completed: ${totalCompleted}`);
|
|
111
|
+
logger.info("=".repeat(70));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Resume an incomplete experiment by running only the missing or failed runs.
|
|
115
|
+
*
|
|
116
|
+
* This function identifies which (example, repetition) pairs have not been completed
|
|
117
|
+
* (either missing or failed) and re-runs the task only for those pairs. Optionally,
|
|
118
|
+
* evaluators can be run on the completed runs after task execution.
|
|
119
|
+
*
|
|
120
|
+
* The function processes incomplete runs in batches using pagination to minimize memory usage.
|
|
121
|
+
*
|
|
122
|
+
* @throws {Error} Throws different error types based on failure:
|
|
123
|
+
* - "TaskFetchError": Unable to fetch incomplete runs from the server.
|
|
124
|
+
* Always thrown regardless of stopOnFirstError, as it indicates critical infrastructure failure.
|
|
125
|
+
* - "TaskAbortedError": stopOnFirstError=true and a task failed.
|
|
126
|
+
* Original error preserved in `cause` property.
|
|
127
|
+
* - Generic Error: Other task execution errors or unexpected failures.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* import { resumeExperiment } from "@arizeai/phoenix-client/experiments";
|
|
132
|
+
*
|
|
133
|
+
* // Resume an interrupted experiment
|
|
134
|
+
* try {
|
|
135
|
+
* await resumeExperiment({
|
|
136
|
+
* experimentId: "exp_123",
|
|
137
|
+
* task: myTask,
|
|
138
|
+
* });
|
|
139
|
+
* } catch (error) {
|
|
140
|
+
* // Handle by error name (no instanceof needed)
|
|
141
|
+
* if (error.name === "TaskFetchError") {
|
|
142
|
+
* console.error("Failed to connect to server:", error.cause);
|
|
143
|
+
* } else if (error.name === "TaskAbortedError") {
|
|
144
|
+
* console.error("Task stopped due to error:", error.cause);
|
|
145
|
+
* } else {
|
|
146
|
+
* console.error("Unexpected error:", error);
|
|
147
|
+
* }
|
|
148
|
+
* }
|
|
149
|
+
*
|
|
150
|
+
* // Resume with evaluators
|
|
151
|
+
* await resumeExperiment({
|
|
152
|
+
* experimentId: "exp_123",
|
|
153
|
+
* task: myTask,
|
|
154
|
+
* evaluators: [correctnessEvaluator, relevanceEvaluator],
|
|
155
|
+
* });
|
|
156
|
+
*
|
|
157
|
+
* // Stop on first error (useful for debugging)
|
|
158
|
+
* await resumeExperiment({
|
|
159
|
+
* experimentId: "exp_123",
|
|
160
|
+
* task: myTask,
|
|
161
|
+
* stopOnFirstError: true, // Exit immediately on first task failure
|
|
162
|
+
* });
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export async function resumeExperiment({ client: _client, experimentId, task, evaluators, logger = console, concurrency = 5, setGlobalTracerProvider = true, useBatchSpanProcessor = true, diagLogLevel, stopOnFirstError = false, }) {
|
|
166
|
+
const client = _client ?? createClient();
|
|
167
|
+
const pageSize = DEFAULT_PAGE_SIZE;
|
|
168
|
+
// Get experiment info
|
|
169
|
+
logger.info(`🔍 Fetching experiment info...`);
|
|
170
|
+
const experiment = await getExperimentInfo({ client, experimentId });
|
|
171
|
+
// Check if there are incomplete runs
|
|
172
|
+
const totalExpected = experiment.exampleCount * experiment.repetitions;
|
|
173
|
+
const incompleteCount = totalExpected - experiment.successfulRunCount;
|
|
174
|
+
if (incompleteCount === 0) {
|
|
175
|
+
logger.info("✅ No incomplete runs found. Experiment is already complete.");
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
logger.info(`🧪 Resuming experiment with ${incompleteCount} incomplete runs...`);
|
|
179
|
+
// Get base URL for tracing and URL generation
|
|
180
|
+
const baseUrl = client.config.baseUrl;
|
|
181
|
+
invariant(baseUrl, "Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client.");
|
|
182
|
+
// Initialize tracer (only if experiment has a project_name)
|
|
183
|
+
const tracerSetup = setupTracer({
|
|
184
|
+
projectName: experiment.projectName,
|
|
185
|
+
baseUrl,
|
|
186
|
+
headers: client.config.headers
|
|
187
|
+
? toObjectHeaders(client.config.headers)
|
|
188
|
+
: undefined,
|
|
189
|
+
useBatchSpanProcessor,
|
|
190
|
+
diagLogLevel,
|
|
191
|
+
setGlobalTracerProvider,
|
|
192
|
+
});
|
|
193
|
+
const provider = tracerSetup?.provider ?? null;
|
|
194
|
+
const taskTracer = tracerSetup?.tracer ?? null;
|
|
195
|
+
// Display URLs
|
|
196
|
+
const datasetExperimentsUrl = getDatasetExperimentsUrl({
|
|
197
|
+
baseUrl,
|
|
198
|
+
datasetId: experiment.datasetId,
|
|
199
|
+
});
|
|
200
|
+
const experimentUrl = getExperimentUrl({
|
|
201
|
+
baseUrl,
|
|
202
|
+
datasetId: experiment.datasetId,
|
|
203
|
+
experimentId: experiment.id,
|
|
204
|
+
});
|
|
205
|
+
logger.info(`📺 View dataset experiments: ${datasetExperimentsUrl}`);
|
|
206
|
+
logger.info(`🔗 View this experiment: ${experimentUrl}`);
|
|
207
|
+
// Create a CSP-style bounded buffer for task distribution
|
|
208
|
+
const taskChannel = new Channel(pageSize * CHANNEL_CAPACITY_MULTIPLIER);
|
|
209
|
+
// Abort controller for stopOnFirstError coordination
|
|
210
|
+
const abortController = new AbortController();
|
|
211
|
+
const { signal } = abortController;
|
|
212
|
+
let totalProcessed = 0;
|
|
213
|
+
let totalCompleted = 0;
|
|
214
|
+
let totalFailed = 0;
|
|
215
|
+
// Producer: Fetch incomplete runs and send to channel
|
|
216
|
+
async function fetchIncompleteRuns() {
|
|
217
|
+
let cursor = null;
|
|
218
|
+
try {
|
|
219
|
+
do {
|
|
220
|
+
// Stop fetching if abort signal received
|
|
221
|
+
if (signal.aborted) {
|
|
222
|
+
logger.info("🛑 Stopping fetch due to error in task");
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
let res;
|
|
226
|
+
try {
|
|
227
|
+
res = await client.GET("/v1/experiments/{experiment_id}/incomplete-runs", {
|
|
228
|
+
params: {
|
|
229
|
+
path: {
|
|
230
|
+
experiment_id: experimentId,
|
|
231
|
+
},
|
|
232
|
+
query: {
|
|
233
|
+
cursor,
|
|
234
|
+
limit: pageSize,
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
// Check for version compatibility issues and throw helpful error
|
|
241
|
+
try {
|
|
242
|
+
await handleFetchError(error, client, "resume_experiment");
|
|
243
|
+
// TypeScript: handleFetchError never returns, but add throw for safety
|
|
244
|
+
throw new Error("handleFetchError should never return");
|
|
245
|
+
}
|
|
246
|
+
catch (handledError) {
|
|
247
|
+
// Wrap the error (from handleFetchError or original) in semantic error type
|
|
248
|
+
throw new TaskFetchError("Failed to fetch incomplete runs from server", handledError instanceof Error ? handledError : undefined);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
cursor = res.data?.next_cursor ?? null;
|
|
252
|
+
const batchIncomplete = res.data?.data;
|
|
253
|
+
invariant(batchIncomplete, "Failed to fetch incomplete runs");
|
|
254
|
+
if (batchIncomplete.length === 0) {
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
// Send tasks to channel (blocks if channel is full - natural backpressure!)
|
|
258
|
+
let batchCount = 0;
|
|
259
|
+
for (const incomplete of batchIncomplete) {
|
|
260
|
+
// Stop sending items if abort signal received
|
|
261
|
+
if (signal.aborted) {
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
const example = buildExampleFromApiResponse(incomplete.dataset_example);
|
|
265
|
+
for (const repNum of incomplete.repetition_numbers) {
|
|
266
|
+
// Stop sending items if abort signal received
|
|
267
|
+
if (signal.aborted) {
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
await taskChannel.send({ example, repetitionNumber: repNum });
|
|
271
|
+
batchCount++;
|
|
272
|
+
totalProcessed++;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
logger.info(`Fetched batch of ${batchCount} incomplete runs (channel buffer: ${taskChannel.length})`);
|
|
276
|
+
} while (cursor !== null && !signal.aborted);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// Re-throw with context preservation
|
|
280
|
+
if (error instanceof TaskFetchError) {
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
// ChannelError from blocked send() should bubble up naturally
|
|
284
|
+
// (happens when channel closes while producer is blocked)
|
|
285
|
+
if (error instanceof ChannelError) {
|
|
286
|
+
throw error;
|
|
287
|
+
}
|
|
288
|
+
// Wrap any unexpected errors from channel operations
|
|
289
|
+
throw new TaskFetchError("Unexpected error during task fetch", error instanceof Error ? error : undefined);
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
taskChannel.close(); // Signal workers we're done
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Worker: Process tasks from channel
|
|
296
|
+
async function processTasksFromChannel() {
|
|
297
|
+
for await (const item of taskChannel) {
|
|
298
|
+
// Stop processing if abort signal received
|
|
299
|
+
if (signal.aborted) {
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
try {
|
|
303
|
+
await runSingleTask({
|
|
304
|
+
client,
|
|
305
|
+
experimentId,
|
|
306
|
+
task,
|
|
307
|
+
example: item.example,
|
|
308
|
+
repetitionNumber: item.repetitionNumber,
|
|
309
|
+
tracer: taskTracer,
|
|
310
|
+
});
|
|
311
|
+
totalCompleted++;
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
totalFailed++;
|
|
315
|
+
logger.error(`Failed to run task for example ${item.example.id}, repetition ${item.repetitionNumber}: ${error}`);
|
|
316
|
+
// If stopOnFirstError is enabled, abort and re-throw
|
|
317
|
+
if (stopOnFirstError) {
|
|
318
|
+
logger.error("🛑 Stopping on first error");
|
|
319
|
+
abortController.abort();
|
|
320
|
+
throw error;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Start concurrent execution
|
|
326
|
+
// Wrap in try-finally to ensure channel is always closed, even if Promise.all throws
|
|
327
|
+
let executionError = null;
|
|
328
|
+
try {
|
|
329
|
+
const producerTask = fetchIncompleteRuns();
|
|
330
|
+
const workerTasks = Array.from({ length: concurrency }, () => processTasksFromChannel());
|
|
331
|
+
// Wait for producer and all workers to finish
|
|
332
|
+
await Promise.all([producerTask, ...workerTasks]);
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
// Classify and handle errors based on their nature
|
|
336
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
337
|
+
// Always surface producer/infrastructure errors
|
|
338
|
+
if (error instanceof TaskFetchError) {
|
|
339
|
+
// Producer failed - this is ALWAYS critical regardless of stopOnFirstError
|
|
340
|
+
logger.error(`❌ Critical: Failed to fetch incomplete runs from server`);
|
|
341
|
+
executionError = err;
|
|
342
|
+
}
|
|
343
|
+
else if (error instanceof ChannelError && signal.aborted) {
|
|
344
|
+
// Channel closed due to intentional abort - wrap in semantic error
|
|
345
|
+
executionError = new TaskAbortedError("Task execution stopped due to error in concurrent worker", err);
|
|
346
|
+
}
|
|
347
|
+
else if (stopOnFirstError) {
|
|
348
|
+
// Worker error in stopOnFirstError mode - already logged by worker
|
|
349
|
+
executionError = err;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
// Unexpected error (not from worker, not from producer fetch)
|
|
353
|
+
// This could be a bug in our code or infrastructure failure
|
|
354
|
+
logger.error(`❌ Unexpected error during task execution: ${err.message}`);
|
|
355
|
+
executionError = err;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
finally {
|
|
359
|
+
// Ensure channel is closed even if there are unexpected errors
|
|
360
|
+
// This is a safety net in case producer's finally block didn't execute
|
|
361
|
+
if (!taskChannel.isClosed) {
|
|
362
|
+
taskChannel.close();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Only show completion message if we didn't stop on error
|
|
366
|
+
if (!executionError) {
|
|
367
|
+
logger.info(`✅ Task runs completed.`);
|
|
368
|
+
}
|
|
369
|
+
if (totalFailed > 0 && !executionError) {
|
|
370
|
+
logger.info(`⚠️ Warning: ${totalFailed} out of ${totalProcessed} runs failed.`);
|
|
371
|
+
}
|
|
372
|
+
// Run evaluators if provided (only on runs missing evaluations)
|
|
373
|
+
// Skip evaluators if we stopped on error
|
|
374
|
+
if (evaluators && evaluators.length > 0 && !executionError) {
|
|
375
|
+
logger.info(`\n🔬 Running evaluators...`);
|
|
376
|
+
await resumeEvaluation({
|
|
377
|
+
experimentId,
|
|
378
|
+
evaluators: [...evaluators],
|
|
379
|
+
client,
|
|
380
|
+
logger,
|
|
381
|
+
concurrency,
|
|
382
|
+
setGlobalTracerProvider,
|
|
383
|
+
useBatchSpanProcessor,
|
|
384
|
+
diagLogLevel,
|
|
385
|
+
stopOnFirstError,
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
// Print summary
|
|
389
|
+
printExperimentSummary({
|
|
390
|
+
logger,
|
|
391
|
+
experimentId: experiment.id,
|
|
392
|
+
totalProcessed,
|
|
393
|
+
totalCompleted,
|
|
394
|
+
});
|
|
395
|
+
// Flush spans (if tracer was initialized)
|
|
396
|
+
if (provider) {
|
|
397
|
+
await provider.forceFlush();
|
|
398
|
+
}
|
|
399
|
+
// Re-throw error if stopOnFirstError was triggered
|
|
400
|
+
if (executionError) {
|
|
401
|
+
throw executionError;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Record task result to API (without executing the task).
|
|
406
|
+
*/
|
|
407
|
+
async function recordTaskResult({ client, experimentId, example, repetitionNumber, output, error, startTime, endTime, traceId = null, }) {
|
|
408
|
+
try {
|
|
409
|
+
await client.POST("/v1/experiments/{experiment_id}/runs", {
|
|
410
|
+
params: {
|
|
411
|
+
path: {
|
|
412
|
+
experiment_id: experimentId,
|
|
413
|
+
},
|
|
414
|
+
},
|
|
415
|
+
body: {
|
|
416
|
+
dataset_example_id: example.id,
|
|
417
|
+
repetition_number: repetitionNumber,
|
|
418
|
+
output: output,
|
|
419
|
+
start_time: startTime.toISOString(),
|
|
420
|
+
end_time: endTime.toISOString(),
|
|
421
|
+
error: error ? ensureString(error) : undefined,
|
|
422
|
+
trace_id: traceId,
|
|
423
|
+
},
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
catch (err) {
|
|
427
|
+
// Ignore 409 Conflict - result already exists (idempotency)
|
|
428
|
+
if (isHttpErrorWithStatus(err, 409)) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
throw err; // Re-throw other errors
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Run a single task and record the result with optional tracing.
|
|
436
|
+
*/
|
|
437
|
+
async function runSingleTask({ client, experimentId, task, example, repetitionNumber, tracer, }) {
|
|
438
|
+
const startTime = new Date();
|
|
439
|
+
// If no tracer (no project_name), execute without tracing
|
|
440
|
+
if (!tracer) {
|
|
441
|
+
let output = null; // Initialize to null for failed tasks
|
|
442
|
+
let error;
|
|
443
|
+
try {
|
|
444
|
+
output = await Promise.resolve(task(example));
|
|
445
|
+
}
|
|
446
|
+
catch (err) {
|
|
447
|
+
error = err instanceof Error ? err.message : String(err);
|
|
448
|
+
throw err;
|
|
449
|
+
}
|
|
450
|
+
finally {
|
|
451
|
+
const endTime = new Date();
|
|
452
|
+
await recordTaskResult({
|
|
453
|
+
client,
|
|
454
|
+
experimentId,
|
|
455
|
+
example,
|
|
456
|
+
repetitionNumber,
|
|
457
|
+
output,
|
|
458
|
+
error,
|
|
459
|
+
startTime,
|
|
460
|
+
endTime,
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
// With tracer: wrap execution in a span for observability
|
|
466
|
+
return tracer.startActiveSpan(`Task: ${task.name || "anonymous"}`, async (span) => {
|
|
467
|
+
// Set span attributes
|
|
468
|
+
span.setAttributes({
|
|
469
|
+
[SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.CHAIN,
|
|
470
|
+
[SemanticConventions.INPUT_VALUE]: ensureString(example.input),
|
|
471
|
+
[SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON,
|
|
472
|
+
...objectAsAttributes({
|
|
473
|
+
experiment_id: experimentId,
|
|
474
|
+
dataset_example_id: example.id,
|
|
475
|
+
repetition_number: repetitionNumber,
|
|
476
|
+
}),
|
|
477
|
+
});
|
|
478
|
+
let output = null; // Initialize to null for failed tasks
|
|
479
|
+
let error;
|
|
480
|
+
try {
|
|
481
|
+
// Execute the task (only once!)
|
|
482
|
+
output = await Promise.resolve(task(example));
|
|
483
|
+
// Set output attributes
|
|
484
|
+
span.setAttributes({
|
|
485
|
+
[SemanticConventions.OUTPUT_VALUE]: ensureString(output),
|
|
486
|
+
[SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
|
|
487
|
+
});
|
|
488
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
489
|
+
}
|
|
490
|
+
catch (err) {
|
|
491
|
+
error = err instanceof Error ? err.message : String(err);
|
|
492
|
+
span.setStatus({
|
|
493
|
+
code: SpanStatusCode.ERROR,
|
|
494
|
+
message: error,
|
|
495
|
+
});
|
|
496
|
+
span.recordException(err);
|
|
497
|
+
throw err;
|
|
498
|
+
}
|
|
499
|
+
finally {
|
|
500
|
+
const endTime = new Date();
|
|
501
|
+
span.end();
|
|
502
|
+
// Record result to API
|
|
503
|
+
await recordTaskResult({
|
|
504
|
+
client,
|
|
505
|
+
experimentId,
|
|
506
|
+
example,
|
|
507
|
+
repetitionNumber,
|
|
508
|
+
output,
|
|
509
|
+
error,
|
|
510
|
+
startTime,
|
|
511
|
+
endTime,
|
|
512
|
+
traceId: span.spanContext().traceId,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
//# sourceMappingURL=resumeExperiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumeExperiment.js","sourceRoot":"","sources":["../../../src/experiments/resumeExperiment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { type DiagLogLevel, NodeTracerProvider } from "@arizeai/phoenix-otel";
|
|
1
2
|
import { type PhoenixClient } from "../client.js";
|
|
3
|
+
import { AnnotatorKind } from "../types/annotations.js";
|
|
2
4
|
import { ClientFn } from "../types/core.js";
|
|
3
5
|
import { DatasetSelector } from "../types/datasets.js";
|
|
4
6
|
import type { Evaluator, ExperimentTask, RanExperiment } from "../types/experiments.js";
|
|
5
7
|
import { type Logger } from "../types/logger.js";
|
|
6
|
-
import { AnnotatorKind } from "../types/annotations.js";
|
|
7
|
-
import { type DiagLogLevel, NodeTracerProvider } from "@arizeai/phoenix-otel";
|
|
8
8
|
/**
|
|
9
9
|
* Parameters for running an experiment.
|
|
10
10
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runExperiment.d.ts","sourceRoot":"","sources":["../../../src/experiments/runExperiment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runExperiment.d.ts","sourceRoot":"","sources":["../../../src/experiments/runExperiment.ts"],"names":[],"mappings":"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"}
|