143 lines
2.6 KiB
TypeScript
143 lines
2.6 KiB
TypeScript
import { prisma } from "~/server/db";
|
|
import dedent from "dedent";
|
|
import { generateNewCell } from "~/server/utils/generateNewCell";
|
|
|
|
const experimentId = "11111111-1111-1111-1111-111111111111";
|
|
|
|
// Delete the existing experiment
|
|
await prisma.experiment.deleteMany({
|
|
where: {
|
|
id: experimentId,
|
|
},
|
|
});
|
|
|
|
await prisma.experiment.create({
|
|
data: {
|
|
id: experimentId,
|
|
label: "Country Capitals Example",
|
|
},
|
|
});
|
|
|
|
await prisma.scenarioVariantCell.deleteMany({
|
|
where: {
|
|
promptVariant: {
|
|
experimentId,
|
|
},
|
|
},
|
|
});
|
|
|
|
await prisma.promptVariant.deleteMany({
|
|
where: {
|
|
experimentId,
|
|
},
|
|
});
|
|
|
|
await prisma.promptVariant.createMany({
|
|
data: [
|
|
{
|
|
experimentId,
|
|
label: "Prompt Variant 1",
|
|
sortIndex: 0,
|
|
model: "gpt-3.5-turbo-0613",
|
|
constructFn: dedent`
|
|
prompt = {
|
|
model: "gpt-3.5-turbo-0613",
|
|
messages: [
|
|
{
|
|
role: "user",
|
|
content: \`What is the capital of ${"$"}{scenario.country}?\`
|
|
}
|
|
],
|
|
temperature: 0,
|
|
}`,
|
|
},
|
|
{
|
|
experimentId,
|
|
label: "Prompt Variant 2",
|
|
sortIndex: 1,
|
|
model: "gpt-3.5-turbo-0613",
|
|
constructFn: dedent`
|
|
prompt = {
|
|
model: "gpt-3.5-turbo-0613",
|
|
messages: [
|
|
{
|
|
role: "user",
|
|
content: \`What is the capital of ${"$"}{scenario.country}? Return just the city name and nothing else.\`
|
|
}
|
|
],
|
|
temperature: 0,
|
|
}`,
|
|
},
|
|
],
|
|
});
|
|
|
|
await prisma.templateVariable.deleteMany({
|
|
where: {
|
|
experimentId,
|
|
},
|
|
});
|
|
|
|
await prisma.templateVariable.createMany({
|
|
data: [
|
|
{
|
|
experimentId,
|
|
label: "country",
|
|
},
|
|
],
|
|
});
|
|
|
|
await prisma.testScenario.deleteMany({
|
|
where: {
|
|
experimentId,
|
|
},
|
|
});
|
|
|
|
await prisma.testScenario.createMany({
|
|
data: [
|
|
{
|
|
experimentId,
|
|
sortIndex: 0,
|
|
variableValues: {
|
|
country: "Spain",
|
|
},
|
|
},
|
|
{
|
|
experimentId,
|
|
sortIndex: 1,
|
|
variableValues: {
|
|
country: "USA",
|
|
},
|
|
},
|
|
{
|
|
experimentId,
|
|
sortIndex: 2,
|
|
variableValues: {
|
|
country: "Chile",
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
const variants = await prisma.promptVariant.findMany({
|
|
where: {
|
|
experimentId,
|
|
},
|
|
});
|
|
|
|
const scenarios = await prisma.testScenario.findMany({
|
|
where: {
|
|
experimentId,
|
|
},
|
|
});
|
|
|
|
await Promise.all(
|
|
variants
|
|
.flatMap((variant) =>
|
|
scenarios.map((scenario) => ({
|
|
promptVariantId: variant.id,
|
|
testScenarioId: scenario.id,
|
|
})),
|
|
)
|
|
.map((cell) => generateNewCell(cell.promptVariantId, cell.testScenarioId)),
|
|
);
|