Зазирнути під капот: як 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 – не забудьте поставити лайк та підписатися. До речі,
До зустрічі!