Make it so you can't delete the last prompt or scenario

No reason for an experiment to have 0 prompts or 0 scenarios and it makes the UI look bad.
This commit is contained in:
Kyle Corbitt
2023-07-14 15:49:42 -07:00
parent b98eb9b729
commit 26ee8698be
8 changed files with 77 additions and 40 deletions

View File

@@ -74,15 +74,23 @@ export const experimentsRouter = createTRPCRouter({
constructFn: dedent`prompt = {
model: "gpt-3.5-turbo-0613",
stream: true,
messages: [{ role: "system", content: "Return 'Ready to go!'" }],
messages: [{ role: "system", content: ${"`Return '${scenario.text}'`"} }],
}`,
model: "gpt-3.5-turbo-0613",
},
}),
prisma.templateVariable.create({
data: {
experimentId: exp.id,
label: "text",
},
}),
prisma.testScenario.create({
data: {
experimentId: exp.id,
variableValues: {},
variableValues: {
text: "This is a test scenario.",
},
},
}),
]);

View File

@@ -1,3 +1,4 @@
import dedent from "dedent";
import { isObject } from "lodash";
import { z } from "zod";
import { createTRPCRouter, publicProcedure } from "~/server/api/trpc";
@@ -113,7 +114,18 @@ export const promptVariantsRouter = createTRPCRouter({
experimentId: input.experimentId,
label: `Prompt Variant ${largestSortIndex + 2}`,
sortIndex: (lastVariant?.sortIndex ?? 0) + 1,
constructFn: lastVariant?.constructFn ?? "",
constructFn:
lastVariant?.constructFn ??
dedent`
prompt = {
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "Return 'Hello, world!'",
}
]
}`,
model: lastVariant?.model ?? "gpt-3.5-turbo",
},
});

View File

@@ -9,7 +9,7 @@ export async function constructPrompt(
scenario: TestScenario["variableValues"],
): Promise<JSONSerializable> {
const code = `
const scenario = ${JSON.stringify(scenario, null, 2)};
const scenario = ${JSON.stringify(scenario ?? {}, null, 2)};
let prompt
${variant.constructFn}