diff --git a/packages/backend/src/api/v1/runs/index.ts b/packages/backend/src/api/v1/runs/index.ts index b21be629..a087c36b 100644 --- a/packages/backend/src/api/v1/runs/index.ts +++ b/packages/backend/src/api/v1/runs/index.ts @@ -150,39 +150,21 @@ runs.get("/", async (ctx: Context) => { eu.last_seen as user_last_seen, eu.props as user_props, t.slug as template_slug, - rpfc.feedback as parent_feedback, - coalesce(array_agg( - jsonb_build_object( - 'evaluatorName', e.name, - 'evaluatorSlug', e.slug, - 'evaluatorId', e.id, - 'result', er.result, - 'createdAt', er.created_at, - 'updatedAt', er.updated_at - ) - ) filter (where er.run_id is not null), '{}') as evaluation_results + rpfc.feedback as parent_feedback from - public.run r + run r left join external_user eu on r.external_user_id = eu.id left join run_parent_feedback_cache rpfc on r.id = rpfc.id left join template_version tv on r.template_version_id = tv.id left join template t on tv.template_id = t.id - left join evaluation_result_v2 er on r.id = er.run_id - left join evaluator e on er.evaluator_id = e.id where r.project_id = ${projectId} ${parentRunCheck} and (${filtersQuery}) - group by - r.id, - eu.id, - t.slug, - rpfc.feedback order by r.created_at desc limit ${exportType ? 10000 : Number(limit)} - offset ${Number(page) * Number(limit)} - ` + offset ${Number(page) * Number(limit)}` const runs = rows.map(formatRun) diff --git a/packages/backend/src/checks/index.ts b/packages/backend/src/checks/index.ts index fecfbacc..2378994e 100644 --- a/packages/backend/src/checks/index.ts +++ b/packages/backend/src/checks/index.ts @@ -319,8 +319,7 @@ export const CHECK_RUNNERS: CheckRunner[] = [ { id: "search", sql: ({ query }) => - sql`(to_tsvector('simple', substring(r.input_text, 1, 948575)) @@ plainto_tsquery('simple', ${query}) - or to_tsvector('simple', substring(r.output_text, 1, 948575)) @@ plainto_tsquery('simple', ${query}))`, + sql`(r.input_text ilike ${`%${query}%`} or r.output_text ilike ${`%${query}%`})`, }, { id: "string", diff --git a/packages/backend/src/utils/db.ts b/packages/backend/src/utils/db.ts index b52120ae..d0f6106b 100644 --- a/packages/backend/src/utils/db.ts +++ b/packages/backend/src/utils/db.ts @@ -23,6 +23,11 @@ function debugFn( parameters: any[], paramTypes: any[], ) { + // for (let i = 0; i <= parameters.length; i++) { + // let regex = new RegExp(`\\$${i + 1}`, "g") + // query = query.replace(regex, `'${parameters[i]}'`) + // } + console.log("connection:", connection) console.log("query:", query) console.log("parameters:", parameters) diff --git a/packages/db/0021.sql b/packages/db/0021.sql new file mode 100644 index 00000000..90b14b10 --- /dev/null +++ b/packages/db/0021.sql @@ -0,0 +1,2 @@ +create index on run using gin (input_text gin_trgm_ops); +create index on run using gin (output_text gin_trgm_ops); diff --git a/packages/frontend/components/analytics/BarList.tsx b/packages/frontend/components/analytics/BarList.tsx index 36a6df49..8a2aa1ab 100644 --- a/packages/frontend/components/analytics/BarList.tsx +++ b/packages/frontend/components/analytics/BarList.tsx @@ -5,8 +5,8 @@ type BarListProps = { data: any[] filterZero?: boolean columns: { + key: string name?: string - key?: string main?: boolean // Use this column for the bar chart calculations? bar?: boolean // Bar chart column ? render?: (value, row?) => React.ReactNode @@ -37,7 +37,7 @@ function BarList({ data, columns, filterZero = true }: BarListProps) { {columns.map(({ name }, i) => ( - + {name || ""} ))} @@ -77,6 +77,7 @@ function BarList({ data, columns, filterZero = true }: BarListProps) { {item.value} diff --git a/packages/frontend/components/prompts/PromptVariableEditor.tsx b/packages/frontend/components/prompts/PromptVariableEditor.tsx index 24a71888..8c44acbc 100644 --- a/packages/frontend/components/prompts/PromptVariableEditor.tsx +++ b/packages/frontend/components/prompts/PromptVariableEditor.tsx @@ -1,23 +1,17 @@ -import { - Badge, - Box, - Group, - Stack, - Text, - Textarea, - Tooltip, -} from "@mantine/core" +import { Badge, Box, Group, Stack, Text, Tooltip } from "@mantine/core" import { IconInfoCircle } from "@tabler/icons-react" import { TemplateVariables } from "shared" +import VariableTextarea from "./VariableTextarea" export default function PromptVariableEditor({ - value = {}, + value: templateVariables = {}, onChange, }: { value: TemplateVariables onChange: (value: TemplateVariables) => void }) { - const hasVariables = Object.keys(value).length > 0 + const hasVariables = Object.keys(templateVariables).length > 0 + return ( @@ -35,40 +29,39 @@ export default function PromptVariableEditor({ )} - {Object.keys(value) - .sort() - .map((variable) => ( + {Object.entries(templateVariables) + .sort(([nameA], [nameB]) => nameA.localeCompare(nameB)) + .map(([name, value]) => ( - {variable} + {name} -