Что бы вы хотели знать о проблемах и задачах крупных компаний в Европе?
На Enterprise RAG Challenge в конце февраля придет с keynote Stephan Gillich. По его роду деятельности, у него есть куча инсайтов о крупном бизнесе в Европе. Он расскажет про задачи, которые компании пытаются с решать с помощью AI, что у них из этого выходит, и на что есть спрос.
Например, одна из таких вещей - OPEA - это комбайн вроде LangChain для enterprise, но из Linux Foundation и на более высоком уровне. В него вкладываются компании вроде AMD, Intel, ByteDance, SAP и China Unicom. И при этом про него в русскоязычном сегменте мало кто слышал.
Кстати, Stephan говорит, что спрос на локальные решения сейчас на самом деле очень большой, и Project Digits от NVidia вышел в очень удачное время.
Эти топики уже интересны, и будет про них очень здорово услышать подробнее. Но, может быть, еще есть какие-то вопросы вокруг этих тем? Задавайте свои вопросы в комментарии, я потом их соберу, обработаю и вынесу на Q&A сессию после Keynote.
Ваш, @llm_under_hood 🤗
На Enterprise RAG Challenge в конце февраля придет с keynote Stephan Gillich. По его роду деятельности, у него есть куча инсайтов о крупном бизнесе в Европе. Он расскажет про задачи, которые компании пытаются с решать с помощью AI, что у них из этого выходит, и на что есть спрос.
Например, одна из таких вещей - OPEA - это комбайн вроде LangChain для enterprise, но из Linux Foundation и на более высоком уровне. В него вкладываются компании вроде AMD, Intel, ByteDance, SAP и China Unicom. И при этом про него в русскоязычном сегменте мало кто слышал.
Кстати, Stephan говорит, что спрос на локальные решения сейчас на самом деле очень большой, и Project Digits от NVidia вышел в очень удачное время.
Эти топики уже интересны, и будет про них очень здорово услышать подробнее. Но, может быть, еще есть какие-то вопросы вокруг этих тем? Задавайте свои вопросы в комментарии, я потом их соберу, обработаю и вынесу на Q&A сессию после Keynote.
Ваш, @llm_under_hood 🤗
Какой из промптов будет давать более точный ответ?
Промпты почти одинаковые, меняется только порядок.
Сможете ответить сходу и объяснить почему?
Если сложно сказать, попробуйте запустить код несколько раз и убедиться сами. Абзац текста я добавлю в комментарии.
Второй вопрос - а какой из промптов будет давать более точный ответ в случае использования Structured Output и почему? 😜
Ваш, @llm_under_hood 🤗
PS: Это новая задачка, которую я решил добавить в практическую часть курса для выработки интуиции. Уж больно она наглядная и неожиданная.
Промпты почти одинаковые, меняется только порядок.
from openai import OpenAI
client = OpenAI()
prompt1 = f"How many times is word 'RAG' mentioned in the text? Answer with a number.\n<text>{text}</text>"
prompt2 = f"<text>{text}</text>\nHow many times is word 'RAG' mentioned in the text? Answer with a number."
for p in [prompt1, prompt2]:
completion = client.chat.completions.create(
temperature=0,
model="gpt-4o-2024-11-20",
messages=[
{"role": "user", "content":p}
]
)
print(completion.choices[0].message.content)
Сможете ответить сходу и объяснить почему?
Если сложно сказать, попробуйте запустить код несколько раз и убедиться сами. Абзац текста я добавлю в комментарии.
Второй вопрос - а какой из промптов будет давать более точный ответ в случае использования Structured Output и почему? 😜
class Response(BaseModel):
how_many_times_is_word_RAG_mentioned_in_text: int
for p in [prompt1, prompt2]:
completion = client.beta.chat.completions.parse(
model="gpt-4o-2024-11-20",
temperature=0,
response_format=Response,
messages=[
{"role": "user", "content": p}
]
)
print(completion.choices[0].message.parsed)
Ваш, @llm_under_hood 🤗
PS: Это новая задачка, которую я решил добавить в практическую часть курса для выработки интуиции. Уж больно она наглядная и неожиданная.
Reasoning кирпичик для Stargate
В предыдущих постах я оставил закладки, которые, приводят нас к сегодняшнему посту. Итак, следите за руками. Начнем мы с конца.
В прошлом посте я дал небольшую задачку на подумать - “Какой из промптов будет давать более точный ответ?”. Фишка там была в двух моментах.
Во-первых, на этот вопрос нельзя ответить теоретически. Да, можно упоминать головы внимания, positional encoding и кэши. Но на практике могут выстрелить совершенно другие нюансы. Правильного ответа тут нет, но есть правильный ход рассуждений:
(1) я считаю, что система будет работать так
(2) я прогнал код раз 10 и посчитал accuracy, получилось так
(3) я могу объяснить результаты так
Если прогнать этот тест хотя бы раз 5, то получится такая картина:
И вот второй нюанс. Если прогнать этот тест хотя бы на паре моделей из того же семейства, то картина может отличаться, вплоть до наоборот!
О чем это нам говорит? Нельзя верить только теории, как бы правдоподобно она не звучала. Нужно обязательно проверять гипотезы применительно к конкретной модели на конкретной задаче!
И если у нас внезапные нежданчики появляются на уровне простого промпта, то что можно ожидать от сложных систем, которые собираются из множества разнообразных паттернов?
Чтобы был шанс собрать стабильную систему со сложным reasoning, ее архитектура должна быть построена из достаточно простых блоков, которые можно индивидуально отлаживать, тестировать и улучшать. Чем запутанней область, тем больше усилий и времени надо потратить на аккуратное выстраивание всех цепочек.
Но если вложить время и усилия, то можно прописать reasoning. Чуть выше я писал историю про шаги в построении своей reasoning системы. Прошлой ночью случился шаг, к которому я шел три месяца:
Шаг N: Задал тестовый compliance вопрос ChatGPT o1 pro. Он думал 2m47s и провалился в грабли, через которые мы перешагнули на 11. А мой reasoning на базе 4o за 25s пришел к правильному выводу.
На самом деле, победа не так велика - общее решение всегда будет проигрывать специализированным решениям. Но галочка в зачетке всегда приятна.
И вот тут у нас есть классное совпадение - в США новый президент как раз объявил про проект Stargate.
Это чисто коммерческий проект по построению AI инфраструктуры на 500B USD, который организовали вместе крупные компании (причем не только из США). Государство там сбоку - ленточку перерезать и помочь с получением всяких разрешений. А бизнес - не дурак - вкладывать деньги будет только есть возможность получить отдачу. Значит, у них уже есть конкретные наработки про окупаемость.
Я думаю, что речь идет о масштабном внедрении вручную прописанных reasoning систем в разные отрасли экономики, начиная со здравоохранения, промышленности и заканчивая тем же IT.
Текущих технологий уровня 4o уже хватает, чтобы масштабировать интеллектуальный труд специалистов достаточно высокого уровня (не заменять их, а дополнять и усиливать). Я это прочувствовал, перенося мыслительные цепочки в compliance на логические блоки в reasoning системе. А что если использовать в качестве движка не 4o а сразу o1 pro? А что если активнее использовать o1 pro или o3 pro для процесса переноса?
У нас же появляется возможность масштабировать процессы и отрасли, которые раньше упирались в банальную нехватку специалистов! И вот тут начнется самое интересное. Скорее всего, это будущее и увидели те компании, которые рискнули вложить немаленькие суммы в проект Stargate.
Но если прищуриться в детали реализации всех этих проектов, мы все равно вернемся к аккуратному построению reasoning систем из небольших тестируемымых логических блоков с LLM под капотом. И тут работы более чем хватит всем.
Ваш, @llm_under_hood 🤗
PS: История заканчивается эпизодом IV про визуализацию цепочек.
В предыдущих постах я оставил закладки, которые, приводят нас к сегодняшнему посту. Итак, следите за руками. Начнем мы с конца.
В прошлом посте я дал небольшую задачку на подумать - “Какой из промптов будет давать более точный ответ?”. Фишка там была в двух моментах.
Во-первых, на этот вопрос нельзя ответить теоретически. Да, можно упоминать головы внимания, positional encoding и кэши. Но на практике могут выстрелить совершенно другие нюансы. Правильного ответа тут нет, но есть правильный ход рассуждений:
(1) я считаю, что система будет работать так
(2) я прогнал код раз 10 и посчитал accuracy, получилось так
(3) я могу объяснить результаты так
Если прогнать этот тест хотя бы раз 5, то получится такая картина:
gpt-4o-2024-11-20
Prompt q_first accuracy: 5/5 = 100
Prompt q_last accuracy: 0/5 = 0
И вот второй нюанс. Если прогнать этот тест хотя бы на паре моделей из того же семейства, то картина может отличаться, вплоть до наоборот!
gpt-4o-mini-2024-07-18
Prompt q_first accuracy: 0/5 = 0
Prompt q_last accuracy: 5/5 = 100
gpt-4o-2024-08-06
Prompt q_first accuracy: 4/5 = 80
Prompt q_last accuracy: 5/5 = 100
О чем это нам говорит? Нельзя верить только теории, как бы правдоподобно она не звучала. Нужно обязательно проверять гипотезы применительно к конкретной модели на конкретной задаче!
И если у нас внезапные нежданчики появляются на уровне простого промпта, то что можно ожидать от сложных систем, которые собираются из множества разнообразных паттернов?
Чтобы был шанс собрать стабильную систему со сложным reasoning, ее архитектура должна быть построена из достаточно простых блоков, которые можно индивидуально отлаживать, тестировать и улучшать. Чем запутанней область, тем больше усилий и времени надо потратить на аккуратное выстраивание всех цепочек.
Но если вложить время и усилия, то можно прописать reasoning. Чуть выше я писал историю про шаги в построении своей reasoning системы. Прошлой ночью случился шаг, к которому я шел три месяца:
Шаг N: Задал тестовый compliance вопрос ChatGPT o1 pro. Он думал 2m47s и провалился в грабли, через которые мы перешагнули на 11. А мой reasoning на базе 4o за 25s пришел к правильному выводу.
На самом деле, победа не так велика - общее решение всегда будет проигрывать специализированным решениям. Но галочка в зачетке всегда приятна.
И вот тут у нас есть классное совпадение - в США новый президент как раз объявил про проект Stargate.
Это чисто коммерческий проект по построению AI инфраструктуры на 500B USD, который организовали вместе крупные компании (причем не только из США). Государство там сбоку - ленточку перерезать и помочь с получением всяких разрешений. А бизнес - не дурак - вкладывать деньги будет только есть возможность получить отдачу. Значит, у них уже есть конкретные наработки про окупаемость.
Я думаю, что речь идет о масштабном внедрении вручную прописанных reasoning систем в разные отрасли экономики, начиная со здравоохранения, промышленности и заканчивая тем же IT.
Текущих технологий уровня 4o уже хватает, чтобы масштабировать интеллектуальный труд специалистов достаточно высокого уровня (не заменять их, а дополнять и усиливать). Я это прочувствовал, перенося мыслительные цепочки в compliance на логические блоки в reasoning системе. А что если использовать в качестве движка не 4o а сразу o1 pro? А что если активнее использовать o1 pro или o3 pro для процесса переноса?
У нас же появляется возможность масштабировать процессы и отрасли, которые раньше упирались в банальную нехватку специалистов! И вот тут начнется самое интересное. Скорее всего, это будущее и увидели те компании, которые рискнули вложить немаленькие суммы в проект Stargate.
Но если прищуриться в детали реализации всех этих проектов, мы все равно вернемся к аккуратному построению reasoning систем из небольших тестируемымых логических блоков с LLM под капотом. И тут работы более чем хватит всем.
Ваш, @llm_under_hood 🤗
PS: История заканчивается эпизодом IV про визуализацию цепочек.
А у какой локальной модели из топовых на моем бенчмарке есть удобный платный хостинг, который поддерживает нормальный constrained decoding (для CoT+SO)? В идеале сразу с openai-compatible API.
Чтобы можно было быстро удаленно потестировать гипотезу до разворачивания vLLM с guidance на каком-нибудь GPU.
Update: спасибо, нашел. Fireworks AI напрямую (или через OpenRouter) поддерживает Structured Outputs!
Ваш, @llm_under_hood 🤗
Чтобы можно было быстро удаленно потестировать гипотезу до разворачивания vLLM с guidance на каком-нибудь GPU.
Update: спасибо, нашел. Fireworks AI напрямую (или через OpenRouter) поддерживает Structured Outputs!
Ваш, @llm_under_hood 🤗
Визуализация Reasoning цепочек - Эпизод IV
Пора заканчивать reasoning историю. В этот раз будет про локальные модели и с картинками в комментариях.
- Эпизод I
- Эпизод II
- Эпизод III
- Reasoning кирпичик для Stargate
- Эпизод IV (этот)
Шаги 23 - 46: Долго и старательно доводил напильником онтологию. Получается в итоге что-то вроде графа, по которому “ползают” ассистенты. Причем в определенный момент, в зависимости от сложности задачи, мы запускаем несколько выделенных ассистентов в разные стороны.
Шаг 47: Задал тестовый compliance вопрос ChatGPT o1 pro. Он думал 2m47s и провалился в грабли, через которые мы перешагнули на шаге 11. А мой reasoning на базе 4o за 25s пришел к правильному выводу.
Шаг 48: Если отобразить семантические связи в виде графа, а потом подсветить на нем пройденные взаимосвязи, то получается интересная визуализация размышлений.
Шаг 49: 4o - это хорошо, но с ним связана куча рисков. А насколько много работы нужно для запуска всей системы целиком локально? Есть только один способ проверить - перенести и посмотреть, насколько сильно она глупеет.
Шаги 50-53: Про портирование работающих Structured Output / CoT цепочек с 4o на более болтливую Qwen2.5-72B-Instruct с “костыльным” constrained decoding.
Шаг 54: Запустил на паре тестовых запросов. Внезапно, но система доходит до конца там, где o1 pro ломается. Похоже, что тщательно вылизанные логические цепочки обладают бОльшим запасом прочности, чем я ожидал.
Шаг 55: Просадка по качеству заметна на этапе размышлений, если включить визуализацию - система с Qwen под капотом запускает сильно больше ассистентов в тупиковые направления исследований по графу. Но имеет значение, что в итоге тупики отсекаются, а итоговые ответы пока выглядят правильно. Дальше надо будет собирать тестовые таблицы для всех блоков и пристально анализировать различия в логике под микроскопом. Но это уже будет другая история.
Шаг 56: А что, если вместо Qwen2.5-72B взять модель попроще, проанализировать ошибки, укрепить цепочки, а потом запускать на модели помощнее?..
Вот на этом и все. Графы с цепочками размышлений ассистентов на базе ChatGPT 4o vs Qwen2.5-72B-Instruct закину в комментарии.
Ваш, @llm_under_hood 🤗
PS: Где можно прочитать про технологии выстраивания reasoning цепочек на сложных доменах? Я не знаю, сам этому учусь на ходу. Больше всего помогает Domain-Driven Design, работы Кристофера Александра, основы продуктовой разработки, и технологии из организации lean R&D комманд.
Пора заканчивать reasoning историю. В этот раз будет про локальные модели и с картинками в комментариях.
- Эпизод I
- Эпизод II
- Эпизод III
- Reasoning кирпичик для Stargate
- Эпизод IV (этот)
Шаги 23 - 46: Долго и старательно доводил напильником онтологию. Получается в итоге что-то вроде графа, по которому “ползают” ассистенты. Причем в определенный момент, в зависимости от сложности задачи, мы запускаем несколько выделенных ассистентов в разные стороны.
Шаг 47: Задал тестовый compliance вопрос ChatGPT o1 pro. Он думал 2m47s и провалился в грабли, через которые мы перешагнули на шаге 11. А мой reasoning на базе 4o за 25s пришел к правильному выводу.
Шаг 48: Если отобразить семантические связи в виде графа, а потом подсветить на нем пройденные взаимосвязи, то получается интересная визуализация размышлений.
Шаг 49: 4o - это хорошо, но с ним связана куча рисков. А насколько много работы нужно для запуска всей системы целиком локально? Есть только один способ проверить - перенести и посмотреть, насколько сильно она глупеет.
Шаги 50-53: Про портирование работающих Structured Output / CoT цепочек с 4o на более болтливую Qwen2.5-72B-Instruct с “костыльным” constrained decoding.
Шаг 54: Запустил на паре тестовых запросов. Внезапно, но система доходит до конца там, где o1 pro ломается. Похоже, что тщательно вылизанные логические цепочки обладают бОльшим запасом прочности, чем я ожидал.
Шаг 55: Просадка по качеству заметна на этапе размышлений, если включить визуализацию - система с Qwen под капотом запускает сильно больше ассистентов в тупиковые направления исследований по графу. Но имеет значение, что в итоге тупики отсекаются, а итоговые ответы пока выглядят правильно. Дальше надо будет собирать тестовые таблицы для всех блоков и пристально анализировать различия в логике под микроскопом. Но это уже будет другая история.
Шаг 56: А что, если вместо Qwen2.5-72B взять модель попроще, проанализировать ошибки, укрепить цепочки, а потом запускать на модели помощнее?..
Вот на этом и все. Графы с цепочками размышлений ассистентов на базе ChatGPT 4o vs Qwen2.5-72B-Instruct закину в комментарии.
Ваш, @llm_under_hood 🤗
PS: Где можно прочитать про технологии выстраивания reasoning цепочек на сложных доменах? Я не знаю, сам этому учусь на ходу. Больше всего помогает Domain-Driven Design, работы Кристофера Александра, основы продуктовой разработки, и технологии из организации lean R&D комманд.
Ловите второе preview бенчмарка v2 c Mistral 3 и DeepSeek-Llama-70B
Это - превью второй версии моего личного бенчмарка. Оно будет полезно тем командам, кто прошел курс и присматривается к возможностям новых LLM за один промпт ставить сложную многоходовую задачу и добиваться ее.
Тесты в нем собраны из проектов внедрения AI/LLM в бизнес задачах за последний год. Первоначальная задача бенчмарка - оценивать потенциал моделей для разворачивания систем с LLM под капотом на них.
Важно: плохая оценка на текущей стадии говорит не о том, что модель плохая, а просто что она не осилила все задачи за один промпт. На текущей стадии сбора бенчмарка я пока постепенно добавляю cамые сложные задачи из кейсов, а самые простые - выкидываю. Задача сейчас - набрать запас прочности бенчмарка, чтобы не было, как с первой версии, когда все топовые модели толпились на уровне выше 95%.
Попозже в бенчмарк добавится разбивка логических шагов на мелкие, классификация способностей по колонкам (как в первой версии), а некоторые тесты будут открыты. Думаю, весь процесс займет несколько месяцев.
В остальном все принципы и правила из первой версии бенчмарка, который я публиковал последние полтора года - сохраняются. Прочитать отчеты и ответы на частые вопросы можно тут.
Пара интересных инсайтов:
(1) дистиллят DeepSeek r1 llama-70B пока выглядит очень бодро. Но его обязательно нужно использовать со structured output
(2) Microsoft Phi-4 бодра, но JSON Schema в сыром виде не понимает, подавай ей примеры. Да и вообще, это применимо к моделям без нативного Structured Output в целом.
(3) Llama 3.3-70B тоже держится очень бодро. Она не так уж сильно отстает от r1-Llama-70B
Ваш, @llm_under_hood 🤗
Это - превью второй версии моего личного бенчмарка. Оно будет полезно тем командам, кто прошел курс и присматривается к возможностям новых LLM за один промпт ставить сложную многоходовую задачу и добиваться ее.
Тесты в нем собраны из проектов внедрения AI/LLM в бизнес задачах за последний год. Первоначальная задача бенчмарка - оценивать потенциал моделей для разворачивания систем с LLM под капотом на них.
Важно: плохая оценка на текущей стадии говорит не о том, что модель плохая, а просто что она не осилила все задачи за один промпт. На текущей стадии сбора бенчмарка я пока постепенно добавляю cамые сложные задачи из кейсов, а самые простые - выкидываю. Задача сейчас - набрать запас прочности бенчмарка, чтобы не было, как с первой версии, когда все топовые модели толпились на уровне выше 95%.
Попозже в бенчмарк добавится разбивка логических шагов на мелкие, классификация способностей по колонкам (как в первой версии), а некоторые тесты будут открыты. Думаю, весь процесс займет несколько месяцев.
В остальном все принципы и правила из первой версии бенчмарка, который я публиковал последние полтора года - сохраняются. Прочитать отчеты и ответы на частые вопросы можно тут.
Пара интересных инсайтов:
(1) дистиллят DeepSeek r1 llama-70B пока выглядит очень бодро. Но его обязательно нужно использовать со structured output
(2) Microsoft Phi-4 бодра, но JSON Schema в сыром виде не понимает, подавай ей примеры. Да и вообще, это применимо к моделям без нативного Structured Output в целом.
(3) Llama 3.3-70B тоже держится очень бодро. Она не так уж сильно отстает от r1-Llama-70B
Ваш, @llm_under_hood 🤗
o3-mini в бенчмарке на втором месте, добавил hard mode
Продолжаю портировать задачи из кейсов во вторую версию моего личного бенчмарка LLM на бизнес задачах. В этот раз я догрузил в него часть самых изуверских задачек из доклада про text-to-sql c Neo4j конференции. В итоге "потолок" для o1 (medium reasoning) просел до 67%. И это несмотря на то, что у всех моделей есть две возможности подумать в рамках своего reasoning - сначала свободный CoT, а потом еще наиболее эффективный checklist.
Кстати, свежая o3-mini пока закрепилась на втором месте.
Второй интересный момент. Llama 405B - 49%, а DeepSeek r1 с его 37/671B MoE параметрами - только 53%. Как видим, прогресс не такой уж большой.
Там еще рядом интересно примостилcя дистиллят r1 на базе Llama 70B c 50% точности, что уже интереснее. Если раньше базовые Llama хорошели после тюнов на OpenChat, то теперь пойдет мода на дистилляты. А еще больше очков этой модели дает то, что пока она у меня справляется с задачами без Structured Outputs (на Fireworks не завезли пока).
Замазанные колонки пока можно игнорировать - туда портировано слишком мало кейсов, чтобы были стабильные цифры. Потом открою.
SO - в Features - Structured Output (response schema), который можно из коробки уже найти у большинства моделей. Если так дело пойдет, то через пару месяцев можно просто будет перестать тратить время на модели без поддержки SO.
Costs пока не считаю, чтобы заранее не плакать. Но стоимости там должны заметно подрасти из-за cot/reasoning tokens, если сравнивать с первым поколением бенчмарка.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк личный, закрытый, в черновой версии. Кому хочется стабильности см полтора года отчетов по не-reasoning бенчмарку LLM на бизнес задачах.
Продолжаю портировать задачи из кейсов во вторую версию моего личного бенчмарка LLM на бизнес задачах. В этот раз я догрузил в него часть самых изуверских задачек из доклада про text-to-sql c Neo4j конференции. В итоге "потолок" для o1 (medium reasoning) просел до 67%. И это несмотря на то, что у всех моделей есть две возможности подумать в рамках своего reasoning - сначала свободный CoT, а потом еще наиболее эффективный checklist.
Кстати, свежая o3-mini пока закрепилась на втором месте.
Второй интересный момент. Llama 405B - 49%, а DeepSeek r1 с его 37/671B MoE параметрами - только 53%. Как видим, прогресс не такой уж большой.
Там еще рядом интересно примостилcя дистиллят r1 на базе Llama 70B c 50% точности, что уже интереснее. Если раньше базовые Llama хорошели после тюнов на OpenChat, то теперь пойдет мода на дистилляты. А еще больше очков этой модели дает то, что пока она у меня справляется с задачами без Structured Outputs (на Fireworks не завезли пока).
Замазанные колонки пока можно игнорировать - туда портировано слишком мало кейсов, чтобы были стабильные цифры. Потом открою.
SO - в Features - Structured Output (response schema), который можно из коробки уже найти у большинства моделей. Если так дело пойдет, то через пару месяцев можно просто будет перестать тратить время на модели без поддержки SO.
Costs пока не считаю, чтобы заранее не плакать. Но стоимости там должны заметно подрасти из-за cot/reasoning tokens, если сравнивать с первым поколением бенчмарка.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк личный, закрытый, в черновой версии. Кому хочется стабильности см полтора года отчетов по не-reasoning бенчмарку LLM на бизнес задачах.
Краткая история использования ChatGPT o1 pro для создания ассистента
С утра мне в голову пришла идея - а что, если создать свою ChatGPT, которая будет хранить заметки и списки вещей для поездок? Чтобы можно было просить компилировать списки из старых поездок и сверяться с ними голосом во время сборов.
Хотелось именно пройти весь путь от начала до конца, чтобы посмотреть, как можно интегрировать красивых голосовых ассистентов под рукой со своим API. Но руки были частично заняты сборами, поэтому работу свалил на ChatGPT.
Запустил новую сессию и в течение дня уточнял задачу и критиковал результаты. Один пункт - один запрос.
(1) Начал с запроса о минимальном API для бэкенда заметок и списков: нужны основные методы и эндпойнты.
(2) Посмотрел результаты и уточнил, что не требуется «голый CRUD». Предпочтение — «LLM-friendly» методы, ориентированные на логику, плюс заранее определённые теги.
(3) Попросил рассмотреть идею объединить заметки и списки в единую сущность. «Комментарии» станут обычными пунктами со специальным статусом, а хранение будет через виртуальную файловую систему. Естественно, переписать все под новую парадигму.
(4) Неплохо. А если добавить иерархические идентификаторы (в стиле «1.1.1»), чтобы каждый список был древовидной структурой?
(5) Так, а теперь добавим логику транзакций. Пусть LLM может отправлять в API все изменения одним батчем с откатом при ошибке.
(6) Напиши-ка мне пример реализации на Python (в одном файле) с Pydantic и тестами на pytest.
(7) Ничего так. Но лучше переписать в Go, с хранением списков в памяти и JSON-файлах, используя метод ApplyTransaction.
(8) ядро есть, теперь оберни все в API, а данные сохраняй на диск
(9) А теперь нужно это все описать в виде документации для LLM-ассистента — как тот может считывать списки, добавлять или изменять пункты, менять статус, всё через один транзакционный вызов.
(10) А теперь сделай мне OpenAPI спецификацию, я ее загружу в CustomAction.
(11) Финальный аккорд - собери выжимку разговора за день — этот список тезисов и последовательность шагов, чтобы передать общую картину разработки бэкенда для персонального ассистента.
В промежутке между 10 и 11 я еще скомпилировал бинарь, запустил его на сервере и вытащил его по секретному url. Этот url вместе с инструкцией вставил в CustomAction и добавил в своего ChatGPT. Написал только 3 строчки кода -
В итоге оно работает. Не так хорошо, как хотелось бы - CustomGPT не поддерживают пока новый красивый голос, а LLM у них под капотом пока туповата. Но потенциал быстрого создания своих ассистентов, которые всегда под рукой - интересный.
Ваш, @llm_under_hood 🤗
С утра мне в голову пришла идея - а что, если создать свою ChatGPT, которая будет хранить заметки и списки вещей для поездок? Чтобы можно было просить компилировать списки из старых поездок и сверяться с ними голосом во время сборов.
Хотелось именно пройти весь путь от начала до конца, чтобы посмотреть, как можно интегрировать красивых голосовых ассистентов под рукой со своим API. Но руки были частично заняты сборами, поэтому работу свалил на ChatGPT.
Запустил новую сессию и в течение дня уточнял задачу и критиковал результаты. Один пункт - один запрос.
(1) Начал с запроса о минимальном API для бэкенда заметок и списков: нужны основные методы и эндпойнты.
(2) Посмотрел результаты и уточнил, что не требуется «голый CRUD». Предпочтение — «LLM-friendly» методы, ориентированные на логику, плюс заранее определённые теги.
(3) Попросил рассмотреть идею объединить заметки и списки в единую сущность. «Комментарии» станут обычными пунктами со специальным статусом, а хранение будет через виртуальную файловую систему. Естественно, переписать все под новую парадигму.
(4) Неплохо. А если добавить иерархические идентификаторы (в стиле «1.1.1»), чтобы каждый список был древовидной структурой?
(5) Так, а теперь добавим логику транзакций. Пусть LLM может отправлять в API все изменения одним батчем с откатом при ошибке.
(6) Напиши-ка мне пример реализации на Python (в одном файле) с Pydantic и тестами на pytest.
(7) Ничего так. Но лучше переписать в Go, с хранением списков в памяти и JSON-файлах, используя метод ApplyTransaction.
(8) ядро есть, теперь оберни все в API, а данные сохраняй на диск
(9) А теперь нужно это все описать в виде документации для LLM-ассистента — как тот может считывать списки, добавлять или изменять пункты, менять статус, всё через один транзакционный вызов.
(10) А теперь сделай мне OpenAPI спецификацию, я ее загружу в CustomAction.
(11) Финальный аккорд - собери выжимку разговора за день — этот список тезисов и последовательность шагов, чтобы передать общую картину разработки бэкенда для персонального ассистента.
В промежутке между 10 и 11 я еще скомпилировал бинарь, запустил его на сервере и вытащил его по секретному url. Этот url вместе с инструкцией вставил в CustomAction и добавил в своего ChatGPT. Написал только 3 строчки кода -
handle_path
в прокси сервере.В итоге оно работает. Не так хорошо, как хотелось бы - CustomGPT не поддерживают пока новый красивый голос, а LLM у них под капотом пока туповата. Но потенциал быстрого создания своих ассистентов, которые всегда под рукой - интересный.
Ваш, @llm_under_hood 🤗
Курс “LLM под капотом: выбираем эффективные технические решения для AI-ассистентов”
С когортами поработали, апдейты добавили, приглашения к покупке по листу ожидания разослали, и вот теперь курс можно купить на моей странице https://abdullin.com/ai-assistants-course.
Спасибо всем, кто был с самого начала, тестировал, задавал сложные вопросы и помогал делать курс лучше! Спасибо и тем, кто недавно присоединился из списка ожидания. Пусть этот курс даст вам свежие идеи и рабочие решения.
А тем, кто только планирует, — курс открыт для покупки, он в записи. Можно изучать материалы в своём темпе и применять на практике.
Помимо самого курса у нас есть чат курса, который постепенно превращается в мини-комьюнити. Там можно разбирать вопросы, обсуждать идеи и делиться решениями.
Присоединяйтесь, будет интересно!
Ваш, @llm_under_hood 🤗
С когортами поработали, апдейты добавили, приглашения к покупке по листу ожидания разослали, и вот теперь курс можно купить на моей странице https://abdullin.com/ai-assistants-course.
Спасибо всем, кто был с самого начала, тестировал, задавал сложные вопросы и помогал делать курс лучше! Спасибо и тем, кто недавно присоединился из списка ожидания. Пусть этот курс даст вам свежие идеи и рабочие решения.
А тем, кто только планирует, — курс открыт для покупки, он в записи. Можно изучать материалы в своём темпе и применять на практике.
Помимо самого курса у нас есть чат курса, который постепенно превращается в мини-комьюнити. Там можно разбирать вопросы, обсуждать идеи и делиться решениями.
Присоединяйтесь, будет интересно!
Ваш, @llm_under_hood 🤗
Deepseek V3, Qwen-Max/Plus/Turbo в бенчмарке v2
Продолжаю портировать тесты из AI кейсов во вторую версию моего личного бенчмарка LLM на бизнес-задачах.
Добавил Deepseek V3 (aka deepseek-chat), который на reasoning задачах держится удивительно хорошо, только чуть хуже DeepSeek r1. Он на полную катушку использует слоты для reasoning в checklists/CoT. А Structured Output в исполнении Fireworks помогает придерживаться схемы.
Да, в новом бенчмарке у каждой модели теперь есть возможность пройти по custom chain of thought, который оптимизирован для конкретной задачи. И это дается вдобавок к внутренним reasoning tokens, которые есть у новых моделей.
Модели могут отказаться использовать возможность для размышления и сэкономить tokens. Но те, кто следуют - повышают свою точность.
Мы эти подходы достаточно давно используем во всех новых проектах для буста качества (в обмен на небольшое количество с пользой потраченных tokens), поэтому в бенчмарке большая часть тестов уже идет с таким reasoning.
Еще добавил gemini-2.0-flash, Qwen-Max/Plus/Turbo.
Но в целом добавление новых моделей сейчас не в приоритете. Сейчас важнее добавить как можно больше разных кейсов, чтобы стабилизировать оценки.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк личный, закрытый, в черновой версии. Кому хочется стабильности и разных моделей см полтора года отчетов по не-reasoning бенчмарку LLM на бизнес задачах.
PPS: blur буду убирать по мере стабилизации бенчмарка
Продолжаю портировать тесты из AI кейсов во вторую версию моего личного бенчмарка LLM на бизнес-задачах.
Добавил Deepseek V3 (aka deepseek-chat), который на reasoning задачах держится удивительно хорошо, только чуть хуже DeepSeek r1. Он на полную катушку использует слоты для reasoning в checklists/CoT. А Structured Output в исполнении Fireworks помогает придерживаться схемы.
Да, в новом бенчмарке у каждой модели теперь есть возможность пройти по custom chain of thought, который оптимизирован для конкретной задачи. И это дается вдобавок к внутренним reasoning tokens, которые есть у новых моделей.
Модели могут отказаться использовать возможность для размышления и сэкономить tokens. Но те, кто следуют - повышают свою точность.
Мы эти подходы достаточно давно используем во всех новых проектах для буста качества (в обмен на небольшое количество с пользой потраченных tokens), поэтому в бенчмарке большая часть тестов уже идет с таким reasoning.
Еще добавил gemini-2.0-flash, Qwen-Max/Plus/Turbo.
Но в целом добавление новых моделей сейчас не в приоритете. Сейчас важнее добавить как можно больше разных кейсов, чтобы стабилизировать оценки.
Ваш, @llm_under_hood 🤗
PS: Бенчмарк личный, закрытый, в черновой версии. Кому хочется стабильности и разных моделей см полтора года отчетов по не-reasoning бенчмарку LLM на бизнес задачах.
PPS: blur буду убирать по мере стабилизации бенчмарка
Enterprise RAG Challenge - новости
(1) Мы уже получили более 220 заявок на участие во втором раунде! Было бы больше, но вчера в Кёльне была авария у провайдера, и сайт всей группы прилег. А так в день 5-7 новых регистраций приходит.
(2) IBM присоединились к Challenge. Для тех, кто пилит решения на IBM WatsonX будет отдельный Leaderboard, призы и поддержка от экспертов IBM. Кстати, у них на платформу завезли deepseek-r1-llama-70B, который пока держится на 4м месте моего reasoning бенчмарка. Поэтому если кто-то уже работает с IBM, то есть все шансы показать достойный результат.
(3) Я прямо сейчас занимаюсь обновлением question генератора для второго раунда. Скорее всего, уже завтра в github выложу обновленную версию и начну в дискорде отвечать на все вопросы. Потом на следующей неделе хочу запустить все API и провести dry run для всех желающих. Со временем пока не определился - whenever ready.
Регистрироваться можно тут.
Ваш, @llm_under_hood 🤗
PS: Я с IBM напрямую не работал - терпения не хватило разбираться в их UX и процессах, поэтому сам подсказать ничего не смогу. Но эксперты смогут помочь - завели отдельный ibm-track канал на дискорде.
(1) Мы уже получили более 220 заявок на участие во втором раунде! Было бы больше, но вчера в Кёльне была авария у провайдера, и сайт всей группы прилег. А так в день 5-7 новых регистраций приходит.
(2) IBM присоединились к Challenge. Для тех, кто пилит решения на IBM WatsonX будет отдельный Leaderboard, призы и поддержка от экспертов IBM. Кстати, у них на платформу завезли deepseek-r1-llama-70B, который пока держится на 4м месте моего reasoning бенчмарка. Поэтому если кто-то уже работает с IBM, то есть все шансы показать достойный результат.
(3) Я прямо сейчас занимаюсь обновлением question генератора для второго раунда. Скорее всего, уже завтра в github выложу обновленную версию и начну в дискорде отвечать на все вопросы. Потом на следующей неделе хочу запустить все API и провести dry run для всех желающих. Со временем пока не определился - whenever ready.
Регистрироваться можно тут.
Ваш, @llm_under_hood 🤗
PS: Я с IBM напрямую не работал - терпения не хватило разбираться в их UX и процессах, поэтому сам подсказать ничего не смогу. Но эксперты смогут помочь - завели отдельный ibm-track канал на дискорде.
Enterprise RAG Challenge: Updated question generator
Новая версия опубликована тут. Она использует расширенный dataset с метаданными всех PDF (извлечены при помощи gpt-4o-mini + SO) - dataset_v2.json. Он добавлен в repository, чтобы можно было генерировать вопросы локально. А сами PDF файлы под задачу уже выложим во время RAG Challenge.
Обращаем внимание на схему ответа:
Теперь нужно не только извлечь правильный ответ по схеме, но и упомянуть страницы, с которых он был извлечен - в качестве доказательства. Это как раз та самая работа со ссылками и цитатами, которую очень любит корпоративный сегмент.
В начале следующей неделе я выложу информацию по submission API, а в четверг можно будет сделать тестовый dry run.
Ваш, @llm_under_hood 🤗
Новая версия опубликована тут. Она использует расширенный dataset с метаданными всех PDF (извлечены при помощи gpt-4o-mini + SO) - dataset_v2.json. Он добавлен в repository, чтобы можно было генерировать вопросы локально. А сами PDF файлы под задачу уже выложим во время RAG Challenge.
Обращаем внимание на схему ответа:
class SourceReference(BaseModel):
pdf_sha1: str = Field(..., description="SHA1 hash of the PDF file")
page_index: int = Field(..., description="Physical page number in the PDF file")
class Answer(BaseModel):
question_text: str = Field(..., description="Text of the question")
kind: Literal["number", "name", "boolean", "names"] = Field(..., description="Kind of the question")
value: Union[float, str, bool, List[str], Literal["N/A"]] = Field(..., description="Answer to the question, according to the question schema")
references: List[SourceReference] = Field([], description="References to the source material in the PDF file")
class AnswerSubmission(BaseModel):
answers: List[Answer] = Field(..., description="List of answers to the questions")
team_email: str = Field(..., description="Email that your team used to register for the challenge")
submission_name: str = Field(..., description="Unique name of the submission (e.g. experiment name)")
Теперь нужно не только извлечь правильный ответ по схеме, но и упомянуть страницы, с которых он был извлечен - в качестве доказательства. Это как раз та самая работа со ссылками и цитатами, которую очень любит корпоративный сегмент.
В начале следующей неделе я выложу информацию по submission API, а в четверг можно будет сделать тестовый dry run.
Ваш, @llm_under_hood 🤗
Как работать с информацией при построении своих RAG систем?
Я сейчас собираю материал для дополнительного видео к курсу, чтобы ответить на вопрос "Ну собрали мы онтологию для поиска информации по ответу пользователя, а дальше что?" И нашел фотографию, которая наглядно описывает весь процесс.
Раньше так люди исследования вели и книги писали! И умудрялись умещать кванты знаний в странички блокнотов и библиотечные карточки. Zettelkasten растет оттуда (и немного - Obsidian). И вот эта концепция манипулирования большими объемами информации через небольшие структурированные ссылки, цитаты и заметки как раз идеально ложится на работу с текстовыми LLM.
Разве что мы теперь можем не по десятку карточек в минуту перетасовывать теперь, а по десятку тысяч.
Ну а Domain-Driven Design как раз описывает процессы копирования человеческих процессов подобных данному в цифру. DDD уделяет очень много внимания языку и смысловым концепциям (Ubiquitous Language, Bounded Context, Context Mapping итп) и LLM-ки обучены хорошо работать с человеческим миром через языки.
Использование DDD + LLM для отражения подходящих человеческих процессов в цифре - это весьма мощный и удобный инструмент.
Ваш, @llm_under_hood 🤗
Я сейчас собираю материал для дополнительного видео к курсу, чтобы ответить на вопрос "Ну собрали мы онтологию для поиска информации по ответу пользователя, а дальше что?" И нашел фотографию, которая наглядно описывает весь процесс.
Раньше так люди исследования вели и книги писали! И умудрялись умещать кванты знаний в странички блокнотов и библиотечные карточки. Zettelkasten растет оттуда (и немного - Obsidian). И вот эта концепция манипулирования большими объемами информации через небольшие структурированные ссылки, цитаты и заметки как раз идеально ложится на работу с текстовыми LLM.
Разве что мы теперь можем не по десятку карточек в минуту перетасовывать теперь, а по десятку тысяч.
Ну а Domain-Driven Design как раз описывает процессы копирования человеческих процессов подобных данному в цифру. DDD уделяет очень много внимания языку и смысловым концепциям (Ubiquitous Language, Bounded Context, Context Mapping итп) и LLM-ки обучены хорошо работать с человеческим миром через языки.
Использование DDD + LLM для отражения подходящих человеческих процессов в цифре - это весьма мощный и удобный инструмент.
Ваш, @llm_under_hood 🤗
AI in Coding или эксперимент с агентами
Если кратко, у нас на одном проекте стоит повторяющаяся задача. Нужно извлекать структурированную информацию из сайтов. Структура известна достаточно жестко, но сайты постоянно меняются. И каждый раз ходить по страницам, выбирать html, писать селекторы итп - надоедает.
Коллега, который сталкивается с этой задачей не в первый раз, решил попробовать написать пару кодинг агентов с инструментами. Идея такая - натравливаем их на какой-то сайт и уходим пить чай. По возвращении получаем готовый код, который уже может автоматически извлечь данные из сайта.
Поэтому решили поставить эксперимент - выделить пару дней на попытку прототипирования таких агентов. Естественно, агенты для написания кода писались при помощи Claude/ChatGPT (ибо код давно уже почти никто не пишет - все разленились).
Задача не стояла “сделать”, а “пощупать и посмотреть, как далеко можно пройти за пару дней”. Это типичный timeboxing из стартапов.
Вот финальный протокол эксперимента:
Короче с агентами, в упрощенном виде все работает. Делаю так. Есть несколько агентов, которые заточены делать определенную функцию:
(1) поиск селектора для каталога - в итоге очень замудрено и проще его самому достать и передать, поэтому потом откажусь.
(2) генератор кода, который из html кода строки генерирует конвертер в json
(3) генератор кода, который делает next page, то есть переключает pagination
Агенты пишут самостоятельно эти генераторы (for loop) и при этом приводят к определенному интерфейсу.
Далее айдеру у себя в коде говорю, что надо уже написать полный парсер каталога, передаю ему интерфейсы инструментов, которые написали агенты, говорю про селекторы. Он уже потом генерирует код. Эту часть можно так же автоматизировать через агента, но хватит с меня экспериментов 😂
По сути, все это в разы быстрее можно было делать напрямую через aider. Но, если условно стояла бы задача “вот 100 клиентов, делайте”, то можно было запустить генератор по массиву и пойти пить чай.
Айгиз есть в чате канала, можно задавать ему там вопросы в обсуждении этого поста.
Ваш, @llm_under_hood 🤗
PS: Если впервые заходите в чат, пожалуйста, не игнорируйте запрос от бота канала. Он бдит, банит ботов и не понимает шуток.
Если кратко, у нас на одном проекте стоит повторяющаяся задача. Нужно извлекать структурированную информацию из сайтов. Структура известна достаточно жестко, но сайты постоянно меняются. И каждый раз ходить по страницам, выбирать html, писать селекторы итп - надоедает.
Коллега, который сталкивается с этой задачей не в первый раз, решил попробовать написать пару кодинг агентов с инструментами. Идея такая - натравливаем их на какой-то сайт и уходим пить чай. По возвращении получаем готовый код, который уже может автоматически извлечь данные из сайта.
Поэтому решили поставить эксперимент - выделить пару дней на попытку прототипирования таких агентов. Естественно, агенты для написания кода писались при помощи Claude/ChatGPT (ибо код давно уже почти никто не пишет - все разленились).
Задача не стояла “сделать”, а “пощупать и посмотреть, как далеко можно пройти за пару дней”. Это типичный timeboxing из стартапов.
Вот финальный протокол эксперимента:
Короче с агентами, в упрощенном виде все работает. Делаю так. Есть несколько агентов, которые заточены делать определенную функцию:
(1) поиск селектора для каталога - в итоге очень замудрено и проще его самому достать и передать, поэтому потом откажусь.
(2) генератор кода, который из html кода строки генерирует конвертер в json
(3) генератор кода, который делает next page, то есть переключает pagination
Агенты пишут самостоятельно эти генераторы (for loop) и при этом приводят к определенному интерфейсу.
Далее айдеру у себя в коде говорю, что надо уже написать полный парсер каталога, передаю ему интерфейсы инструментов, которые написали агенты, говорю про селекторы. Он уже потом генерирует код. Эту часть можно так же автоматизировать через агента, но хватит с меня экспериментов 😂
По сути, все это в разы быстрее можно было делать напрямую через aider. Но, если условно стояла бы задача “вот 100 клиентов, делайте”, то можно было запустить генератор по массиву и пойти пить чай.
Айгиз есть в чате канала, можно задавать ему там вопросы в обсуждении этого поста.
Ваш, @llm_under_hood 🤗
PS: Если впервые заходите в чат, пожалуйста, не игнорируйте запрос от бота канала. Он бдит, банит ботов и не понимает шуток.