first-update
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { getDatasetsById } from '@/lib/db/datasets';
|
||||
import LLMClient from '@/lib/llm/core/index';
|
||||
import { getEvalQuestionPrompt } from '@/lib/llm/prompts/evalQuestion';
|
||||
import { extractJsonFromLLMOutput } from '@/lib/llm/common/util';
|
||||
|
||||
export async function POST(request, { params }) {
|
||||
try {
|
||||
const { projectId } = params;
|
||||
const { datasetId, model, language, questionType = 'open_ended', count = 1 } = await request.json();
|
||||
|
||||
if (!datasetId || !model) {
|
||||
return NextResponse.json({ error: 'Missing required parameters' }, { status: 400 });
|
||||
}
|
||||
|
||||
// 1. 获取原数据集
|
||||
const dataset = await getDatasetsById(datasetId);
|
||||
if (!dataset) {
|
||||
return NextResponse.json({ error: 'Dataset not found' }, { status: 404 });
|
||||
}
|
||||
|
||||
// 2. 构建提示词
|
||||
// 将原问题和答案合并作为上下文文本
|
||||
const text = `Question: ${dataset.question}\nAnswer: ${dataset.answer}`;
|
||||
|
||||
const prompt = await getEvalQuestionPrompt(language || 'zh-CN', questionType, { text, number: count }, projectId);
|
||||
|
||||
// 3. 调用 LLM
|
||||
const client = new LLMClient(model);
|
||||
|
||||
const response = await client.getResponse(prompt);
|
||||
const result = extractJsonFromLLMOutput(response);
|
||||
|
||||
// 结果应该是一个数组
|
||||
if (!result || !Array.isArray(result)) {
|
||||
throw new Error('Failed to parse LLM output or output is not an array');
|
||||
}
|
||||
|
||||
return NextResponse.json({ success: true, data: result });
|
||||
} catch (error) {
|
||||
console.error('Generate eval variant failed:', error);
|
||||
return NextResponse.json({ error: error.message || 'Internal Server Error' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user