Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 68 additions & 1 deletion genkit-tools/common/src/types/eval.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ export const EvalFlowInputSchema = z.union([
]);
export type EvalFlowInput = z.infer<typeof EvalFlowInputSchema>;

/**
* Alias for EvalFlowInput to be used in the DatasetStore related APIs.
* We may deprecate EvalFlowInput in favor of this in the future.
*/
export type Dataset = z.infer<typeof EvalFlowInputSchema>;

/**
* A record that is ready for evaluation.
*
Expand Down Expand Up @@ -113,7 +119,7 @@ export const EvalRunSchema = z.object({
export type EvalRun = z.infer<typeof EvalRunSchema>;

/**
* Eval dataset store persistence interface.
* Eval store persistence interface.
*/
export interface EvalStore {
/**
Expand All @@ -135,3 +141,64 @@ export interface EvalStore {
*/
list(query?: ListEvalKeysRequest): Promise<ListEvalKeysResponse>;
}

/**
* Metadata for Dataset objects containing version, create and update time, etc.
*/
export const DatasetMetadaSchema = z.object({
/** autogenerated */
datasetId: z.string(),
size: z.number(),
uri: z.string(),
/** 1 for v1, 2 for v2, etc */
version: z.number(),
displayName: z.string().optional(),
createTime: z.string(),
updateTime: z.string(),
});
export type DatasetMetadata = z.infer<typeof DatasetMetadaSchema>;

export const UpdateDatasetRequestSchema = z.object({
/** Supports upsert */
patch: EvalFlowInputSchema,
displayName: z.string().optional(),
});
export type UpdateDatasetRequest = z.infer<typeof UpdateDatasetRequestSchema>;

/**
* Eval dataset store persistence interface.
*/
export interface DatasetStore {
/**
* Create new dataset with the given data
* @param data data containing eval flow inputs
* @returns dataset metadata
*/
createDataset(data: Dataset): Promise<DatasetMetadata>;

/**
* Update dataset
* @param req update requeest with new data
* @returns updated dataset metadata
*/
updateDataset(req: UpdateDatasetRequest): Promise<DatasetMetadata>;

/**
* Get existing dataset
* @param id the ID of the dataset
* @returns dataset ready for inference
*/
getDataset(id: string): Promise<Dataset>;

/**
* List all existing datasets
* @returns array of dataset metadata objects
*/
listDatasets(): Promise<DatasetMetadata[]>;

/**
* Delete existing dataset
* @param id the ID of the dataset
*/
deleteDataset(id: string): Promise<void>;
}