add evaluations

This commit is contained in:
Kyle Corbitt
2023-07-06 13:39:13 -07:00
parent 1ae5612d55
commit f728027ef6
18 changed files with 614 additions and 68 deletions

View File

@@ -0,0 +1,40 @@
-- CreateEnum
CREATE TYPE "EvaluationMatchType" AS ENUM ('CONTAINS', 'DOES_NOT_CONTAIN');
-- CreateTable
CREATE TABLE "Evaluation" (
"id" UUID NOT NULL,
"name" TEXT NOT NULL,
"matchString" TEXT NOT NULL,
"matchType" "EvaluationMatchType" NOT NULL,
"experimentId" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Evaluation_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "EvaluationResult" (
"id" UUID NOT NULL,
"passCount" INTEGER NOT NULL,
"failCount" INTEGER NOT NULL,
"evaluationId" UUID NOT NULL,
"promptVariantId" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "EvaluationResult_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "EvaluationResult_evaluationId_promptVariantId_key" ON "EvaluationResult"("evaluationId", "promptVariantId");
-- AddForeignKey
ALTER TABLE "Evaluation" ADD CONSTRAINT "Evaluation_experimentId_fkey" FOREIGN KEY ("experimentId") REFERENCES "Experiment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "EvaluationResult" ADD CONSTRAINT "EvaluationResult_evaluationId_fkey" FOREIGN KEY ("evaluationId") REFERENCES "Evaluation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "EvaluationResult" ADD CONSTRAINT "EvaluationResult_promptVariantId_fkey" FOREIGN KEY ("promptVariantId") REFERENCES "PromptVariant"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -22,6 +22,7 @@ model Experiment {
TemplateVariable TemplateVariable[]
PromptVariant PromptVariant[]
TestScenario TestScenario[]
Evaluation Evaluation[]
}
model PromptVariant {
@@ -37,9 +38,10 @@ model PromptVariant {
experimentId String @db.Uuid
experiment Experiment @relation(fields: [experimentId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ModelOutput ModelOutput[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ModelOutput ModelOutput[]
EvaluationResult EvaluationResult[]
@@index([uiId])
}
@@ -80,7 +82,7 @@ model ModelOutput {
output Json
statusCode Int
errorMessage String?
timeToComplete Int @default(0)
timeToComplete Int @default(0)
promptTokens Int? // Added promptTokens field
completionTokens Int? // Added completionTokens field
@@ -98,6 +100,44 @@ model ModelOutput {
@@index([inputHash])
}
enum EvaluationMatchType {
CONTAINS
DOES_NOT_CONTAIN
}
model Evaluation {
id String @id @default(uuid()) @db.Uuid
name String
matchString String
matchType EvaluationMatchType
experimentId String @db.Uuid
experiment Experiment @relation(fields: [experimentId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
EvaluationResult EvaluationResult[]
}
model EvaluationResult {
id String @id @default(uuid()) @db.Uuid
passCount Int
failCount Int
evaluationId String @db.Uuid
evaluation Evaluation @relation(fields: [evaluationId], references: [id], onDelete: Cascade)
promptVariantId String @db.Uuid
promptVariant PromptVariant @relation(fields: [promptVariantId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([evaluationId, promptVariantId])
}
// Necessary for Next auth
model Account {
id String @id @default(cuid())