Перейти к содержимому

ИИ-движок: не просто перевод

Почему DevLingo не использует обычный словарный API? Простой API-запрос возвращает статическую информацию без контекста. ИИ-движок DevLingo делает три вещи, которые словарь не может.

Словарь говорит, что “deploy” означает «развернуть». Но разработчику нужно знать:

СценарийЗначениеПример
Развёртывание приложенияВыпуск в продакшен”We deployed the new version to production.”
Выделение ресурсовРаспределение/активация ресурсов”Deploy additional servers to handle traffic.”
Тактическое (военный термин)Развернуть, расставить”The team is deployed across different time zones.”

ИИ DevLingo знает, что вы читаете код в Xcode, поэтому выделяет первое значение. Если вы видите “deploy” в HR-приложении, более релевантным может быть третье значение.

{ "sourceApp": "com.apple.dt.Xcode" }
→ ИИ адаптирует стиль ответа: технический, с примерами из кода
{ "sourceApp": "com.tinyspeck.slackmacgap" }
→ ИИ адаптирует стиль ответа: командная коммуникация, более разговорный

:::tip Определение приложения DevLingo получает Bundle Identifier текущего активного приложения через NSWorkspace и передаёт его Claude. ИИ соответственно адаптирует ответ. :::

Словарь возвращает текстовый блок. ИИ DevLingo возвращает структурированный JSON:

{
"word": "idempotent",
"ipa": "/ɪˈdɛmpətənt/",
"pos": "adjective",
"definition_en": "Describing an operation that, when applied multiple times, produces the same result as when applied once.",
"meaning_zh": "Идемпотентный; многократное применение даёт тот же результат, что и однократное",
"examples": [
{
"en": "Ensure your API endpoints are idempotent to handle retry requests safely.",
"zh": "Убедитесь, что конечные точки API идемпотентны для безопасной обработки повторных запросов.",
"context": "API design"
},
{
"en": "This function's idempotent nature makes it safe to call multiple times.",
"zh": "Идемпотентная природа этой функции делает безопасным её многократный вызов.",
"context": "Function design"
}
],
"synonyms": [
{
"word": "repeatable",
"difference": "Более общее; относится к любой повторяемой операции. 'idempotent' более специализирован и точен."
}
],
"collocations": [
"idempotent operation",
"idempotent function",
"idempotent API"
],
"grammar_notes": "Прилагательное. В технической документации часто используется как определение или именная часть сказуемого.",
"l1_tips": {
"ru": "В русском языке нет повседневного эквивалента. Запомните, что 'idempotent' — математический/программистский термин. В технических обсуждениях чаще используется английский вариант."
},
"tech_pronunciation": {
"ipa": "/ɪˈdɛmpətənt/",
"common_mispronounce": "i-DEM-po-tent (неправильно; ударение должно быть на DEM)",
"correct_stress": "i-**DEM**-pu-tunt",
"etymology": "Из математического термина, от латинского 'idem' (тот же) и 'potent' (мощный)"
}
}

Каждое поле соответствует определённой области карточки в интерфейсе. Не просто текст, а тщательно организованный учебный материал.

{
"phrase": "rubber ducking",
"type": "compound (noun phrase)",
"register": "informal / tech culture",
"definition_en": "A debugging method where you explain your code to a rubber duck (or any object), often revealing bugs through the act of articulation.",
"meaning_zh": "Метод отладки, при котором вы объясняете код резиновой утке (или любому предмету), часто обнаруживая ошибки в процессе объяснения.",
"stress_pattern": "RUB-ber DUCK-ing",
"usage_patterns": [
{
"pattern": "[Subject] [is/uses] rubber ducking",
"example": "I've been rubber ducking this problem for 10 minutes and just found the issue.",
"zh": "Я объяснял эту проблему (rubber ducking) 10 минут и нашёл причину."
},
{
"pattern": "[Let's] do some rubber ducking [on X]",
"example": "Let's do some rubber ducking on this algorithm.",
"zh": "Давайте применим rubber ducking к этому алгоритму."
}
],
"alternatives": [
{
"phrase": "debugging by explanation",
"note": "Более формальный вариант; без культурного колорита 'rubber ducking'"
},
{
"phrase": "talk it out",
"note": "Более разговорный; не относится конкретно к методу отладки"
}
]
}

Если ввод является техническим термином, ИИ предоставляет дополнительную информацию:

Слово: latency
Стандартный вывод: definition, examples, pronunciation...
Дополнительный вывод (только для технических терминов):
- Единицы измерения: миллисекунды (мс) / микросекунды (мкс)
- Сопряжённые понятия: throughput, bandwidth
- Практический сценарий: что значит "P99 latency < 100ms"
- Отраслевые бенчмарки: нормальная сетевая задержка ~50 мс, плохая 500 мс+

Не «кошка сидела на ковре», а:

Слово: concurrent
Примеры (из реальной разработки):
1. "This function is not concurrent-safe; you need to add locking."
→ Сценарий Code Review
2. "We redesigned the system to handle concurrent requests efficiently."
→ Сценарий проектирования архитектуры
3. "Make sure your HTTP client supports concurrent connections."
→ Сценарий оптимизации производительности

Подсказки по интерференции L1 (родного языка)

Заголовок раздела «Подсказки по интерференции L1 (родного языка)»

На основе родного языка пользователя ИИ активно указывает на типичные ловушки:

Пользователь: носитель русского языка
Слово: article / the / a
Подсказка ИИ:
"Типичная проблема русскоязычных: в русском нет артиклей, но в английском различаются определённый артикль (the) и неопределённый (a/an).
Ошибка: 'I saw cat' → 'I saw a cat' или 'I saw the cat' (зависит от контекста)
Мнемоника: каждое исчисляемое существительное в английском обычно требует артикля. В русском 'кот' — это просто кот, в английском нужно говорить 'a cat' или 'the cat'."

:::note Интерференция L1 Это уникальная особенность DevLingo. Обычный словарь не скажет вам «причина, по которой вы можете допустить эту ошибку — в особенностях вашего родного языка». :::

Причины выбора Claude в DevLingo:

  1. Сильный структурированный вывод: Claude отлично генерирует форматированный JSON с высокой надёжностью
  2. Глубокое понимание контекста: Claude понимает контекст приложения, код и интерференцию L1
  3. Дружелюбен к разработчикам: Claude лучше других универсальных LLM понимает технические термины, код и рабочие процессы разработки
  4. Управляемость: через prompt-инженерию DevLingo точно контролирует формат и качество вывода

Вызов Claude в DevLingo содержит тщательно разработанный шаблон промпта:

You are an English learning assistant for developers.
The user selected: "{selectedText}"
Mode: {mode}
User's native language: {userLanguage}
Current application: {sourceApp}
Surrounding context: "{context}"
Respond with JSON in the following structure:
{
"mode": "word|phrase|sentence|paragraph|express",
... [detailed schema]
}
Important:
1. Examples must be from software development context
2. Provide 2-3 examples per item
3. For native speakers of {userLanguage}, highlight common interference patterns
4. If applicable, note pronunciation and stress patterns
5. Keep definitions concise (< 20 words)

Этот промпт обеспечивает:

  • Единообразие формата вывода
  • Примеры из контекста разработки
  • Внимание к интерференции L1
  • Целенаправленность результатов обучения
ФункцияСловарный APIИИ DevLingo
Базовое определениеДаДа
Несколько примеровДа (обычно без контекста)Да (все из технических сценариев)
Учёт контекстаНетДа (знает, какое приложение вы используете)
Подсказки по интерференции L1НетДа
Структурированный выводНет (только текст)Да (JSON, удобен для UI)
Бонус для технических терминовНетДа (этимология, отраслевые бенчмарки и т.д.)
Различение синонимовНет (просто список)Да (объяснение различий)
Произношение и IPAЧастичноДа (полное + 4 акцента)

:::note Зачем многоуровневость без ИИ Система многоуровневых запросов DevLingo обеспечивает:

  • Частые слова (попадание в локальную базу): 0 мс ИИ, 100% быстро
  • Попадание в кэш (ранее запрошенные): 0 мс ИИ, 100% быстро
  • Редкие слова (вызов ИИ): <2 сек, всё равно быстро

Таким образом 95% запросов пользователей не требуют вызова API, что снижает стоимость и улучшает опыт использования. :::

ИИ-движок DevLingo создан не для «перевода», а для «понимания и обучения». Он знает, что вы делаете, знает ваш языковой фон и знает, как учить вас наиболее эффективно.