import type { EvaluateOptions } from '../evaluate/run.js'; import type { Dataset, DatasetExample, Evaluator, Experiment } from '../types/evaluate.js'; import type { CompletionRequest } from '../types/messages.js'; import type { PromptDefinition, PromptVersion, RenderOptions } from '../types/prompts.js'; import type { NexusResponse } from '../types/response.js'; /** Options for `evaluatePrompt()`: everything `evaluate()` takes, plus the model client and how inputs become variables. */ export interface EvaluatePromptOptions extends EvaluateOptions { /** Runs each rendered request. */ client: { complete(request: CompletionRequest): Promise; }; /** Turns an example's inputs into template variables. Defaults to the inputs themselves, or `{ input }` for a non-object. */ variables?: (inputs: unknown, example: DatasetExample) => Record; /** Render options, such as a model override for comparing models on one prompt. */ render?: RenderOptions; } /** * Runs a prompt version over a dataset and scores it: the headless playground. * * The experiment records the prompt's name and content version in `metadata.prompt`, which is what * `experimentGate()` looks for, so an experiment run here is what unlocks the promotion of the exact * version it ran. A prompt defined in code gets the same version it would get when committed. */ export declare function evaluatePrompt(prompt: PromptVersion | PromptDefinition | { definition: PromptDefinition; }, dataset: Dataset, evaluators: Array>, options: EvaluatePromptOptions): Promise;