Обновить
128K+

Проектирование API *

О создании API

35,67
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Tech-таланты, реальные кейсы и хардкор

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели11K

Каким запомнился VTB API Hackathon и зачем это банку

В этой статье мои коллеги — лидеры треков  VTB API Hackathon Александр Галкин, Диана Налегач и Камилла Куликова — расскажут, какие задачи моделировали, какие архитектурные решения видели у команд и почему именно такие задачи сегодня определяют развитие финтеха.

Читать далее

Mode collapse в авто-блоге: четыре пятницы подряд LLM приносила нам один и тот же «спорный вопрос про ИИ»

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.4K

Это история про открытый креативный промпт к LLM, оставленный без присмотра. Через месяц он превратил пятничную рубрику нашего блога в гимнастику парафразов одного и того же тезиса. Поймал я это не на первой пятнице и даже не на второй: каждая отдельная статья сама по себе выглядела нормально. На четвёртой стало очевидно.

Расскажу, какие четыре вещи я попробовал, прежде чем признать, что промпт-инжинирингом эту штуку не лечат. По дороге всплыло, что часть проблемы сидела не в промпте, а в нашей собственной конфигурации Gemini, на которую я не сразу обратил внимание (точнее - вообще не видел). И как в итоге мы перевели генератор тем с открытого «придумай вопрос» на заранее детерминированную ротацию из курируемого пула. Без файнтюна, без RAG, без переезда на другую модель.

Читать далее

Model Context Protocol (MCP): как ИИ-агенты «разговаривают» с внешним миром

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели12K

Если вы читали или смотрели видео про MCP, то наверняка сталкивались с таким комментарием:

«Спасибо, ещё одна статья, из которой я ничего не понял».

Аналогии и пояснения вроде «MCP — это как USB Type-C» или «MCP — это Tools, Resources и Prompts» лично мне не добавляли понимания. Поэтому я решил подробно изучить данную технологию и написать статью, где будет понятно, достоверно и применимо. Без магии. Попутно я прошёл обучение у Anthropic (ссылки дам, сертификаты выдают, курсы бесплатные, cправда на английском).

Я ставил себе цель ответить на вопросы:

Что такое MCP и как он связан с ИИ?

Как чат GPT (большая языковая модель, LLM) может вызвать какой-то инструмент (tool)?

Модель же языковая, т.е. она умеет говорить, рассуждать, отвечать, но никак не делать. Как LLM может читать файлы, вызывать программы, открывать интернет сайты, вызывать внешние API?

Для программистов, кто в теме и уже использовал MCP-сервера, т.е. знает серверные примитивы: tools, resources и prompts, возможно будут интересны клиентские примитивы: sampling, roots, elicitation. Они звучат загадочно и трудно переводимы. И чтобы вас заинтриговать: MCP-сервер благодаря sampling может «сжигать» ваши LLM-токены для выполнения своих серверных задач. А благодаря roots получать доступ к файлам на вашем компьютере.

Итак, поехали.

Я устал читать 100+ сообщений в Telegram и написал бота, который делает саммари и отвечает как AI-ассистент

Время на прочтение4 мин
Охват и читатели7.7K

Всем привет, меня зовут Ян, я разработчик. Мне интересно следить и участвовать в дискуссиях на разные темы: разработка, devops, it стартапы, чаты друзей, собственников жилья — не важно). Все эти обсуждения живут в Telegram и в Max в том числе, но сейчас речь про Telegram.

Однажды утром я проснулся и увидел в чате друзей 127 новых сообщений. Чтобы понять, о чём вообще был разговор, мне нужно было:

— Пролистать весь чат.
— Прочитать десятки реплик.
— Восстановить контекст обсуждения в своей голове.

В какой‑то момент появилась простая мысль:
«Почему нельзя просто получить краткое саммари обсуждения прямо в личку по подписке или увидеть сводку в чате? Чтобы бот прочитал всё за меня и выдал краткую, но понятную выжимку».

Читать далее

Telegraph API: CONTENT_TOO_BIG приходит раньше обещанных 64 КБ. Измеряем реальный лимит и разбираем обходной путь

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.5K

Telegraph API обещает принимать content до 64 КБ, но на практике CONTENT_TOO_BIG прилетает уже на 17-20 КБ. Разбираю, как измерял реальный лимит, при чём тут UTF-8 vs UTF-16 для кириллицы, и каким обходным путём чинил молчаливую деградацию RU-канала.

Читать далее

api2app: Использование совместно с FastAPI

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.9K

Для создания графического интерфейса для приложений на FastAPI часто Python-разработчики используют что-то вроде gradio или streamlit. В этом уроке я расскажу про ещё одну альтернативу - api2app.

Отличие этой альтернативы в том, что вам не нужно изучать библиотеки и программировать, графический интерфейс для своего приложения можно создать, используя другой интуитивно понятный графический интерфейс. При этом код не будет привязан к какому-то стороннему серверу, вы сможете его скачать и использовать на своём сервере. Кроме того, при помощи api2app вы можете тестировать свои API.

Читать далее

Режем монолит по-живому или история ускорения одного хорошего сервиса

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели4.7K

Привет, Хабр. Меня зовут Алексей Постригайло. Двадцать с лишним лет я занимаюсь системной интеграцией и управлением проектами, сейчас — старший партнер одного крупного ИТ-интегратора. Здесь я рассказываю о технических и организационных подробностях наших проектов. 

Меня, признаться, удивило, что наш предыдущий рассказ — тот самый «больнючий» опыт про СТО — так неожиданно стал лидером по дочитыванию среди наших статей. Мы решили, что стоит продолжить кейсы с разными «граблями» и успехами, которые помогли нам научиться кодить лучше и строить процессы грамотно. Берите на вооружение полезное и не повторяйте наших ошибок. Поехали.

Читать далее

Анализ и модернизация коннектора баз данных с помощью AI-агентов

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели6.2K

4-я статья из цикла туториалов о вариантах кастомизации своего бизнес-портала в Битрикс24.

Сегодня рассказываем о работе с уже существующим проектом через AI-агентов. ИИ хорошо справляется с созданием новых приложений, но при работе с готовыми проектами чаще возникают сложности — например, при разборе архитектуры и внесении изменений без поломок

В статье проанализируем существующий проект BI-коннектора, который нужен для работы с аналитикой, подключим его к порталу, покроем тестами и оптимизируем работу с базами данных. По ходу работы подробно разберём устройство проекта, его назначение и использование для бизнес-целей.

Что есть в других статьях на сегодня: 
1. Пишем первое приложение с AI-стартером, чтобы видеть прибыли и убытки
2. Добавляем в бизнес-портал Битрикс24 роботов для автоматизации
3. Что даёт воспроизводимая среда разработки и как развернуть контейнеры на VPS 
4. Анализ и модернизация коннектора баз данных с помощью AI-агентов (вы здесь)
5. Создание чат-бота в портале Битрикс24 с помощью AI-агентов

Читать далее

Как я парсил банковские платёжки всех российских банков на Python: история боли, костылей и XML-матрёшек

Время на прочтение17 мин
Охват и читатели7K

Привет, Хабр! (И тебе, случайный бухгалтер, который думает, что «выгрузить из банка» - это нажать одну кнопку. И тебе, 1С-разработчик, который слышит «парсинг PDF» и сразу уходит на больничный. И тебе, Python-разработчик, который уверен, что pip install magic_solution решит любую проблему.)

Сегодня расскажу, как мне поставили задачу, от которой у SAP-а ушло, видимо, несколько команд и много времени, а мне дали на это… ну, скажем так, поменьше. Задача звучала элегантно, но всегда есть но, и не одно))

(Спойлер для тех, кому лень читать: я узнал, что Сбербанк формирует WORD-документы с такой XML-вложенностью, что в ней можно заблудиться, ВТБ зачем-то маскирует WORD под RTF, а файл на 10 000 платёжек из 37 мегабайт разворачивается в 1 гигабайт XML. И да, всё по итогу заработало.)

Читать далее

Кризис инструментария API: почему разработчики бегут от Postman и его клонов?

Время на прочтение5 мин
Охват и читатели17K

Всю свою карьеру разработчика я пользовался Postman. Помню его ещё простым расширением Chrome, слегка облегчавшим тестирование API. Жизнь в времена была гораздо проще. Сегодня я присоединяюсь к растущей толпе разработчиков, отказывающихся от этих инструментов, потому что они продались.

Великое предательство: как наши любимые инструменты обернулись против нас

В мире инструментария API становится популярным паттерн, отражающий ситуацию с другими инструментами разработчиков: многообещающий продукт получает поддержку и его начинают использовать, после чего корпорации принудительно ухудшают его.

Postman, когда-то бывший любимцем всех разработчиков, стал наглядным примером такой трансформации. Переломным для многих моментом стало удаление Scratchpad (офлайн-режим). После этого — снижение производительности и привязка к облачному сервису. Внезапно мы оказались вынуждены синхронизировать свою работу с облаком Postman для доступа к базовому функционалу (привет, Microsoft?). Во-первых, это вставляет палки в колёса разработчиков, работающих над конфиденциальными проектами в сфере банкинга и здравоохранения, а также в государственном секторе. В этом и есть смысл — заставить их платить за инструмент, максимизировать прибыль руководства, поэтому наносимый отрасли сопутствующий ущерб не учитывается.

Читать далее

«А трактор случайно не в залоге?» — история одной интеграции с ФЦИИТ

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели11K

«— А трактор случайно не в залоге?» — с такого вопроса обычно и начинался рабочий день сотрудников департамента залогового обеспечения в нашем банке. За ним стоит однотипная рутина, на которую раньше уходила большая часть времени: открыть Реестр уведомлений о залоге движимого имущества, ввести данные клиента, подождать результат, проанализировать, принять решение — и так по каждому.

Проверка одного заемщика занимает не больше пяти минут, но, когда за час приходит сотня заявок, ручной режим превращается в узкое горлышко.

Так в 2024 году перед нами встала задача: автоматизировать выгрузку данных о залогах движимого имущества из реестра, оператором которого является Федеральная нотариальная палата. Я выступала системным аналитиком от системы, отвечающей за взаимодействие банка с внешними сервисами, — оказалась в самом интересном месте: между банком и внешним миром.

В этой статье расскажу, как мы подружили банк с ФЦИИТ, с какими трудностями столкнулись и что из этого вышло.

Материал будет полезен системным и бизнес-аналитикам, которые только начинают проектировать интеграции с внешними системами.

Читать далее

Как приложения скрывают окна от захвата экрана: SetWindowDisplayAffinity, ScreenCaptureKit и что сломалось в macOS 15

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.7K

Если сделать скриншот Netflix или окна воспроизведения в Spotify, на месте видео окажется чёрный прямоугольник. То же произойдёт при демонстрации экрана в Zoom, в записи через OBS и даже в Snipping Tool. Звук идёт, содержимого нет.

Это не защита кодека и не трюк с OpenGL-поверхностями. Это один флаг в одном API, который сообщает оконной системе: «это окно не должно попадать в захваченные кадры». Флаг публичный, документированный, появился в Windows 10 ещё в 2020 году и используется любым приложением, которому нужно закрыть содержимое от скриншотов: менеджерами паролей, банковскими клиентами, 2FA-токенами.

На macOS раньше был симметричный аналог, но в macOS 15 Sequoia Apple сломала его против ScreenCaptureKit, и теперь картина там сильно запутаннее. На Linux всё зависит от дисплейного сервера. В браузерах работает через цепочку платформенных API.

Опыт накопился за то время, пока мы собирали десктопное приложение для онлайн-собеседований, которому эта механика нужна технически: окно с подсказками не должно попадать в демонстрацию экрана. Про продукт — в одном абзаце в конце. Вся остальная статья про то, что под капотом.

Читать далее

Как я убрал чаты из оформления заявок на бетонном заводе: Bitrix24, 1С и отдельное приложение

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.7K

Хотел бы рассказать про один проект, где я участвовал сразу в двух ролях: и как разработчик, и как аналитик. Это не история про идеальную архитектуру и не кейс в духе "сделали красиво с первого раза". Скорее наоборот: через боль и страдания, несколько не самых очевидных решений и пара довольно проблемных мест. Но в итоге что-то да получилось.

На старте у нас был бетонный завод с полностью самописной 1С. В ней жила вся управленческая часть, но менеджеров туда лишний раз не пускали. Поэтому начали внедрять Bitrix24, чтобы менеджеры работали в CRM, а всё, что нужно, дальше уже делалось в 1С.

Сначала идея выглядела достаточно прямой. На стороне 1С отдельный разработчик настраивал приём и передачу данных. Я на стороне Bitrix24 поднимал API-часть: получать контрагентов и номенклатуру, передавать обратно заявки и отправлять их в 1С при переходе на нужную стадию. Между менеджером и заводом оставались операторы: они проверяли заявку, и только потом она уходила в производство.

Читать далее

Ближайшие события

Безошибочная работа с Kafka из Node js. Часть 2 Консьюмер

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели5.7K

Если предыдущая часть была посвящена аспектам, связанным с публикацией сообщений, то в этой части основное внимание уделено обработке сообщений, проектированию консьюмеров и проблеме ребаланса в консьюмер группе.

Читать далее

Plumb Messenger, или все-таки Titanium? Как я подсматривал у больших дядь и создавал бекэнд для самописного мессенджера

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели5.3K

В прошлой статье я притащил на Хабр Plumb — свой самописный мессенджер, цифровой бункер, гаражную игрушку и личный способ не зависеть от чужой кнопки «сегодня мы вас немножко ограничим».

Я тогда честно сказал: это не убийца Telegram, не pitch deck для инвестора и не стартап с парнем в худи, который произносит слово «экосистема» так важно, будто сейчас вызовет дождь.

Это моя штука.

Мой велосипед.

Мой бункер.

Мой маленький Франкенштейн, который сначала лежал на столе, потом резко подпрыгнул, потом сел, посмотрел на меня и как будто сказал: «Ну что, папаша, теперь у нас real-time».

Хабр отреагировал как Хабр.

Кто-то пришел смотреть скриншоты. Кто-то начал вспоминать ICQ и красивый UIN как первую любовь с модемным звуком. Кто-то сразу достал nmap, тяжелый взгляд и внутреннего сеньора, который уже не верит словам «вот новый чатик».

И вот ради этого внутреннего сеньора я сегодня открываю вторую дверцу.

Поговорим про бэкенд.

Читать далее

Почему в архитектуре платформы мы выбрали Apache APISIX

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.4K

Почему в нашей платформе роль API Gateway по-прежнему выполняет Apache APISIX, хотя альтернатив на рынке хватает?

В этой статье без долгих рассуждений разбираю наш выбор: какие требования были у платформы, как мы проверяли кандидатов, где возникали спорные моменты и почему в итоге остановились на связке APISIX, OIDC, Keycloak и OPA.

Читать далее

Как я перестал мучить людей дисклеймерами и научил нейросеть заполнять фильтры

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.1K

У меня сайт по поиску работы. Там куча джоб-бордов подключена — hh, SuperJob, Зарплата, ТрудВсем и ещё пара штук. Всё круто, вакансии тянутся, ИИ помогает резюме составлять. Но была одна проблема, которая убивала всю конверсию на корню.

Люди не могли пользоваться поиском.

Вот серьёзно. Заходишь в аналитику — и видишь: человек открывает страницу с фильтрами, смотрит на все эти поля, что-то тыкает, жмёт «Найти» — и получает фигню. Либо 500 вакансий дворников, хотя он вообще-то бухгалтер, либо пустой экран «ничего не найдено». И уходит. Навсегда.

Я думал: ну это же элементарно! Написал в строке «Python разработчик», выбрал город Москва, зарплату от 200к — и готово. Как на любом нормальном сайте. Но нет. Люди как будто впадали в ступор. Я начал копать.

Читать далее

Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.9K

Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности".

В этой статье разберу, как устроена транскрипция в Jitsi Meet под капотом, почему это не "просто включить кнопку", с какими конфигурационными нюансами пришлось столкнуться и как в итоге был выстроен пайплайн от видеозвонка до структурированного текста.

Читать далее

REST API: гайд по проектированию от принципов до боевых кейсов

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели18K

В этой статье разбираем реальные принципы REST, модель зрелости Ричардсона. Полезно всем, кто пишет бэкенд или проектирует микросервисы.

Читать далее

Показываю, как я заменил JSON на TOON в LLM-промптах и сэкономил 40% токенов

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели13K

Привет! Меня зовут Андрей, я фронтенд-разработчик в Cloud.ru. Я работаю с LLM API каждый день. И каждый день отправляю в контекст структурированные данные: списки товаров, логи, пользователей, метрики. Все это — JSON. И все это — деньги.

В какой-то момент я посчитал, сколько токенов из моего промпта уходит на фигурные скобки, кавычки и повторяющиеся ключи. Оказалось — много. Слишком много.

Потом я попробовал TOON. Вот что из этого вышло.

Читать далее