Зазирнути під капот: як Langfuse дарує прозорість вашим AI-агентам
Якось, за горнятком кави, ми з колегами почали розмову про сучасний стан AI-агентів. З жалем констатували, що багато розробок нагадують швидше здогадки, ніж виважену роботу над реальним рішенням. По суті, ми кидаємось у вир, не маючи чіткого плану. Немає єдиного підходу, системи… Або, щонайменше, нам про нього невідомо.
І от тоді, як у казці, на горизонті з’явилось рішення. Чи, радше, інструмент. І як показує досвід, не просто корисний – революційний.
Сьогодні, з усмішкою на вустах та з легким трепетом першовідкривача, я хочу поділитися секретною зброєю для тих, хто прагне вийти за межі експериментів. Для тих, хто мріє створити AI-агентів, готових до реального світу. І цей секрет – Langfuse.
Це абсолютно безкоштовний та відкритий інструмент. Можливо, саме те, що ви так довго шукали. І, як то кажуть, я вже встигла додати його до свого власного місцевого AI-арсеналу.
Чим Langfuse такий особливий?
Слухайте, суть у тому, що Langfuse – це платформа інженерії LLM (великих мовних моделей) для спостереження за агентами (agent observability). І ось тут, друзі, криється найнедооціненіша концепція в розробці AI-агентів на сьогоднішній день.
Що таке спостереження? Це здатність бачити кожен крок вашого агента. Відстежувати вартість кожного запиту, час відповіді, кожну розмову, яку ведуть ваші користувачі з вашим агентом. Це як мати рентгенівський зір, що дозволяє бачити внутрішній світ вашого творіння.
Подумайте самі: коли ваш агент працює локально, спостерігати за ним порівняно легко. Перевірити час відповіді, знайти можливості для покращення, зрозуміти, що йде не так… Все просто, коли ви – єдиний, хто з ним взаємодіє.
Але що відбувається, коли ваш агент опиняється у дикому світі? Коли він працює у реальному житті? Без платформи на кшталт Langfuse ви летите наосліп. Ви нічого не знаєте! Ви не знаєте, чому він зазнає невдачі. Ви не знаєте, скільки ви витрачаєте. І найголовніше – ви не знаєте, як покращити відповіді або усунути вузькі місця.
Не інвестувати час у вивчення Langfuse – це, м’яко кажучи, ризиковано.
Тому, якщо ви серйозно ставитесь до створення AI-агентів, дозвольте мені познайомити вас з Langfuse. Покажу, як почати роботу за лічені хвилини.
Перше враження – захоплює!
По-перше, мушу зізнатися: відкриваю скриньку Пандори. Langfuse – настільки багатофункціональний, що у мене вже мільйон ідей для наступних статей. Сьогодні – огляд платформи, зосереджений на моніторингу роботи агентів. Але, повірте, там є ще багато цікавого.
Наприклад, у них чудовий демо-режим. Відчуйте потужність Langfuse, не витрачаючи час на налаштування (посилання – нижче). Можна відразу ж зрозуміти, чи припаде вам ця платформа до душі.
По-друге, вражає список компаній, які вже використовують Langfuse: Twilio, Khan Academy… Вражаючий список, погодьтеся. У них є багато різних функцій, про які я, на жаль, не можу розповісти в цій статті. Головна увага – до трасування (tracing) для моніторингу дій агентів. Це дозволяє бачити всі рішення вашого агента під час роботи. Ось це справжній погляд зсередини!
І, звісно ж, Langfuse інтегрується з безліччю різних фреймворків. Langchain, LangGraph, CrewAI, Semantic Kernel… І, звісно, Pinatic AI. Так, усе, що потрібно – тут. Не вистачає хіба що… ну, про це згодом. Сподіваюся, найближчим часом додати!
І, насамперед, пам’ятайте найважливіше: Langfuse – 100% open-source. Можна платити, щоб вони управляли платформою за вас. Легкий та швидкий старт. Але можна розмістити Langfuse самостійно. Це означає повну конфіденційність даних, нульові витрати.
Langfuse орієнтований на корпоративну безпеку. Часто виникають ситуації, коли хочеться спостерігати за роботою агентів, але не хочеться відправляти взаємодії з користувачами третім особам. З самостійною платформою все залишається у вашій інфраструктурі.
Трохи практики: самостійне розміщення
Найпростіший спосіб отримати Langfuse – використати мій власний пакет local AI. Я довго працювала над ним, щоб зібрати разом якомога більше open-source софту. База даних, велика мовна модель, інтерфейс користувача, і, тепер, Langfuse для спостереження за агентами.
Самостійне розміщення Langfuse вимагає додаткових зусиль, адже воно залежить від таких служб зберігання даних, як Reddis, Postgress, ClickHost. А ще потрібне Blob Storage. Не все так просто. Але я зробила все можливе, щоб інтегрувати його в мій пакет.
Огляд пакету, відео-інструкції – по лінку. Всі інструкції актуальні, крім змінних середовища для Langfuse. Інструкції з налаштування змінних – у файлі .env.example. Далі – все, як і було. Можна самостійно розмістити Langfuse, користуючись документацією. Посилання – у описі.
Знайомимось із платформою
Тепер перейдемо до документації Langfuse та їхнього живого демо. Зайдіть на вкладку інтерактивного демо, створіть демо-акаунт (без кредитної картки). Спробуйте поспілкуватися з агентом. Це Rag AI (Retrieval-Augmented Generation), тобто агент, який має доступ до документації Langfuse, щоб відповідати на ваші запитання.
Наприклад: “Як використовувати Langfuse з Pyantic AI?”
Потрібно трохи почекати, поки він знайде потрібну документацію. Але це займає лічені секунди!
Він розповідає про бекенд OpenTelemetry… Про інтеграцію з Pantic Logfire… З кодом. Скріншотами. Це вражає!
Головне – після спілкування з агентом можна перейти за посиланням в платформу та подивитися логи. Тут – твої сліди. І сліди інших користувачів. Демо ж публічний.
Масштаби! Кількість інформації! Вартість, час запиту, кількість вхідних та вихідних токенів. ID користувача та ID сеансу. Все можна згрупувати!
Можна заглибитися у конкретні рішення, які приймав агент. От, наприклад, він вирішив скористатися інструментом пошуку. Ось вхідні дані. Ось результат, отриманий з rag-пошуку. Тут багато релевантної документації, яка допомогла відповіді.
А тепер – про генерацію. Ось системний промпт. Моє питання. Відповідь… Усю цю інформацію треба бачити, якщо ви хочете контролювати агентів у продакшні. Можна побачити, що відбувається, щоб покращувати їх. Немає нічого неможливого.
З чого розпочати? Простий приклад
У розділі Quick Start документації є простий приклад. Подивіться, як легко замінити поточний агент, який використовує OpenAI client, на роботу з Langfuse.
Вони пропонують бібліотеку, куди можна імпортувати OpenAI з пакету Langfuse. І працює точно так само, треба просто додати декратор observe вгорі будь-якої функції, яка викликає клієнт OpenAI.
Приклад – у моєму шаблоні.
Тут є інструкції, як все налаштувати зі змінними середовища (OpenAI API key, потрібні три значення для Langfuse. Щоб отримати їх, після встановлення Langfuse (і у хмарі, і локально), створіть проект, перейдіть до налаштувань (API keys) та створіть новий ключ API.
Повертаємось до коду. У цьому прикладі агент просить написати історію. Є декратор observe, OpenAI з Langfuse.
Тепер – в термінал. Виконуємо команду python simple_langfuse.py. Запит відправляється в OpenAI. Все виглядає як завжди, але у Langfuse – море даних, які супроводжують запит.
А потім – історія. Не буду читати її. Звісно, історії з LLM – річ специфічна, але справа не в цьому, а в трасуванні.
Знов – в Langfuse client. Заходимо в розділ Traces. Відкриваємо новий Trace. OpenAI generation. Системний промпт: “Ви – великий оповідач”. Повідомлення користувача. І відповідь асистента. Повна історія.
Затримка, вартість запиту (менше пенні), кількість токенів, метадані, відповідь… Рішення агента. Клас!
Це базове виконання. Але я хочу показати, як інтегрувати Langfuse з Pyantic AI. Продемонструвати роботу повноцінного агента з визовами інструментів, відповідями… Безцінно!
Langfuse + Pantic AI: ідеальна пара
Pyantic AI – мій фаворит. Це дійсно продуманий фреймворк AI-агентів. В тому числі – логування та моніторинг. Pantic AI використовує Logfire, під капотом – OpenTelemetry; це стандарт для передачі даних логів, з якими працює Langfuse. Достатньо інтегрувати Langfuse, щоб отримати все.
Тут треба встановити pantic AI та logfire. Потім – додати змінні середовища. Додати трохи коду для налаштування lofire. А ось – як налаштувати агента в Pyantic AI. Все традиційно. Важливо додати параметр instrument, щоб було включено logfire. Агент зможе надсилати дані через OpenTelemetry.
Для першого прикладу я створила агента, що використовує Brave MCP server. Простий приклад з пошуком у веб. Головна мета – показати Langfuse, а не розказати про Pantic AI.
Є функція configure_langfuse. Сюди я вбудувала все, що ми бачили раніше, з налаштуванням змінних середовища. Викликаю функцію для налаштування. Далі – визначаємо Brave MCP. Додаємо його в agent через масив MCP servers.
Тут є інші відео про Pantic AI з MCP; якщо вам цікаво, – лінк. Не буду вдаватися в подробиці, бо ми зосереджені на Langfuse.
Ось і все. У нас є агент з веб-пошуком, інтегрований з Langfuse. Просто й легко.
Практичні дії. Демонструю!
В терміналі виконуємо simple_pantic_ai.py. Запускаємо Brave MCP, підключаємо агента. Задаємо питання, яке призведе до виклику інструменту пошуку.
Наприклад: “Які останні пропозиції щодо Gro 3 LM?”
Відповідь…
У Langfuse – trace. Вхідні та вихідні дані порожні. Про це – трохи згодом!
Тепер – більше інформації.
Рішення агента. Він вирішив викликати інструмент пошуку в Brave.
Далі можна побачити, які параметри агент вирішив використати під час виклику інструменту. Питання. Повідомлення асистента з проханням використати Brave web search. Досліджуємо запит, який застосували для пошуку в мережі. Круто, коли це є в логах!
Фінальний запит. Відповідь. Якщо захочемо, побачимо все, що Brave API відповіла агенту. Все це допоможе розібратися, як все працює.
Так, тут лише один виклик інструменту. Але скільки інформації! Якщо інструмент поводиться неправильно, або агент завжди передає погані параметри, ця система логування допоможе розібратися. Можна буде покращити роботу агента.
Можна буде керувати логами, відділяючи їх по користувачам та сесіям. Це – точність та контроль!
Повний приклад: шаблон для вас!
Перед вами – фінальний шаблон для підключення Pantic AI до Langfuse. Я постаралася зробити його максимально зручним. Навіть зробила так, щоб відстежувалися сліди для певних сесій та користувачів.
Агент використовує MCP, як і простий приклад. Але в мене є багато серверів MCP, кожен з яких підключений до “спеціалізованого агента”. Кожен з них відповідає за виклики інструментів для цього MCP.
Головний агент, в свою чергу, отримує інструмент від Pantic AI для виклику кожного з цих допоміжних агентів.
Я не буду вдаватися в деталі імплементації. Це побудовано з використанням Archon. Суть – демонстрація можливих варіантів, якщо агент використовує одразу багато різних інструментів. Саме це ми і побачимо в Langfuse.
Функція configure_langfuse – в окремому файлі. Як і раніше – робота зі змінними середовища, Logfire. Єдина відмінність – повернення trace. Це потрібно, щоб можна було встановити власні метадані про виконання агента.
Якщо повернутися до головної функції запуску multimcp server agent… Створюємо span з trace (бібліотека open telemetry). І як тут задати custom атрибути: ID користувача, ID сесії, вхідні та вихідні значення.
Деталі – в документації Pantic AI та Langfuse. Я просто слідувала інструкціям. Ви теж можете це зробити.
Шаблон – ваш. Все, що потрібно, – просто замінити виклик свого агента Pantic AI. Налаштувати trace. Використовуйте цей ресурс, щоб легко підключити Langfuse до будь-якого агента Pantic AI.
Запускаємо!
Тепер, коли всі змінні середовища сконфігуровані, можна перейти в термінал, щоб запустити агента.
Запускаємо pantic AI langfuse.
Трохи чекаємо. Він має запустити усі сервери, а потім під’єднати до них агента.
Все готово. Тепер можна поставити питання, що приведе до одночасного використання багатьох різних інструментів. Мета – побачити це в Langfuse.
Питання: “Отримайте список великих мовних моделей з таблиці в Airtable. Хочу дізнатися ціни кожної з них за допомогою Brave MCP та надіслати результати через Slack MCP”.
Почнемо!
Все почалося! Спочатку – виклик інструменту для переліку баз в Airtable. Далі – таблиці. Далі – записи…
Потім – Brave. Це буде купа веб-пошуків, заснованих на різних мовних моделях. Синтез результатів. І, сподіваємося, один виклик Slack для відправки результатів.
Відповідь… Не найкращий варіант для деяких LLM. Я не намагалася створити ідеальну ситуацію. Мета – викликати багато різних інструментів, щоб потім подивитися на це в Langfuse.
Входжу в Langfuse, відкриваю клієнт. Все. Сліди. Input та output. А також інші метадані: затримка, токени…
Бачимо багато різних викликів різних інструментів. Для моніторингу – те, що треба.
Можна зайти в будь-який з цих викликів. Подивитися, що вирішив зробити агент. У даному випадку – використати Brave web search. Це приклад запиту для пошуку ціни Llama LLM. Можна також подивитись відповідь.
Ще один приклад – на Slack. Тут ми вирішили перерахувати канали. Ось відповідь.
Логування – важливо, особливо, якщо є помилки.
Давайте додамо помилку в один з інструментів. Просто зараз.
Коли ми викликаємо Brave agent… просто присвоїмо результат = 0/0. Форсуємо помилку.
Запускаємо агента. І вмикаємо його заново.
Помилка! Division by zero.
Тепер – в Langfuse. (Див. сліди). Вхідні та вихідні дані відсутні. Але є помилки! Ви їх побачите справа. Можна зайти та подивитися, що сталося.
Статус: division by zero.
Варто бачити не лише помилки. Навіть якщо операція успішна. Щоб подивитися рішення агента. Щоб зрозуміти, чи не помиляється він.
З усім цим треба працювати.
Повертаємось до ID сесії та ID користувача. Це важливо! Можна зайти до розділу сесій Langfuse. Подивитися розмови користувачів з агентом. Фільтрувати по ID користувача. Все як у справжньому житті!
У розділі користувачів – усі розмови одного користувача.
У сесіях – можна натиснути на ID сесії та побачити всі повідомлення та відповіді агента, загальну вартість цієї розмови.
Майже повний контроль!
Що робити, якщо користувач повідомив про проблему? Потрібна його електронна пошта. Це ID користувача в Superbase, наприклад. Можна знайти його розмову в Langfuse. Подивитися, що саме пішло не так!
Невдовзі – N8N та Superbase!
У майбутніх відео я розповім про створення повноцінного інтерфейсу з аутентифікацією Superbase. Як узгоджувати ID користувачів з Langfuse та агентом. Це буде цікаво!
Я знаю, що багато хто з моїх глядачів обожнюють N8N, як і я. Я хотіла б поговорити про інтеграцію з Langfuse. На жаль, на сьогоднішній день немає інтеграції Langfuse з N8N. Не можна просто знайти вузол Langfuse і вставити його в свій робочий процес.
Багато людей шукають це, тому що було б дуже добре контролювати агентів з N8N, як з агентами Pantic AI або OpenAI SDK.
Приклад – на форумі спільноти N8N. Хтось просить цю інтеграцію. Марк, один із розробників Langfuse, теж відписався в коментарях. Вони будуть раді зробити свій внесок. Отже, у них є бажання інтегруватися з більшою кількістю платформ.
У GitHub теж створено запит. Багато користувачів N8N хочуть інтегрувати Langfuse. Є приклад від Jim Lee. Він створив багато чудових ресурсів для N8N. Можна інкорпорувати Langfuse в N8N. Треба використати власні вузли. Це складніше. Єдиний мінус – треба хардкодити ключі аутентифікації Langfuse в кодовому вузлі N8N. Не найкращий варіант. Хочеться чогось рідного для Naden. Сподіваюся, це з’явиться колись.
Наразі – у вас є чудовий шаблон для легкого інтегрування Langfuse з Pantic AI. Беріть його, використовуйте! Додайте обов’язкове спостереження за вашими агентами.
Підсумовуємо та надихаємось
Я сподіваюся, що це відео відкрило для вас світ інструментів для спостереження за агентами. І що ви зрозуміли, наскільки це важливо.
Я дуже рекомендую не розгортати жодного AI-агента в продакшн без платформи на кшталт Langfuse. Langfuse – найкращий. Кращі функції та повністю open source.
Я збираюся зосереджуватися на цій платформі і напевно випущу більше контенту про неї.
Якщо вам подобається цей контент, ви чекаєте на більше про AI-агентів та локальні AI – не забудьте поставити лайк та підписатися.
До зустрічі!