[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-post-whisperkey-diktovka-dlya-maka":3},{"post":4,"related":174,"status":138},{"id":5,"title":6,"slug":7,"excerpt":8,"content":9,"cover_alt":137,"cover_position":138,"reading_time":139,"seo_title":140,"seo_description":141,"date_published":142,"date_modified":138,"source_lead":138,"rubrics":143,"blocks":151,"cover":171},"0f6763a5-5ff7-4e0b-ae3b-c96ddc39c118","Диктовка для Мака без подписки: наговорил - и текст на месте","whisperkey-diktovka-dlya-maka","Если ваша работа - это письма, задачи и заметки, значительная часть дня уходит на набор текста. Я собрал для Мака диктовку: зажал клавишу, наговорил - текст появился там, где стоит курсор, без сети и без подписки.",{"type":10,"content":11},"doc",[12,18,31,35,42,46,50,54,59,63,91,96,100,105,109,114,118,123,129,133],{"type":13,"content":14},"paragraph",[15],{"type":16,"text":17},"text","Черновик этой статьи я наговорил голосом. Дорога к этому была такая: задачи агентам, письма, заметки, протоколы - работа почти целиком состоит из текста, а говорю я сильно быстрее, чем печатаю. Нужен был инструмент, который превращает речь в текст в любом приложении - в мессенджере, в редакторе, в терминале.",{"type":13,"content":19},[20,22,29],{"type":16,"text":21},"Готовые варианты не подошли: встроенная диктовка macOS слаба для русского, ",{"type":16,"marks":23,"text":28},[24],{"type":25,"attrs":26},"link",{"href":27},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Flokalno-ili-v-oblake","облачные сервисы означают подписку и зависимость от сети",{"type":16,"text":30},", а большинство утилит работают только в своём окне. Мне нужна была системная вещь: зажал клавишу где угодно - наговорил - текст появился там, где стоит курсор.",{"type":13,"content":32},[33],{"type":16,"text":34},"Я такую вещь собрал. Называется WhisperKey, живёт в строке меню Мака, и через неё сейчас проходит заметная часть моего ввода.",{"type":36,"attrs":37,"content":39},"heading",{"level":38},2,[40],{"type":16,"text":41},"Что получилось",{"type":13,"content":43},[44],{"type":16,"text":45},"Механика push-to-talk, как в рации: зажал правый Option - по краям экрана загорается оранжевое свечение и появляется плашка \"Говорите...\" - говоришь - отпустил. Пауза на распознавание, и текст вставляется в активное приложение, в то поле, где стоял курсор. Работает везде: Telegram, браузер, IDE, терминал.",{"type":13,"content":47},[48],{"type":16,"text":49},"Под капотом - whisper.cpp, открытая реализация распознавания речи от Георгия Герганова, модель large-v3-turbo. Вся обработка идёт прямо на ноутбуке: тяжёлая часть модели исполняется на Neural Engine - нейропроцессоре, который стоит в каждом Маке на Apple Silicon и у большинства пользователей просто простаивает. Интернет для работы не нужен, подписки нет.",{"type":13,"content":51},[52],{"type":16,"text":53},"Из приятного в быту: пунктуацию и заглавные буквы модель расставляет сама, во время диктовки видно живое превью распознанного, а после вставки утилита восстанавливает содержимое буфера обмена - то, что вы копировали до диктовки, не теряется.",{"type":36,"attrs":55,"content":56},{"level":38},[57],{"type":16,"text":58},"Инженерная часть: где были грабли",{"type":13,"content":60},[61],{"type":16,"text":62},"Дальше идёт инженерный раздел. Если вы не пишете код, листайте к ограничениям - там про то, чего эта диктовка не умеет. А тому, кто соберётся делать системную утилиту под macOS, эти грабли сэкономят время.",{"type":64,"content":65},"bulletList",[66,73,79,85],{"type":67,"content":68},"listItem",[69],{"type":13,"content":70},[71],{"type":16,"text":72},"Разрешения macOS. Глобальный хоткей и синтез вставки требуют разрешения Accessibility, запись - разрешения на микрофон. Главная подлость: при смене подписи приложения macOS молча отзывает Accessibility, и хоткей \"просто перестаёт работать\". Пришлось учить приложение замечать это и восстанавливать активацию самому.",{"type":67,"content":74},[75],{"type":13,"content":76},[77],{"type":16,"text":78},"Вставка текста. Надёжнее всего оказался путь через буфер обмена и синтетический Cmd+V.",{"type":67,"content":80},[81],{"type":13,"content":82},[83],{"type":16,"text":84},"Потоковое распознавание. Whisper обрабатывает звук скользящим окном, поэтому живое превью может \"передумывать\" слова на ходу. Решение - два прохода: черновой во время речи и точный после отпускания клавиши.",{"type":67,"content":86},[87],{"type":13,"content":88},[89],{"type":16,"text":90},"Дистрибуция. Установочный образ получился крошечным, примерно 1.8 мегабайта: модель на 1.6 гигабайта скачивается при первом запуске с индикатором прогресса.",{"type":36,"attrs":92,"content":93},{"level":38},[94],{"type":16,"text":95},"Как это было построено",{"type":13,"content":97},[98],{"type":16,"text":99},"Отдельный пласт этой истории - процесс. Swift не был моим основным языком: я бэкенд- и AI-инженер, а не разработчик под macOS. Приложение построено в паре с AI-агентом: архитектуру, ревью и приёмку держал я, значительную часть кода писал агент, на грабли из списка выше мы наступали вместе. Ядро накрыто тестами, а сборка - от компиляции whisper.cpp до готового образа - собрана в воспроизводимые скрипты.",{"type":36,"attrs":101,"content":102},{"level":38},[103],{"type":16,"text":104},"Ограничения, честно",{"type":13,"content":106},[107],{"type":16,"text":108},"Абзацы модель не расставляет - для длинных текстов нужна пост-обработка через LLM, диктую я всё же кусками. Превью во время речи не дословное - точен только финальный проход. И это Mac-only история: всё завязано на Apple Silicon.",{"type":36,"attrs":110,"content":111},{"level":38},[112],{"type":16,"text":113},"Если нужна диктовка",{"type":13,"content":115},[116],{"type":16,"text":117},"Смотрите в сторону whisper.cpp. Открытая модель и нейропроцессор, который уже стоит в вашем ноутбуке, дают качество русского, за которое ещё недавно просили подписку.",{"type":36,"attrs":119,"content":120},{"level":38},[121],{"type":16,"text":122},"Во сколько вам обходится время на текст",{"type":124,"attrs":125},"relation-block",{"id":126,"junction":127,"collection":128},"d86bbd22-99cc-400e-a047-27247edcfbdd","posts_blocks","block_stats",{"type":13,"content":130},[131],{"type":16,"text":132},"Посчитайте на своих цифрах: сколько часов в день у вас уходит на письма, задачи и заметки, и какая у вас ставка. Для ориентира - час сотрудника обычно оценивают в 500 рублей, день собственника - в 7 000 - 10 000 рублей. Диктовка сокращает эту статью расходов косвенно: говорить быстрее, чем печатать. А вот следующая цифра точная: речь не уходит в чужое облако, потому что распознавание идёт на вашем ноутбуке - ни ежемесячного счёта за подписку, ни лишнего разговора о том, где лежат записи.",{"type":124,"attrs":134},{"id":135,"junction":127,"collection":136},"7f1050f2-8c58-44fc-a7f2-97c598c74d72","block_cta","Красная звуковая волна превращается в строки текста рядом с силуэтом ноутбука",null,3,"Диктовка для Мака без подписки: WhisperKey на whisper.cpp","Локальная диктовка на macOS: зажал клавишу, наговорил - текст в любом приложении. Whisper.cpp на Neural Engine, без сети и подписки. Грабли и что это даёт.","2026-07-28T07:00:00.000Z",[144,148],{"sort":145,"tags_id":146},1,{"name":147},"Инструменты",{"sort":38,"tags_id":149},{"name":150},"ИИ и модели",[152,164],{"id":126,"sort":138,"collection":128,"item":153},{"items":154,"columns":139},[155,158,161],{"lead":156,"text":157},"500 рублей в час","ориентир: ставка сотрудника, если считать время на набор текста в деньгах",{"lead":159,"text":160},"7 000 - 10 000 рублей","ориентир: во что обходится день собственника, потраченный на то же самое",{"lead":162,"text":163},"0 рублей за облако","распознавание идёт на вашем ноутбуке: ни подписки, ни ухода речи наружу",{"id":135,"sort":138,"collection":136,"item":165},{"cta_variant":166,"heading":167,"body":168,"button_label":169,"url":138,"glow":170},"estimator","Похожая задача?","Если у вас такая же рутина в тексте - ежедневный набор, перенос данных руками, - опишите задачу в оценщике. Он прикинет объём работ и стоимость такой утилиты под ваш случай.","Оценить задачу",true,{"id":172,"modified_on":173},"bf2d6a74-c875-4be3-af3e-aa09550926ea","2026-08-12T14:26:50.583Z",[175,339,561],{"id":176,"title":177,"slug":178,"excerpt":179,"content":180,"cover_alt":310,"cover_position":138,"reading_time":139,"seo_title":311,"seo_description":312,"date_published":313,"date_modified":138,"source_lead":138,"rubrics":314,"blocks":320,"cover":336},"d82b4980-87a8-4007-b7b1-e98ed1181f73","Один вопрос за 7 долларов: сколько на самом деле стоит ИИ в месяц","skolko-stoit-ii-v-prode","Если ИИ у вас уже работает или вы только закладываете его в бюджет - это про вас. За две недели 57 процентов счёта дали не клиенты, а один зациклившийся вопрос стоил 6,87 доллара вместо доли цента. Ниже - четыре ограничителя, каждый ставится меньше чем за день.",{"type":10,"content":181},[182,186,190,195,199,208,216,220,225,229,233,237,242,246,254,270,274,282,287,291,295,300,303,307],{"type":13,"content":183},[184],{"type":16,"text":185},"На одном из проектов однажды утром на общем счёте оставалось 10,79 доллара при расходе 23,76 доллара за предыдущие сутки. То есть меньше чем через сутки всё, что работает на ИИ, просто перестало бы отвечать. Дальше был разбор, и он оказался поучительнее любой теории.",{"type":13,"content":187},[188],{"type":16,"text":189},"Такой расход в бизнес-планах внедрения ИИ обычно отсутствует как класс. Считают разработку, подписку, сервер. А платить приходится за сами вычисления: каждый ответ модели стоит денег, и цену определяет устройство системы, прайс провайдера тут вторичен.",{"type":36,"attrs":191,"content":192},{"level":38},[193],{"type":16,"text":194},"Откуда берётся расход",{"type":13,"content":196},[197],{"type":16,"text":198},"Модель берёт деньги за токены - куски текста на входе и на выходе. Пока вы что-то спрашиваете у неё в чате, это копейки. Как только она встроена в работу компании, цену поднимают три вещи, и они не складываются, а умножаются одна на другую.",{"type":13,"content":200},[201,206],{"type":16,"marks":202,"text":205},[203],{"type":204},"bold","Длина контекста.",{"type":16,"text":207}," Агент, который перед ответом подтягивает документы, историю переписки и описание инструментов, отправляет в модель не вопрос пользователя, а несколько страниц текста. Каждый раз.",{"type":13,"content":209},[210,214],{"type":16,"marks":211,"text":213},[212],{"type":204},"Количество шагов.",{"type":16,"text":215}," Современный ИИ-помощник не отвечает одним запросом. Он подумал, сходил за данными, прочитал результат, подумал снова. Один диалог - это десяток обращений к модели, и платите вы за каждое.",{"type":13,"content":217},[218],{"type":16,"text":219},"Самое коварное - фоновые процессы: обработка данных по расписанию, разметка, обогащение записей. Работают без человека, круглосуточно, и никто на них не смотрит.",{"type":36,"attrs":221,"content":222},{"level":38},[223],{"type":16,"text":224},"Что показал разбор",{"type":13,"content":226},[227],{"type":16,"text":228},"Своего учёта расходов в системе не было, и это самое неприятное. Считать пришлось задним числом, вытаскивая цифры из истории запусков - а она хранилась две недели. Что было раньше, уже не восстановить.",{"type":13,"content":230},[231],{"type":16,"text":232},"Жгли бюджет не пользователи. Тридцать шесть процентов расхода за две недели пришлось на одного сотрудника, который тестировал функциональность. Ещё двадцать один процент - на фоновую разметку профилей, работавшую по расписанию. Больше половины денег ушло мимо той работы, ради которой систему строили.",{"type":13,"content":234},[235],{"type":16,"text":236},"А главное - у агентных узлов не был выставлен потолок числа шагов. В нормальном режиме агент делает три-пять итераций и отвечает. Один вопрос, на котором агент зациклился, ушёл в 117 итераций и стоил 6,87 доллара. Один. Вопрос. При среднем чеке в доли цента.",{"type":36,"attrs":238,"content":239},{"level":38},[240],{"type":16,"text":241},"Что мы поставили",{"type":13,"content":243},[244],{"type":16,"text":245},"Ничего сложного - и в этом суть. Все меры дешёвые, но вводить их нужно заранее, пока счёт ещё не кончился.",{"type":13,"content":247},[248,252],{"type":16,"marks":249,"text":251},[250],{"type":204},"Потолок итераций для каждого агента.",{"type":16,"text":253}," Основному ассистенту - 10 шагов, вспомогательным поисковым агентам - 6, фоновой разметке - 5. Если агент не уложился, он останавливается и честно говорит, что не смог, вместо того чтобы крутиться дальше за деньги.",{"type":13,"content":255},[256,260,262,268],{"type":16,"marks":257,"text":259},[258],{"type":204},"Уменьшение выдачи поиска.",{"type":16,"text":261}," ",{"type":16,"marks":263,"text":267},[264],{"type":25,"attrs":265},{"href":266},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Fpoisk-po-smyslu-vektornaya-baza","Агент, ищущий по базе знаний",{"type":16,"text":269},", тянул в контекст по 25-31 фрагменту, а один процесс - 60. Снизили до 15 и 20. Расход упал, а качество ответов - нет: лишние фрагменты не помогали модели, а разбавляли её внимание. Это частая история - \"дадим побольше контекста\" ухудшает ответ и увеличивает счёт одновременно.",{"type":13,"content":271},[272],{"type":16,"text":273},"Ещё одна копеечная мера, которую все откладывают: разные ключи для боевой системы и для тестовой копии. Пока ключ один на всех, любые опыты разработчиков и сотрудников оплачиваются из боевого бюджета. Отдельный ключ со своим лимитом это закрывает.",{"type":13,"content":275},[276,280],{"type":16,"marks":277,"text":279},[278],{"type":204},"Свой учёт.",{"type":16,"text":281}," Собственная запись: какой процесс, сколько токенов, по какому поводу. Отчёты провайдера приходят постфактум, и разбор тогда начинается с археологии по журналам с двухнедельной глубиной.",{"type":36,"attrs":283,"content":284},{"level":38},[285],{"type":16,"text":286},"Что с этим делать, если вы только внедряете",{"type":13,"content":288},[289],{"type":16,"text":290},"Вопрос не в том, сколько стоит запрос. Считать надо процесс целиком: сколько он стоит в месяц при ожидаемой нагрузке. Формула грубая, но рабочая: количество обращений умножить на среднее число шагов агента, умножить на средний объём контекста, умножить на цену модели. Полученную цифру умножить на два - на фоновые задачи и на людей, которые будут это тестировать.",{"type":13,"content":292},[293],{"type":16,"text":294},"И сразу заложить четыре вещи: лимит на ключ, потолок шагов у каждого агента, отдельные ключи для сред и оповещение при исчерпании порога. Ни одна из них не требует ни дня работы. Их не делают по другой причине: на старте расход выглядит как погрешность. А это помесячная строка бюджета, вроде электричества.",{"type":36,"attrs":296,"content":297},{"level":38},[298],{"type":16,"text":299},"Что это даёт вам в месяц",{"type":124,"attrs":301},{"id":302,"junction":127,"collection":128},"b436b48a-895f-4210-a0de-37a27a651cf3",{"type":13,"content":304},[305],{"type":16,"text":306},"Считайте на своём счёте. В разборе выше 57 процентов расхода дали не клиенты: 36 процентов - сотрудник на тестах, 21 - фоновая разметка. Умножьте свой счёт на 0,57, вот часть, которой никто не управляет. Каждый ограничитель ставится меньше чем за день - это 7 000 - 10 000 рублей по дню руководителя. А сутки с пустым балансом - это заявки, которые никто не принял, по 3 000 - 15 000 рублей.",{"type":124,"attrs":308},{"id":309,"junction":127,"collection":136},"369067b4-36c1-414a-a42f-46c67756004d","Барабаны счётчика в быстром вращении и падающая капля","Сколько стоит ИИ в месяц: расходы на токены LLM и лимиты в проде","Реальные расходы на ИИ в работающей системе: 57 процентов счёта за две недели дали не клиенты, один зациклившийся вопрос - 6,87 доллара. Четыре ограничителя, каждый ставится меньше чем за день.","2026-08-27T17:56:48.000Z",[315,318],{"sort":145,"tags_id":316},{"name":317},"Разборы задач",{"sort":38,"tags_id":319},{"name":150},[321,324],{"id":309,"sort":138,"collection":136,"item":322},{"cta_variant":166,"heading":167,"body":323,"button_label":169,"url":138,"glow":170},"Если вы закладываете ИИ в бюджет и не понимаете, во что он обойдётся в месяц - опишите задачу в оценщике. Отвечу с вилкой по работе и прикидкой месячного расхода на модель.",{"id":302,"sort":138,"collection":128,"item":325},{"items":326,"columns":139},[327,330,333],{"lead":328,"text":329},"57 процентов счёта","за две недели дали не клиенты: тесты сотрудника и фоновая разметка профилей",{"lead":331,"text":332},"6,87 доллара","стоил один зациклившийся вопрос: 117 шагов вместо обычных трёх-пяти",{"lead":334,"text":335},"меньше дня работы","уходит на каждый из четырёх ограничителей, дальше они держат счёт без вашего участия",{"id":337,"modified_on":338},"72600d64-5427-4500-b77f-048f887a73b8","2026-08-27T18:12:34.406Z",{"id":340,"title":341,"slug":342,"excerpt":343,"content":344,"cover_alt":534,"cover_position":138,"reading_time":139,"seo_title":535,"seo_description":536,"date_published":537,"date_modified":138,"source_lead":138,"rubrics":538,"blocks":543,"cover":558},"a3bdafa1-370e-4669-a460-69d658ee9330","Локально или в облаке: когда своё железо дешевле облачного счёта","lokalno-ili-v-oblake","Одна и та же задача на одном и том же сервере: сначала 25 секунд речи обрабатывались две минуты, потом сорок секунд речи укладывались в десять. Показываю на замерах и на деньгах, когда своё железо окупается на вашем потоке, а когда за него платят зря.",{"type":10,"content":345},[346,350,362,367,371,375,380,384,388,392,397,401,405,409,414,418,422,436,441,445,451,477,483,503,507,512,520,524,527,531],{"type":13,"content":347},[348],{"type":16,"text":349},"Голосовой ввод, который я собирал для сайта и для себя, сначала не заработал вообще: распознавание отставало от реального времени в пять раз. Развилку \"локальная модель или облачный API\" после этого я прохожу замерами - у неё есть числовой ответ, и он разный для разных задач.",{"type":13,"content":351},[352,354,360],{"type":16,"text":353},"Задача, на которой я прошёл оба пути до конца, - ",{"type":16,"marks":355,"text":359},[356],{"type":25,"attrs":357},{"href":358},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Fwhisperkey-diktovka-dlya-maka","распознавание речи",{"type":16,"text":361},". Расскажу, что получилось, и заодно сформулирую фильтр, по которому эту развилку стоит проходить в любом другом проекте.",{"type":36,"attrs":363,"content":364},{"level":38},[365],{"type":16,"text":366},"Задача",{"type":13,"content":368},[369],{"type":16,"text":370},"Голосовой ввод на сайте и в личных инструментах: человек говорит, получает готовый текст. К этому же классу относится расшифровка звонков и встреч - обычно самый первый реальный ИИ-проект в компании, потому что польза очевидна и данные уже есть.",{"type":13,"content":372},[373],{"type":16,"text":374},"Требования были такие: русский язык, приемлемая задержка, и аудио не должно уезжать в чужие руки без необходимости. Последнее - не паранойя: в звонках клиентов лежат персональные данные, и отправка их наружу превращает техническую задачу в юридическую.",{"type":36,"attrs":376,"content":377},{"level":38},[378],{"type":16,"text":379},"Первый заход: сделать красиво",{"type":13,"content":381},[382],{"type":16,"text":383},"Первым делом я взял готовую потоковую обёртку - из тех, что показывают текст прямо во время речи, слово за словом. Выглядит эффектно, и на демо-роликах всё летает.",{"type":13,"content":385},[386],{"type":16,"text":387},"На сервере без видеокарты она отставала от речи впятеро: 25 секунд речи обрабатывались две минуты. Пользоваться этим нельзя.",{"type":13,"content":389},[390],{"type":16,"text":391},"Сервер тут ни при чём: отдельная машина с быстрыми ядрами, взятая специально под задачу. Дело в подходе: потоковое распознавание постоянно пересчитывает уже сказанное, чтобы уточнить гипотезу, и на процессоре эта переработка съедает всё.",{"type":36,"attrs":393,"content":394},{"level":38},[395],{"type":16,"text":396},"Второй заход: сделать просто",{"type":13,"content":398},[399],{"type":16,"text":400},"Я выбросил потоковость и сделал скучно: человек говорит целиком, запись уходит на сервер одним куском, модель распознаёт её за один проход.",{"type":13,"content":402},[403],{"type":16,"text":404},"Сорок секунд речи обрабатываются за десять. После настройки - в восемь раз быстрее речи: час записи с планёрки превращается в текст за семь минут. Всё на том же сервере без видеокарты.",{"type":13,"content":406},[407],{"type":16,"text":408},"Заодно ушла вторая проблема, о которой я не думал заранее: потоковая выдача даёт рваный текст. Пока модель уточняет гипотезу, фраза на экране дёргается и переписывается. На записи целиком результат сразу чистый.",{"type":36,"attrs":410,"content":411},{"level":38},[412],{"type":16,"text":413},"Третий заход: посчитать на своём железе",{"type":13,"content":415},[416],{"type":16,"text":417},"Отдельная история - обработка на ноутбуке. В современных Маках есть отдельный ускоритель для нейросетей, и собранная под него модель разбирает час разговора за 17 секунд. Разделение на говорящих - примерно столько же. Ноутбук уже куплен, и счёт за минуту распознавания никто не выставляет.",{"type":13,"content":419},[420],{"type":16,"text":421},"Здесь же я собрал грабли, которые стоит знать заранее:",{"type":64,"content":423},[424,430],{"type":67,"content":425},[426],{"type":13,"content":427},[428],{"type":16,"text":429},"Безвентиляторный ноутбук перегревается, если гнать распознавание и разделение говорящих одновременно. Последовательно - те же секунды, но без троттлинга. Параллелить на одном ускорителе бессмысленно.",{"type":67,"content":431},[432],{"type":13,"content":433},[434],{"type":16,"text":435},"Затравка модели (список терминов, чтобы правильно писала специальные слова) должна быть обычной фразой, а не списком. Список, начинающийся со слова \"Термины:\", модель вставляла прямо в расшифровку, а на плохом звуке зацикливалась и повторяла его. Затравку она воспринимает как начало текста и продолжает его. После переписывания живым предложением мусор исчез, и скорость выросла втрое.",{"type":36,"attrs":437,"content":438},{"level":38},[439],{"type":16,"text":440},"Фильтр: когда локально выигрывает",{"type":13,"content":442},[443],{"type":16,"text":444},"Из этой и соседних задач сложилось правило, по которому я развилку прохожу.",{"type":13,"content":446},[447],{"type":16,"marks":448,"text":450},[449],{"type":204},"Локально выигрывает, когда:",{"type":64,"content":452},[453,459,465,471],{"type":67,"content":454},[455],{"type":13,"content":456},[457],{"type":16,"text":458},"нагрузка постоянная и предсказуемая - расшифровка всех звонков, обработка всех документов;",{"type":67,"content":460},[461],{"type":13,"content":462},[463],{"type":16,"text":464},"данные чувствительные и их отправка наружу создаёт отдельную юридическую задачу;",{"type":67,"content":466},[467],{"type":13,"content":468},[469],{"type":16,"text":470},"задача узкая, и под неё есть небольшая специализированная модель;",{"type":67,"content":472},[473],{"type":13,"content":474},[475],{"type":16,"text":476},"нужна независимость от чужой доступности, тарифов и геополитики.",{"type":13,"content":478},[479],{"type":16,"marks":480,"text":482},[481],{"type":204},"Облако выигрывает, когда:",{"type":64,"content":484},[485,491,497],{"type":67,"content":486},[487],{"type":13,"content":488},[489],{"type":16,"text":490},"нагрузка редкая или рваная - железо будет простаивать;",{"type":67,"content":492},[493],{"type":13,"content":494},[495],{"type":16,"text":496},"задача требует рассуждений: разбор смысла, написание текста, принятие решений;",{"type":67,"content":498},[499],{"type":13,"content":500},[501],{"type":16,"text":502},"вы ещё проверяете гипотезу и не знаете, взлетит ли вообще.",{"type":13,"content":504},[505],{"type":16,"text":506},"Практически это чаще всего означает гибрид, и у меня он именно такой: распознавание речи - локально, на своём железе, а причёсывание расшифровки в читаемый текст - облачной моделью. Аудио наружу не уходит, а за интеллект платится там, где он действительно нужен.",{"type":36,"attrs":508,"content":509},{"level":38},[510],{"type":16,"text":511},"Про деньги",{"type":64,"content":513},[514],{"type":67,"content":515},[516],{"type":13,"content":517},[518],{"type":16,"text":519},"Считайте не стоимость запроса, а стоимость месяца при вашей нагрузке. Облачный счёт растёт вместе с потоком, своё железо покупается один раз. И это ещё не всё: главная строка - часы, которые сейчас тратит на это живой человек, умноженные на его ставку. При постоянном потоке железо окупается быстро, при редких обращениях не окупается никогда.",{"type":36,"attrs":521,"content":522},{"level":38},[523],{"type":16,"text":299},{"type":124,"attrs":525},{"id":526,"junction":127,"collection":128},"1f3bb2ac-0689-4d3d-a55f-393549604720",{"type":13,"content":528},[529],{"type":16,"text":530},"Посчитайте на своих цифрах. При ставке 500 рублей в час двадцать часовых созвонов в месяц - это 10 000 рублей чужого времени только на прослушивание, и столько же в следующем месяце. Своё железо проходит те же двадцать часов за пару часов и счёт за минуту не выставляет. Плюс риск: если запись с персональными данными ушла наружу, разбор считается днями руководителя по 7 000 - 10 000 рублей.",{"type":124,"attrs":532},{"id":533,"junction":127,"collection":136},"e89df558-4c1d-4ad8-ad47-e2771b55b20e","Весы: монолитный блок против лёгкой формы из тонких линий","Локально или в облаке: когда локальная модель дешевле API","Когда своё железо окупается, а когда дешевле облачный API. Реальные замеры на распознавании речи и расчёт в рублях на вашем потоке звонков.","2026-08-27T17:42:48.000Z",[539,541],{"sort":145,"tags_id":540},{"name":147},{"sort":38,"tags_id":542},{"name":150},[544,547],{"id":533,"sort":138,"collection":136,"item":545},{"cta_variant":166,"heading":167,"body":546,"button_label":169,"url":138,"glow":170},"У вас копятся записи звонков и встреч, и вы выбираете между своим железом и облаком. Опишите задачу - посчитаю, что дешевле на вашем потоке и что при этом останется внутри компании.",{"id":526,"sort":138,"collection":128,"item":548},{"items":549,"columns":139},[550,553,556],{"lead":551,"text":552},"10 000 рублей в месяц","двадцать часов созвонов в месяц, которые сейчас кто-то слушает по ставке 500 рублей в час",{"lead":554,"text":555},"7 минут на час записи","столько занимает расшифровка на сервере без видеокарты вместо часа прослушивания",{"lead":159,"text":557},"день руководителя, съеденный разбором, если запись с персональными данными ушла наружу",{"id":559,"modified_on":560},"64bd6f0e-23d1-44b4-9f73-ecf6098c1280","2026-08-27T18:12:51.408Z",{"id":562,"title":563,"slug":564,"excerpt":565,"content":566,"cover_alt":684,"cover_position":138,"reading_time":139,"seo_title":685,"seo_description":686,"date_published":687,"date_modified":138,"source_lead":138,"rubrics":688,"blocks":693,"cover":706},"b4b00a32-20a6-4557-b217-16867693b50b","Работает, но врёт: как геоблокировки ломают ИИ-систему незаметно","geobloki-i-tihie-otkazy","Поиск в системе не работал минимум три недели, а мониторинг был зелёный: ИИ-агент съедал ошибку инструмента и спокойно отвечал по памяти. Разбираю класс поломок, при которых всё \"работает\", - блокировки по географии, тихие отказы и то, как их вообще заметить.",{"type":10,"content":567},[568,580,585,589,593,597,602,606,610,614,618,623,627,631,636,644,652,656,660,664,667,671,675],{"type":13,"content":569},[570,572,578],{"type":16,"text":571},"Расскажу про класс поломок, с которым в России теперь сталкивается любой, кто строит ИИ-системы: отказ внешнего сервиса по географическому признаку. ",{"type":16,"marks":573,"text":577},[574],{"type":25,"attrs":575},{"href":576},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Favtomatizaciya-kotoraya-padaet","Падение видно сразу",{"type":16,"text":579},", его чинят за час. Здесь другое: система продолжает отвечать, отчётность зелёная, а результат тихо стал хуже. Сервисы дальше без названий - разговор про класс поломок, названия к нему ничего не добавят.",{"type":36,"attrs":581,"content":582},{"level":38},[583],{"type":16,"text":584},"Что случилось",{"type":13,"content":586},[587],{"type":16,"text":588},"В одной системе ИИ-ассистент умеет искать в интернете - это отдельный инструмент, который он вызывает, когда своих знаний не хватает. Я полез в журналы по другому поводу и от нечего делать посмотрел статистику вызовов поиска.",{"type":13,"content":590},[591],{"type":16,"text":592},"За всё окно хранения журналов - две недели, 335 вызовов - успешных не было ни одного. Ноль. Поиск был мёртв как минимум с начала месяца.",{"type":13,"content":594},[595],{"type":16,"text":596},"При этом в системе не горело ничего. Запуски числились успешными, пользователи не жаловались, поддержка была спокойна. Причина проста и от этого неприятна: ИИ-агент устроен так, что ошибку инструмента он обрабатывает сам. Инструмент не ответил - агент пожал плечами и ответил по памяти. Формально диалог завершён успешно. Фактически человек получил ответ без свежих данных и не узнал об этом.",{"type":36,"attrs":598,"content":599},{"level":38},[600],{"type":16,"text":601},"Как отличить гео от сломанного ключа",{"type":13,"content":603},[604],{"type":16,"text":605},"Дальше началась диагностика, которая заняла бы дни, если бы не одна привычка: при странном отказе внешнего сервиса первым делом сравнить его поведение из разных точек.",{"type":13,"content":607},[608],{"type":16,"text":609},"Сервис отвечал ошибкой 403 и страницей-заглушкой вместо данных. С зарубежного адреса тот же самый ключ работал. С двух независимых российских адресов - отказ. А запрос вообще без ключа с тех же российских адресов получал внятную ошибку 401 в json. Значит, сеть проходит, адрес не в бане, отвечает само приложение. Режут именно вызов с ключом.",{"type":13,"content":611},[612],{"type":16,"text":613},"Это важное различение. Битый ключ даёт 401 и внятное сообщение. Гео даёт 403 и страницу-заглушку. Разница в одну цифру, а выводы противоположные: в первом случае перевыпускаете ключ, во втором перевыпуск не поможет никогда.",{"type":13,"content":615},[616],{"type":16,"text":617},"Отдельная ловушка того же семейства: один известный шлюз к языковым моделям отвечает на запросы из дата-центров кодом 403 с формулировкой про политику безопасности, а в другом сценарии - кодом 401. То есть 401 от него с сервера - это не протухший ключ, а тот же самый блок. Я потратил на эту догадку время дважды и теперь держу её записанной.",{"type":36,"attrs":619,"content":620},{"level":38},[621],{"type":16,"text":622},"Масштаб проблемы шире, чем кажется",{"type":13,"content":624},[625],{"type":16,"text":626},"Проверка соседних сервисов с тех же адресов дала пёструю картину: часть поисковых API режет российские адреса наглухо, часть работает без вопросов. Отдельная история - мессенджеры: исходящие в один популярный мессенджер из российского облака стабильно упираются в таймаут. У этого есть красивое следствие: если алерты о сбоях настроены туда же, то оповещатель падает на отправке оповещения. Про аварии не узнаёт никто, и мониторинг снова зелёный.",{"type":13,"content":628},[629],{"type":16,"text":630},"Общий вывод простой: в 2026 году доступность внешнего сервиса - это не константа, а переменная, зависящая от того, откуда вы вышли в интернет. Причём меняется она без предупреждения и без письма на почту.",{"type":36,"attrs":632,"content":633},{"level":38},[634],{"type":16,"text":635},"Что с этим делать",{"type":13,"content":637},[638,642],{"type":16,"marks":639,"text":641},[640],{"type":204},"Считать внешний сервис ненадёжным по умолчанию:",{"type":16,"text":643}," канал до него вам не принадлежит. И не гасить его ошибки внутри агента молча - если инструмент не ответил, это должно попадать в журнал сбоев и в оповещения, даже когда агент справился без него.",{"type":13,"content":645},[646,650],{"type":16,"marks":647,"text":649},[648],{"type":204},"Ловить тихие отказы отдельно.",{"type":16,"text":651}," Мониторинг \"процесс завершился успешно\" здесь бесполезен. Нужны метрики результата: сколько вызовов инструмента вернули данные, а не ошибку; какая доля ответов агента опиралась на поиск. Хорошая проверка на здравый смысл - раз в месяц открыть журналы и посмотреть, что вообще происходит внутри успешных запусков.",{"type":13,"content":653},[654],{"type":16,"text":655},"Весь мой трафик к зарубежным сервисам выходит наружу через одну точку, которой я управляю.",{"type":13,"content":657},[658],{"type":16,"text":659},"Держать запасного поставщика: второй сервис того же назначения, заранее проверенный и настроенный, на который переключаются одной настройкой. И не строить алерты на канале, который может отвалиться, - оповещения о сбоях должны идти по маршруту, независимому от того, что они охраняют.",{"type":36,"attrs":661,"content":662},{"level":38},[663],{"type":16,"text":299},{"type":124,"attrs":665},{"id":666,"junction":127,"collection":128},"2c691b05-9b0c-4b2d-906b-c6dc1369d67e",{"type":13,"content":668},[669],{"type":16,"text":670},"Считайте на своих числах. Три недели бот отвечал по памяти - прикиньте, сколько таких ответов пришлось переделывать руками. Например, двадцать штук по часу работы при ставке 500 рублей - это 10 000 рублей. Дороже другое: заявка, потерянная на устаревшем ответе, в B2B стоит от 3 000 до 15 000 рублей. И даже полчаса в журналах раз в месяц - это 250 рублей при той же ставке.",{"type":13,"content":672},[673],{"type":16,"text":674},"Если ваша система висит на зарубежном API, следующий вопрос - что перенести к себе. В соседней статье считаю, где своё железо реально выигрывает, а где это лишние деньги.",{"type":13,"content":676},[677,679],{"type":16,"text":678},"Читать дальше: ",{"type":16,"marks":680,"text":683},[681],{"type":25,"attrs":682},{"href":27},"Локально или в облаке: где своё железо реально выигрывает у API","Ровный ряд горящих индикаторов и оборванный кабель за панелью","Геоблокировки и ИИ-сервисы: тихие отказы, которые не видно в мониторинге","Поиск не работал три недели, а система считала запуски успешными: ИИ-агент съедал ошибку инструмента и отвечал по памяти. Как ловить тихие отказы и что делать с блокировками по IP.","2026-08-27T17:35:48.000Z",[689,691],{"sort":145,"tags_id":690},{"name":147},{"sort":38,"tags_id":692},{"name":150},[694],{"id":666,"sort":138,"collection":128,"item":695},{"items":696,"columns":139},[697,700,703],{"lead":698,"text":699},"0 из 335","вызовов поиска сработали за две недели, а система считала запуски успешными",{"lead":701,"text":702},"от 3 000 рублей","цена одной заявки в B2B, потерянной на ответе без свежих данных",{"lead":704,"text":705},"1 точка вместо 15","столько мест правите при смене выхода наружу, если канал один",{"id":707,"modified_on":708},"9f4b69c4-2c6f-438a-abc2-5de5ab33ab96","2026-08-27T18:12:56.230Z"]