gepa-ts
Version:
TypeScript implementation of GEPA (Gradient-free Evolution of Prompts and Agents) - Complete port with 100% feature parity
38 lines • 1.94 kB
TypeScript
import { ComponentMap, RolloutOutput } from '../types/index.js';
export interface ProgramTrace {
i: number;
newProgramIdx?: number;
[key: string]: any;
}
export declare class GEPAState {
i: number;
totalNumEvals: number;
numFullDsEvals: number;
programs: ComponentMap[];
programParents: number[][];
programFullScoresValSet: number[];
programSubScoresValSet: number[][];
programOutputsValSet: RolloutOutput[][];
paretoFrontValset: number[];
programAtParetoFrontValset: Set<number>[];
fullProgramTrace: ProgramTrace[];
trackBestOutputs: boolean;
bestOutputsValset?: Array<Array<[number, RolloutOutput]>>;
constructor(trackBestOutputs?: boolean);
addProgram(program: ComponentMap, parentProgramIdx: number[], valsetScore: number, valsetOutputs: RolloutOutput[], valsetSubscores: number[], numMetricCallsByDiscovery: number): [number, number];
updateStateWithNewProgram(parentProgramIdx: number[], newProgram: ComponentMap, valsetScore: number, valsetOutputs: RolloutOutput[], valsetSubscores: number[], runDir: string | null, numMetricCallsByDiscoveryOfNewProgram: number): [number, number];
/**
* Get all programs that are on the Pareto front for at least one validation instance.
* This is used by merge proposer to select candidates.
*/
getParetoFrontPrograms(): ComponentMap[];
/**
* Check if a program dominates another on any validation instance
*/
isDominated(candidateIdx: number, byIdx: number): boolean;
isConsistent(): boolean;
save(runDir: string | null): void;
static load(runDir: string): GEPAState;
}
export declare function initializeGEPAState(runDir: string | null, seedCandidate: ComponentMap, valsetEvaluator: (prog: ComponentMap) => Promise<[RolloutOutput[], number[]]> | [RolloutOutput[], number[]], trackBestOutputs?: boolean): GEPAState | Promise<GEPAState>;
//# sourceMappingURL=state.d.ts.map