LangFuse
2 автора упоминают этот инструмент
Материалы с доклада про LangChain
Вчера рассказал этот доклад на @moscowjs. Если вы не были на митапе — есть ссылка на запись. Если были — ссылка на форму обратной связи по организации митапа))
Делюсь презентацией и ответами на первую половину вопросов к докладу (вторая половина будет завтра).
У GigaChat стоимость токенов в 7 раз выше, чем у DeepSeek/Gemini/ChatGPT. Почему GigaChat стоит дороже иностранных ИИ в 7 раз? Сами какую ИИ используете на постоянку? В основном использую как раз GigaChat из-за простоты оплаты в РФ. Там есть Free Tier токены, а платного пакета мне хватает почти на год использования. Последний раз пополнял баланс в декабре прошлого года, израсходовано чуть больше половины.
Как на спам сообщениях не разориться на токенах? Я сейчас доделываю whitelist, чтобы проверка на спам не выполнялась для комментариев от доверенных авторов (которых у меня в канале почти 100%). Но если будет резкий наплыв с тысячами комментов в час — разорюсь, конечно. Сначала израсходуются токены GigaChat на оставшиеся 800 рублей, потом израсходуются мои $8.5 из OpenRouter, и дальше антиспам будет падать в ошибки, придётся закрывать комментарии и вручную чистить спам. Но скорее всего я закрою комментарии раньше, чем израсходуются все токены — бот мне репортит в личку каждый раз, когда удаляет чьи-то комментарии.
Есть ли в LangChain.js встроенные механизмы для уменьшения затрат на API-запросы (например, кэширование, чанкинг)? Про caching на стороне LangChain есть только вот эта дока, которая наполовину депрекейтед (используется старый класс Openai). Но сам способ в ней описан рабочий — если передать cache: true при объявлении экземпляра класса работы с LLM, то при одинаковых вводных параметрах LLM второй раз не вызовется. Ну и плюс на стороне самих моделей есть механизмы кэширования, правда они везде свои. У GigaChat, например, это вообще заголовок, который через LangChain.js туда не передать. Это как раз один из кейсов, когда приходится вызывать LLM напрямую, минуя LangChain.
В LangChain для каждой нейросети нужно вставлять токен? А если у какой-то нейросети токен закончится — что будет? Будет то же самое, что и без LangChain. LangChain отправит запрос, нейросеть ответит какой-нибудь 403 ошибкой. Но на эти случаи в LangChain можно делать fallback на другие модели.
У вас было много ИИ, все платные, видел DeepSeek, OpenAI, GigaChat, нет ли проблем с оплатой, поддержанием всего этого? А главное зачем? Если они все примерно одинаковые и можно использовать одну ИИ с тем же результатом. А для многих ИИ ещё и прокси нужны, нет ли сложности поддерживать весь этот зоопарк ИИ? С поддержкой проблем нет, LLM для LangChain это всего-лишь строчка с ключом в .env файле и экземпляр класса LLM, который лежит спокойно себе в каком-нибудь файле models.ts в проекте. В этом LangChain как раз и удобен — переключаться между разными LLM с ним очень просто. А вот с оплатой OpenAI и DeepSeek проблемы, конечно, есть. Я писал пост о том, как вызывать OpenAI бесплатно через github models, но там лимит на 50 запросов в сутки, и меня там забанили. Поэтому GigaChat, тем более там 1 млн токенов GigaChat Lite выдаётся бесплатно)
Какой конкретный бизнес профит от этого использования? Если не брать в учет арбузики Как это не брать в учёт арбузики? А вообще, если вопрос о бизнес-профите канала, то его нет, это хобби. А если речь о том, есть ли бизнес-профит в LangChain — тут скажу, что трейсинг запросов через инструменты вроде LangSmith порядочно ускоряет разработку. Порог входа в сам LangChain не самый простой (по крайней мере, лично для меня), но в последствии разрабатывать тоже получается быстрее за счёт того, что часть костылей написано за вас сообществом LangChain.
Какие прокси используете для доступа к ИИ Gemini/OpenAI которые закрыты из РФ с их стороны? Я использую OpenRouter, но его тоже приходится пополнять только с помощью друзей-держателей карт зарубежных банков. В комментариях к этому посту советовали ещё и другие сервисы, но я даже не успел их все попробовать.
НЕ УСЛОЖНЯЙ! Когда агенты не нужны? 🤯
Недавно работал над одним проектом (о котором расскажу чуть позже) и в целом проект был достаточно сложный, но когда я его завершил - оглядываюсь назад и вижу ошибки, которые сам же совершил. И самая главная - я усложнял там, где это не нужно.
Как все начиналось В этом проекте была система онбординга пользователей, и я решил, что её нужно сделать агентской. Начиналось все с простенького агента на Responses API с Tool Use, а закончилось Agents SDK с мульти-агентами. Как это работает в итоге? Просто LLM workflow (промпт + SO answer с функциями ask/finalize).
По началу у меня действительно очень хорошо работал базовый агент с тулами, но в какой-то момент он начал: - Где-то выкидывать function call, где это не нужно - Где-то выкидывать function call вместе с последним ответом (который должен был доставиться пользователю) - Где-то завершать раньше, чем нужно
Спираль усложнения Что же решил я? Что надо усложнять 🤦♂️
Я начал разбираться в том, как работает Agents SDK (до этого не сталкивался ни разу, а LangChain/LangFuse не люблю из-за их сложности и в целом они мне как-то не по вайбу). Начал с одного агента, потом разделил на двух - один отвечал за общение с пользователем, другой за финализацию и возвращение информации о пользователе, потом понял, что надо как-то роутить между ними и сделал ещё одного агента-роутера.
В моменте все стало выглядеть настолько сложно, что я сам запутался в том, что построил.
Самое болезненное САМОЕ интересное - что мне было тяжело признаться самому себе, что я усложняю, и было просто обидно остановиться и признать промежуточное поражение. Скорее было обидно то, что потратил на это 12+ часов - и не хотелось просто взять и снести под корень.
В итоге в какой-то момент я все-таки признал это - и решил попробовать свести все к одному промпту с CoT и SO (как завещал Ринат @llm_under_hood).
Простое решение В итоге это работает так: LLM собирает инфу с пользователем через ask с вопросом, а когда считает, что достаточно информации собрано - отвечает SO finalize. По сути такой function calling - только упрощённый.
Результат - работает прекрасно, система уже в продакшене ✅
Выводы Вывод очень простой - не усложняйте там, где это не нужно. Агенты - звучит круто, мне очень нравится их делать, но зачем их делать там, где они объективно не нужны?
Большинство задач по интеграции ИИ в бизнес можно решить куда более простыми методами (не говорю, что ван-шот промпт, но и не мульти-агентная система с роутером).
А ещё - не бойтесь признавать свои же ошибки и поражения. Это нас закаляет 💪 А у вас были такие ситуации? Делитесь в комментариях. Интересно будет обсудить)
Первый клиент по AI Sales Agent улетел в продакшн 🚀
И все работает ... Мы с Османом радуемся как дети))
Не без сложностей конечно, но очень помогает система отладки которую я выстроил: - мы всегда можем посмотреть reasoning (почему модель ответила так или иначе, почему вызвала ту или иную тулзу) - мы всегда можем сопоставить лида в CRM системе/чат в вацапе или тг с трейсом в LangFuse и по сессии увидеть полную картину происходящего - мы всегда можем прямо в лайве без ребута менять любые настройки клиента/любые описания продуктов/любые промпты
Насколько же система реально решает... Я даже не представляю свою жизнь без всех этих процессов которые сейчас упрощают жизнь в 10 раз.
Дальше - больше, хакаем продажи и топим 🛞
P.S. Как же я ненавижу РУ-CRM системы (bitrix привет)