From 7d41e94ca2aed0708a22badc73392ab0b1a32711 Mon Sep 17 00:00:00 2001 From: Kyle Corbitt Date: Mon, 17 Jul 2023 17:55:36 -0700 Subject: [PATCH] cache eval outputs and add gpt4 eval --- .../migration.sql | 39 +++++++++ prisma/schema.prisma | 1 + src/components/AutoResizeTextArea.tsx | 2 +- .../OutputsTable/EditEvaluations.tsx | 48 ++++++++--- .../OutputsTable/EditScenarioVars.tsx | 5 +- .../OutputsTable/OutputCell/OutputStats.tsx | 24 ++++-- src/server/utils/evaluations.ts | 81 +----------------- src/server/utils/runOneEval.ts | 83 ++++++++++++++++--- 8 files changed, 168 insertions(+), 115 deletions(-) create mode 100644 prisma/migrations/20230718005301_add_gpt4_eval_type/migration.sql diff --git a/prisma/migrations/20230718005301_add_gpt4_eval_type/migration.sql b/prisma/migrations/20230718005301_add_gpt4_eval_type/migration.sql new file mode 100644 index 0000000..abbbafd --- /dev/null +++ b/prisma/migrations/20230718005301_add_gpt4_eval_type/migration.sql @@ -0,0 +1,39 @@ +/* + Warnings: + + - You are about to drop the `EvaluationResult` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- AlterEnum +ALTER TYPE "EvalType" ADD VALUE 'GPT4_EVAL'; + +-- DropForeignKey +ALTER TABLE "EvaluationResult" DROP CONSTRAINT "EvaluationResult_evaluationId_fkey"; + +-- DropForeignKey +ALTER TABLE "EvaluationResult" DROP CONSTRAINT "EvaluationResult_promptVariantId_fkey"; + +-- DropTable +DROP TABLE "EvaluationResult"; + +-- CreateTable +CREATE TABLE "OutputEvaluation" ( + "id" UUID NOT NULL, + "result" DOUBLE PRECISION NOT NULL, + "details" TEXT, + "modelOutputId" UUID NOT NULL, + "evaluationId" UUID NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "OutputEvaluation_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "OutputEvaluation_modelOutputId_evaluationId_key" ON "OutputEvaluation"("modelOutputId", "evaluationId"); + +-- AddForeignKey +ALTER TABLE "OutputEvaluation" ADD CONSTRAINT "OutputEvaluation_modelOutputId_fkey" FOREIGN KEY ("modelOutputId") REFERENCES "ModelOutput"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "OutputEvaluation" ADD CONSTRAINT "OutputEvaluation_evaluationId_fkey" FOREIGN KEY ("evaluationId") REFERENCES "Evaluation"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 119a78d..e8f8ea7 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -132,6 +132,7 @@ model ModelOutput { enum EvalType { CONTAINS DOES_NOT_CONTAIN + GPT4_EVAL } model Evaluation { diff --git a/src/components/AutoResizeTextArea.tsx b/src/components/AutoResizeTextArea.tsx index 54ec2e1..ac0e25a 100644 --- a/src/components/AutoResizeTextArea.tsx +++ b/src/components/AutoResizeTextArea.tsx @@ -4,7 +4,7 @@ import React from "react"; export const AutoResizeTextarea: React.ForwardRefRenderFunction< HTMLTextAreaElement, - TextareaProps + TextareaProps & { minRows?: number } > = (props, ref) => { return (