Spaces:
				
			
			
	
			
			
		Build error
		
	
	
	
			
			
	
	
	
	
		
		
		Build error
		
	| import db, { getModels } from "@/utils/db" | |
| export default async function Comparison({ params }) { | |
| const { slugs } = params | |
| const [model1, model2] = slugs.split("-vs-") | |
| const models = await getModels() | |
| const model1Data = models.find((m) => m.slug === model1) | |
| const model2Data = models.find((m) => m.slug === model2) | |
| // Get the models' results from the DB, | |
| const results = | |
| await db`SELECT * FROM results INNER JOIN prompts ON results.prompt = prompts.id WHERE model = ${model1Data.id} OR model = ${model2Data.id}` | |
| // Group and convert to table data with: prompt text, model 1 result, model 2 result | |
| const tableData = results.reduce((acc, result) => { | |
| const prompt = result.text | |
| // If the prompt is not in the accumulator, add it | |
| if (!acc[prompt]) { | |
| acc[prompt] = { | |
| prompt, | |
| } | |
| } | |
| // Add the result to the prompt | |
| acc[prompt][result.model === model1Data.id ? "model1" : "model2"] = result | |
| return acc | |
| }, {}) | |
| // Convert to array | |
| const tableDataArray = Object.values(tableData) | |
| return ( | |
| <table style={{ maxWidth: 1200 }}> | |
| <thead> | |
| <tr> | |
| <th>Prompt</th> | |
| <th>{model1Data?.name}</th> | |
| <th>{model2Data?.name}</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| {tableDataArray.map((row, i) => ( | |
| <tr key={i}> | |
| <td> | |
| <pre>{row.prompt}</pre> | |
| </td> | |
| <td> | |
| <pre>{row.model1?.result?.trim()}</pre> | |
| <p>{row.model1 ? `Score: ${row.model1?.score}` : "Not rated"}</p> | |
| </td> | |
| <td> | |
| <pre>{row.model2?.result?.trim()}</pre> | |
| <p>{row.model2 ? `Score: ${row.model2?.score}` : "Not rated"}</p> | |
| </td> | |
| </tr> | |
| ))} | |
| </tbody> | |
| </table> | |
| ) | |
| } | |