This commit is contained in:
2026-03-13 18:50:53 +01:00
parent 93c197e8e4
commit 0e396bf597
2 changed files with 11 additions and 11 deletions

View File

@@ -180,7 +180,7 @@ async function startRecording() {
recordHint.textContent = 'Tippen zum Stoppen'; recordHint.textContent = 'Tippen zum Stoppen';
// Show listening indicator — not editable, no interim text // Show listening indicator — not editable, no interim text
transcriptBox.textContent = 'Слушаю…'; transcriptBox.textContent = 'Ich höre zu…';
transcriptBox.classList.remove('empty'); transcriptBox.classList.remove('empty');
clearTimeout(recordingTimer); clearTimeout(recordingTimer);

View File

@@ -10,9 +10,9 @@ app.use(express.json());
app.use(express.static(path.join(__dirname, "public"))); app.use(express.static(path.join(__dirname, "public")));
const LEVEL_DESCRIPTIONS = { const LEVEL_DESCRIPTIONS = {
A2: "базовый (A2): хвали за попытку, кратко комментируй смысл и предлагай простые альтернативные формулировки", A2: "Grundstufe (A2): Lobe den Versuch kurz, kommentiere den Sinn und schlage einfache Alternativen vor",
B1: "средний (B1): анализируй смысл ответа, порядок слов, предлагай более естественные обороты речи", B1: "Mittelstufe (B1): Analysiere den Sinn, die Wortstellung und schlage natürlichere Formulierungen vor",
B2: "выше среднего (B2): детально анализируй смысл, структуру предложений, стиль и естественность речи, предлагай альтернативные формулировки", B2: "Obere Mittelstufe (B2): Analysiere Sinn, Satzstruktur und Stil detailliert und schlage Alternativen vor",
}; };
// Audio is sent as raw binary body (Content-Type: audio/*) // Audio is sent as raw binary body (Content-Type: audio/*)
@@ -64,18 +64,18 @@ app.post("/api/check", async (req, res) => {
const levelDesc = LEVEL_DESCRIPTIONS[level] || LEVEL_DESCRIPTIONS["B1"]; const levelDesc = LEVEL_DESCRIPTIONS[level] || LEVEL_DESCRIPTIONS["B1"];
const systemPrompt = `Ты помощник для практики разговорного немецкого языка. Уровень пользователя: ${levelDesc}. const systemPrompt = `Du bist ein Assistent zum Üben des gesprochenen Deutschen. Niveau des Nutzers: ${levelDesc}.
ВАЖНО: текст получен через автоматическое распознавание речи. Орфография, пунктуация, слитное написание слов, заглавные буквы — всё это артефакты распознавания. Полностью игнорируй любые подобные особенности. Никогда не упоминай и не комментируй правописание, пунктуацию или неразборчивые слова. WICHTIG: Der Text wurde durch automatische Spracherkennung erfasst. Rechtschreibung, Zeichensetzung, Zusammenschreibungen und Großschreibung sind Erkennungsartefakte. Ignoriere diese vollständig. Kommentiere niemals Rechtschreibung, Zeichensetzung oder unklare Wörter.
Тебе дают вопрос на немецком и ответ пользователя на немецком. Дай ровно два пункта: Du bekommst eine Frage auf Deutsch und die Antwort des Nutzers auf Deutsch. Gib genau zwei Punkte:
1. **Правка** — только самая грубая ошибка в смысле или порядке слов (если ошибок нет — скажи коротко) 1. **Korrektur** — nur der gröbste Fehler im Sinn oder in der Wortstellung (wenn kein Fehler — kurz bestätigen)
2. **Альтернативный оборот** — один другой способ выразить ту же мысль по-немецки 2. **Alternative Formulierung** — eine andere Möglichkeit, denselben Gedanken auf Deutsch auszudrücken
Больше ничего не добавляй. Отвечай на русском языке. Используй markdown для форматирования.`; Füge nichts weiter hinzu. Antworte auf Deutsch. Verwende Markdown zur Formatierung.`;
const userMessage = `Вопрос: ${question}\n\nОтвет пользователя: ${answer}`; const userMessage = `Frage: ${question}\n\nAntwort des Nutzers: ${answer}`;
try { try {
const response = await fetch("https://api.anthropic.com/v1/messages", { const response = await fetch("https://api.anthropic.com/v1/messages", {