UNPKG

@arizeai/phoenix-client

Version:
81 lines 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.appendDatasetExamples = appendDatasetExamples; const tiny_invariant_1 = __importDefault(require("tiny-invariant")); const client_1 = require("../client"); const getDatasetInfo_1 = require("./getDatasetInfo"); /** * Append examples to an existing dataset. * * @experimental this interface may change in the future * * @param params - The parameters for appending examples * @param params.client - Optional Phoenix client instance * @param params.dataset - The dataset to append examples to (by ID or name) * @param params.examples - The examples to append. Each example can include: * - `input`: Required input data for the example * - `output`: Optional expected output data * - `metadata`: Optional metadata for the example * - `splits`: Optional split assignment (string, array of strings, or null) * - `spanId`: Optional OpenTelemetry span ID to link the example back to its source span * * @returns A promise that resolves to the dataset ID * * @example * ```ts * // Append examples with span links to an existing dataset * const { datasetId } = await appendDatasetExamples({ * dataset: { datasetName: "qa-dataset" }, * examples: [ * { * input: { question: "What is deep learning?" }, * output: { answer: "Deep learning is..." }, * spanId: "span123abc" // Links to the source span * } * ] * }); * ``` */ async function appendDatasetExamples({ client: _client, dataset, examples, }) { var _a; const client = _client || (0, client_1.createClient)(); const inputs = examples.map((example) => example.input); const outputs = examples.map((example) => { var _a; return (_a = example.output) !== null && _a !== void 0 ? _a : {}; }); // Treat null as an empty object const metadata = examples.map((example) => { var _a; return (_a = example.metadata) !== null && _a !== void 0 ? _a : {}; }); const splits = examples.map((example) => example.splits !== undefined ? example.splits : null); // Extract span IDs from examples, preserving null/undefined as null const spanIds = examples.map((example) => { var _a; return (_a = example === null || example === void 0 ? void 0 : example.spanId) !== null && _a !== void 0 ? _a : null; }); // Only include span_ids in the request if at least one example has a span ID const hasSpanIds = spanIds.some((id) => id !== null); let datasetName; if ("datasetName" in dataset) { datasetName = dataset.datasetName; } else { const datasetInfo = await (0, getDatasetInfo_1.getDatasetInfo)({ client, dataset, }); datasetName = datasetInfo.name; } const appendResponse = await client.POST("/v1/datasets/upload", { params: { query: { sync: true, }, }, body: Object.assign({ name: datasetName, action: "append", inputs, outputs, metadata, splits }, (hasSpanIds ? { span_ids: spanIds } : {})), }); (0, tiny_invariant_1.default)((_a = appendResponse.data) === null || _a === void 0 ? void 0 : _a.data, "Failed to append dataset examples"); const datasetId = appendResponse.data.data.dataset_id; return { datasetId, }; } //# sourceMappingURL=appendDatasetExamples.js.map