История трёх технологий которые изменили AI (часть 1/3)
После марафона на 30 дней по sgr-deep-research (спасибо вам за 500+ звезд) сел разбираться за историю и матчасть Structured Output, Function Calling и MCP, оказалось это история полная косяков провайдеров и года потраченного на исправление того что должно было работать с первого релиза
И так составил вот такой вот таймлайн дабы закрепить изученный материал и передаю его вам =)
Июнь 2023: Function Calling появился первым и сломанным
OpenAI 13 июня выкатили Function Calling для GPT-4 и GPT-3.5-turbo, идея была крутая, LLM может вызывать функции с аргументами через JSON Schema контракт, разработчики обрадовались но радость длилась недолго
Проблема была жосткая, аргументы функций приходили невалидными!
LLM могла выдать temperature как строку "twenty degrees" вместо числа 20, могла забыть кавычки у ключей, могла написать "celsuis" вместо "celsius"
Все лепили костыли в виде retries и validation вручную (я тут менял работу из DevOps в CEO)
OpenAI не сказали об этой проблеме явно, просто в документации было "рекомендуется валидировать аргументы", на деле reliability меньше 60%, в production такое не работает
Июль 2023: Structured Output как отдельное решение
Параллельно появилась библиотека Outlines, она решала другую задачу, как заставить LLM генерировать строго валидных структур
Механика простая, генерировать маски для токенов через logit-bias, блокировать невалидные токены на уровне бэкенда внутри модели
Вышла научная работа "Efficient Guided Generation for Large Language Models", там описали как через Context-Free Grammar (CFG) контролировать генерацию на уровне токенов
Параллельно развивался guidance от Microsoft Research, их guidance реализовала constrained decoding
Она работает очень быстро: ~50 микросекунд на токен через CFG parser с алгоритмом Earley
Вся соль в том что Structured Output, Function Calling и guidance развивались ОТДЕЛЬНО почти год КАРЛ!
Как будто изобрели руль и колёса по отдельности а потом удивлялись почему машина не едет
Ноябрь 2023: JSON Mode не решил проблему
OpenAI добавили JSON Mode, он гарантировал валидный JSON синтаксически, но НЕ гарантировал соответствие schema!
Могли прилететь другие поля, неправильные типы данных
В тот же месяц Anthropic выкатили Claude 2.1с beta версией Tool Use на 200K контекстном окне, у них была та же проблема, аргументы могли быть невалидными
Индустрия билась над одной проблемой, как заставить LLM генерировать валидные аргументы для функций, каждый провайдер решал по своему, единого стандарта не было
Май 2024: Anthropic первыми сделали Tool Use стабильным
30 мая Anthropic объявили что Tool Use стал generally available для всего семейства Claude 3, reliability значительно вырос Проблема с невалидными аргументами почти исчезла, я предполагаю что они видимо встроили аналог Structured Output внутрь Tool Use первыми
Август 2024: 100% reliability достигнут
6 августа OpenAI выпустили gpt-4o-2024-08-06 которая достигла 100% reliability через комбинацию constrained decoding и fine-tuning, до этого gpt-4-0613 показывал меньше 40%
Важный момент: в официальном acknowledgments OpenAI признали что Structured Outputs вдохновлён работами open-source, включая outlines, jsonformer, instructor, guidance и lark
Ушёл ровно год чтобы довести до production-ready, целый год разработчики мучились с невалидными аргументами и писали костыли
Near-zero overhead в JSON generation означало что Structured Output почти не замедляет inference, это сделало технологию production-ready для высоконагруженных систем, интегрировали в MLC-LLM, SGLang, а в январе 2025 в vLLM и TensorRT-LLM на офф уровне
Ноябрь 2024: MCP как решение проблемы N×M интеграций
25 ноября Anthropic анонсировали Model Context Protocol, ответ на проблему что каждый AI агент требовал кастомную интеграцию с каждым data source
Апрель 2025: Google и OpenAI поддержали MCP
Google DeepMind с CEO Demis Hassabis публично подтвердили поддержку MCP, OpenAI тоже анонсировали поддержку протокола, это означало что MCP может стать стандартом де-факто
Post #1648
5.54K
- 🔥 38
- ❤ 20
- 👍 10