Блог Splync имеет 42 языка
Это 23-я статья в моем блоге для Splync, совместного трекера бюджета для пар, друзей и семей. Вы можете задаться вопросом, как я публикую каждую запись на 42 языках, будучи единственным инженером. Как указано в отказе от ответственности в начале каждой статьи, этот веб-сайт автоматически переводится на несколько языков с помощью программного обеспечения, которое я разработал сам. Чтобы было понятно: я не пишу вручную ни одного предложения на каком-либо языке, кроме английского. Поэтому, прошу вас обратиться к оригинальной английской версии, если точность значения имеет значение. Тем не менее, после множества попыток улучшения процесса перевода, я считаю, что общее качество перевода вполне достойное. В этой статье я расскажу, как мое программное обеспечение делает блог Splync многоязычным.
Python и OpenAI API работают вместе
Я всегда начинаю с написания каждой статьи на простом английском, включая метаданные, связанные с SEO. После этого мой скрипт на Python отправляет английский текст в OpenAI API вместе с подсказкой и небольшим справочным файлом. На серверах OpenAI ChatGPT-4o обрабатывает запрос и возвращает переведенную статью, например, на арабском языке, в формате JSON. Как только мой MacBook получает этот перевод, скрипт сразу же отправляет новый запрос, на этот раз на бенгальский. Скрипт автоматически проходит через все 42 целевых языка. В конце процесса у моего компьютера есть 42 переведенных JSON-файла. Другой скрипт на Python встраивает каждый перевод в шаблон HTML и генерирует 42 HTML-файла менее чем за секунду. Все файлы загружаются на сервер, где размещен этот блог, и каждая языковая версия помещается в свою собственную директорию. Наконец, серверный скрипт на Python обновляет индекс статьи и ссылки «Следующая запись», чтобы навигация на каждом языке оставалась согласованной. С исходной английской статьей, написанной в обычном тексте, весь процесс обычно занимает 5 минут или даже меньше. Когда мне нужно внести изменения, я обновляю несколько HTML-файлов одновременно, используя серверные скрипты на Python.
Что такое API
Если вам не знакомы технические термины, вы можете задаться вопросом, как мой компьютер «общается» с сервером OpenAI. Ответ — это нечто называемое API, интерфейс программирования приложений. Вы можете представить API как окно мессенджера между двумя программами: одна программа отправляет запрос, а другая отправляет обратно ответ. Например, мой скрипт на Python отправляет сообщение типа «Пожалуйста, переведите эту статью на немецкий». OpenAI получает это сообщение через API, готовит перевод и отправляет результат обратно. Это работает так же, как заказ еды в ресторане: вы говорите официанту, что хотите, кухня это готовит, и официант приносит это обратно к вашему столу. И зачем нужен официант? Потому что вы не входите на кухню и не говорите напрямую с поваром — вы не знаете, как кухня работает, и вам это не нужно. Вы можете сказать официанту «Можно мне чизбургер?», а официант может выкрикнуть «Заказ готов! T21, Чихуахуа!» в совершенно другом формате. API играет ту же роль. Он соединяет две разные системы, не требуя от них понимания внутреннего языка или процессов друг друга.
Зачем мне нужен OpenAI API
Теперь, когда мы поняли, что такое API, вот почему я действительно использую его для этого блога. Практически говоря, я знаю, как «общаться» с ChatGPT самостоятельно — но у меня есть 42 языка для обработки. Обращаться к официанту 42 раза было бы утомительно (программа пропускает перевод английского на английский, но все же конвертирует текст в JSON). Использование OpenAI API позволяет моему скрипту на Python отправлять все эти запросы автоматически, избавляя меня от повторяющейся работы, чтобы я мог сосредоточиться на других задачах. Я один разработчик, поэтому мне нужно использовать свое время как можно более эффективно. Всякий раз, когда я вижу задачу, которая повторяется и имеет четкие правила, я автоматизирую ее. В результате получается процесс, который в миллион раз быстрее и полностью безошибочный. Вот почему автоматизация через API важна — она позволяет моему скрипту разместить все 42 «заказа» мгновенно и надежно.
Почему 42 языка
Технически я мог бы добавить много больше языков; это заняло бы всего несколько минут, пока я мою посуду. Но мне лично нравится число 42, «Ответ на Главный вопрос жизни, Вселенной и всего остального» из книги Дугласа Адамса. Помимо моей привязанности к числу 42, добавление очень минорных языков может быть рискованным, потому что ИИ-перевод может стать менее надежным для языков с ограниченными данными обучения.
Температура ChatGPT 4o
Когда я впервые экспериментировал с этим многоязычным подходом к переводу, результаты были неплохими, но не идеальными. Некоторые предложения были переведены неправильно, слишком буквально или слегка вводили в заблуждение на определенных языках. Я также беспокоился о том, чтобы не создать случайно выражения, которые могут быть неуместными или оскорбительными в определенных культурных контекстах. И, конечно, я не хотел, чтобы мои переводы звучали как роботы. Одним из ключевых факторов качества перевода является настройка температуры — параметр, который контролирует, насколько «креативным» или «строгим» должен быть ИИ. Высокая температура делает ИИ более воображаемым, но и менее предсказуемым. Низкая температура заставляет его оставаться близким к оригинальному значению, но иногда может казаться жесткой. Мне потребовалось много проб и ошибок, чтобы найти правильный баланс: достаточно низкий, чтобы обеспечить точность, но не такой низкий, чтобы текст стал безжизненным. После многих экспериментов я пришел к выводу, что температура = 0.8 была наилучшим вариантом для нужд этого блога: достаточно точная, чтобы оставаться верной английскому оригиналу, но достаточно гибкая, чтобы звучать естественно на других языках.
ChatGPT 5.x не поддерживает температуру
Новые модели, такие как ChatGPT 5 и 5.1, больше не поддерживают настройку температуры — параметр был удален и заменен концепциями, такими как рассуждение и усилие, которые влияют на то, как модель думает, а не на то, насколько «креативной» она становится. Другими словами, ChatGPT 4o давал мне физическую ручку, которую я мог поворачивать, чтобы настроить стиль перевода, но семейство 5.x следует совершенно другой философии. Если вы небрежно попросите новейшую модель «перевести это с температурой = 0.8», она может попытаться вести себя так, будто такой настройка все еще существует, но внутренне параметр отсутствует. Модель просто приближает намерение. По мере того как OpenAI продолжает обновлять свои модели, я могу когда-нибудь изменить свой процесс перевода. Пока что ChatGPT 4o остается моим выбором для многоязычных переводов — не только потому, что он хорошо понимает контекст на многих языках, но и потому, что его цена через API разумна для такого разработчика-одиночки, как я. На самом деле, 4o может стать одной из самых любимых моделей в истории OpenAI.
Работники OpenAI API
Одной из удивительных особенностей OpenAI API — по сравнению с использованием ChatGPT напрямую в браузере — является то, что вы можете использовать более одного «работника» ChatGPT одновременно. Когда я отправляю запросы на перевод для 42 языков, я не отправляю их по одному, медленно. Вместо этого API может обрабатывать множество запросов параллельно, как если бы я внезапно нанял комнату переводчиков, которые все начали работать одновременно. Мой скрипт на Python управляет рабочим процессом как маленькая производственная линия: он готовит английскую статью, отправляет запросы, ждет ответа и обрабатывает результаты в файлы JSON. Между тем, серверы OpenAI запускают несколько экземпляров модели одновременно, каждая из которых переводит на другой язык параллельно. Это то, что сайт или приложение ChatGPT не могут сделать — те интерфейсы дают вам одну модель, один разговор, одну задачу за раз. Но с API вы можете увеличить объем работы настолько, насколько позволяет ваш скрипт. Для такого разработчика-одиночки, как я, это ощущается как наличие небольшой команды самых умных и эгоистичных помощников. Это отчасти зависит от скорости интернета, но я обычно устанавливаю workers = 12.
Как я делаю свой блог многоязычным, делая посуду
Я работал мойщиком посуды в студенческой столовой, когда изучал математику в Киотском университете. Хотя зарплата составляла примерно 5 долларов в час, мне всегда нравилась повторяющаяся ручная работа после нескольких часов — а иногда и нескольких дней — глубокой интеллектуальной концентрации. Позже, когда я работал на чесночной фабрике в Хоккайдо, моя работа заключалась просто в том, чтобы полировать тысячи белых головок чеснока, чтобы они выглядели ярче на конвейере. Восемь часов в день — полное сосредоточение, стабильный ритм. Это было странно удовлетворительным. Теперь, возвращаясь к этим воспоминаниям, я сейчас занимаюсь интеллектуальной работой — пишу программное обеспечение, разрабатываю системы, составляю эти статьи. Но баланс не изменился. Если вы спросите меня, как я сам публикую статью блога на 42 языках, честный ответ: я делаю это, мою посуду.