📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Learn 90% of Building AI Agents in 30 Minutes

Cole Medin29:20

Transcription

Не только я сам построил сотни ИИ-агентов, но и видел, как другие люди создавали тысячи для каждого мыслимого случая использования. И те, кто наиболее успешен, — это те, кто не усложняет. И в этом видео я хочу показать вам, как это можете сделать и вы. Потому что вот в чем дело, и я вижу это постоянно. Когда люди впервые думают о создании своих ИИ-агентов, у них включается перфекционизм, и они беспокоятся о создании идеальной системной подсказки, определении идеальных инструментов, размышлении о LLM, которую они хотят использовать. Они рассматривают контекст и наблюдаемость, задержку и безопасность, и развертывание. Они перегружаются всем. И это может быть и с вами. Итак, что я хочу сказать вам прямо сейчас: сделайте глубокий вдох. Вот почему я здесь. Честно говоря, вы можете узнать 90% того, что вам нужно для создания ИИ-агентов, из этого видео. И это, мой друг, то, что я приготовил для вас в этом видео. Я хочу охватить каждый из основных компонентов создания агентов, таких как системные подсказки, инструменты, безопасность и контекст. И я хочу разбить то, на чем вам следует сосредоточиться, чтобы построить первые 90% вашего агента. По сути, создать доказательство концепции. И тогда, честно говоря, даже более важно, я хочу поговорить о том, на чем вам не следует сосредотачиваться в первую очередь, потому что иначе вы будете усложнять. Это те вещи, которые вам нужно будет изучить в какой-то момент, когда вы захотите специализировать своих агентов и перейти к производству. Но для этого есть мой другой контент. Независимо от того, новичок ли вы в создании агентов или просто хотите создавать их быстрее, я хочу помочь вам сосредоточиться на первых 90%, чтобы сделать все предельно просто. Ах, и кстати, этот агент, который вы здесь видите, — это талисман нового курса по кодированию Dynamis Agentic. Так что, если вы хотите освоить создание систем вокруг ИИ-кодирования, перейдите по ссылке в описании. Хорошо. Итак, первое, что я хочу обсудить с вами, — это четыре основных компонента любого ИИ-агента, которые, кратко напомним, ИИ-агент — это любая большая языковая модель, которой предоставлена возможность взаимодействовать с внешним миром от вашего имени через инструменты. И поэтому он может сделать что-то вроде бронирования встречи в вашем календаре, поиска в интернете для вас. Это первая часть агентов — эти инструменты. Это функции, которые мы даем ему, которые он может вызывать для выполнения действий. А затем мозг нашего ИИ-агента — это большая языковая модель. Она обрабатывает наши запросы и решает на основе предоставленных нами инструкций, какие инструменты использовать. И говоря об этих основных инструкциях, это наша программа агента, также известная как системная подсказка. Это набор инструкций самого высокого уровня, который мы даем любому ИИ-агенту в начале любого разговора, который инструктирует его о его роли, целях, как использовать инструменты. Мы немного позже обсудим различные основные компоненты системных подсказок. И, наконец, у нас есть системы памяти. Это контекст, который у нас есть из наших разговоров, как краткосрочная, так и долгосрочная память. Мы поговорим об этом немного больше, когда перейдем к контексту. И поэтому, когда мы будем проходить через каждый из этих основных компонентов, я буду двигаться довольно быстро, потому что я просто хочу охватить основы с вами, но я также буду ссылаться на различные видео на моем канале на протяжении всего этого видео, если вы хотите углубиться в что-либо. И при создании ИИ-агента начать очень просто. И я покажу вам пример кода чуть позже, чтобы вы могли действительно увидеть, о чем я говорю. Итак, когда вы создаете самую основу вашего ИИ-агента, это всего лишь три шага. Вам нужно выбрать большую языковую модель, написать базовую системную подсказку в качестве инструкций агента, а затем добавить ваш первый инструмент, потому что вам нужен инструмент, иначе это просто обычная большая языковая модель, а не агент. И поэтому при выборе большой языковой модели я настоятельно рекомендую использовать платформу под названием Open Router, потому что она дает вам доступ практически к любой большой языковой модели, которую вы только можете пожелать. И поэтому Claude Haiku 4.5 — это тот, который я обычно использую при прототипировании моих ИИ-агентов, но вы можете использовать GPT 5 Mini. Вы можете использовать модель с открытым исходным кодом, такую как DeepSeek, например. Все они доступны на этой платформе. А затем при создании системной подсказки вам просто нужно определить роль и поведение вашего агента. И вы можете уточнять это со временем. Просто начните действительно просто, а затем добавьте ваш первый инструмент. Вы можете дать ему доступ к поиску в интернете. Вы можете дать ему возможность выполнять математические вычисления с помощью инструмента-калькулятора. Буквально все, что угодно, просто начните с простого, а затем, когда у вас будет эта основа, тогда вы сможете наращивать больше возможностей и интеграций. И я хочу показать вам больше, чем просто теорию. Давайте на самом деле пойдем и создадим ИИ-агента прямо сейчас, чтобы вы могли практически увидеть, насколько это просто. И я также оставлю ссылку на этот репозиторий в описании, если вы хотите углубиться в этот чрезвычайно простой агент, который охватывает все компоненты этого видео, даже некоторые вещи, о которых мы поговорим чуть позже, такие как наблюдаемость. Так что вы можете запустить его самостоятельно, даже использовать его в качестве шаблона для вашего первого агента, если хотите. И поэтому я собираюсь создать его с нуля вместе с вами прямо сейчас, показать вам построчно, насколько это просто. В итоге это будет менее 50 строк, как я и обещал на слайде. И поэтому сначала я импортирую все зависимости Python. Я использую Pantic AI, поскольку это мой любимый фреймворк для ИИ-агентов, но на самом деле не имеет значения, какой вы используете. Принципы, которые я освещаю в этом видео, применимы независимо от того, как вы создаете своих агентов, даже если это с помощью такого инструмента, как N8N, потому что то, на чем я здесь сосредоточен, — это просто определение наших четырех основных компонентов. LLM, инструменты, память и системная подсказка. И поэтому первое, что я сделаю, — это определю большую языковую модель, которую я хочу использовать. И, как я уже говорил, я использую Open Router. Так что сейчас я буду использовать Claude Haiku 4.5 в качестве моей модели. Но буквально просто изменив эту строку или просто изменив мою переменную окружения. Изменение одной строки. Я могу переключиться на любую модель, которую захочу, например, Gemini или DeepSeek или OpenAI. Это так просто. После того, как я определил LLM, теперь я определяю самого агента, включая системную подсказку, высокоуровневые инструкции. И поэтому я импортирую это из отдельного файла. Я просто покажу вам очень, очень простой пример системной подсказки здесь, а затем больше об этом чуть позже. Основные компоненты, которые я обычно включаю, включают роль, цели, инструкции по инструментам, формат вывода, как он общается с нами, а затем также любые другие дополнительные инструкции, которые я хочу включить. Так что у меня это сохранено здесь. Теперь это часть моего агента, которую я определил. И поэтому следующее, что нам нужно добавить, — это инструмент, чтобы действительно превратить его из LLM или чат-бота в полноценного агента. И способ сделать это с большинством фреймворков ИИ-агентов — это определить функцию Python очень просто, а затем добавить то, что называется декоратором. Это сигнализирует paid AI, что эту функцию я хочу взять и прикрепить к моему агенту как возможность, которую он теперь может вызывать. И поэтому агент определяет эти параметры при вызове инструмента. Так, в данном случае это очень простой инструмент для сложения двух чисел, потому что большие языковые модели как машины для предсказания токенов на самом деле плохо справляются с математикой. Интересный факт. И поэтому он определяет эти параметры и использует эту строку документации, как она называется, этот комментарий включен как часть подсказки для LLM, потому что он определяет, когда и как использовать этот инструмент, который в данном случае функциональность очень проста, просто сложение двух чисел. Но это может быть инструмент для поиска в интернете на основе запроса, который он определяет, создания события в нашем календаре на основе временного диапазона и заголовка, который он определяет, как все эти вещи являются параметрами, а затем мы выполняем функциональность для агента на основе этого. Это инструмент, который мы получили для агента. И это очень хорошо. Мы создали нашего агента и добавили инструменты. Единственное, что нам осталось сделать, — это настроить способ взаимодействия с ним. Так что я создам очень простой интерфейс командной строки здесь. Мы начинаем с пустой беседы. Здесь мы добавим память, которая является четвертым компонентом агентов. И поэтому в бесконечном цикле мы получаем ввод от пользователя. И мы выходим из программы, если он говорит "выйти". В противном случае мы вызовем агента. Так что это очень просто: agent.run, запущенный с последним сообщением пользователя и передающий для краткосрочной памяти историю разговора, чтобы он знал, что мы говорили друг другу до этого момента, а затем я добавлю к истории разговора все, что мы только что сказали, а затем выведу последний ответ агента. Посмотрите на это. И даже после того, как мы вызовем нашу основную функцию здесь, мы все равно останемся ниже 50 строк кода. Так легко определить наших агентов. И, очевидно, есть еще много вещей, которые нам нужно сделать, чтобы наш агент стал готовым к производству. Но опять же, я просто хочу сосредоточиться на том, чтобы сделать это предельно просто для вас прямо сейчас. И я знаю, что многое из этого может быть повторением для вас, если вы создавали агентов раньше. Но особенно если вы уже создали много ИИ-агентов, вы, вероятно, как и я, часто усложняете вещи, потому что вы знаете, сколько всего может потребоваться для создания агентов. Вот что я пытаюсь сделать: просто вернуться к основам, потому что вам нужно сохранять простоту, когда вы впервые создаете любого агента, действительно любое программное обеспечение. И поэтому да, мы можем перейти в терминал и взаимодействовать с нашим агентом. Итак, я запущу agent.py здесь. Все, что мы только что построили, я могу сказать "привет", чтобы получить очень простой ответ. А затем я могу сказать, например, "что такое", и я просто приведу пару больших чисел, которые хочу сложить. И вот здесь он знает благодаря описанию инструмента, что он должен использовать инструмент "сложить числа", который мы ему дали, чтобы получить эту сумму. Вот оно. Посмотрите на это. И я даже могу спросить: "Ты использовал инструмент?", и он должен сказать "да". Он фактически распознает на основе истории разговора, что он использовал инструмент "сложить числа". Хорошо, отлично. Итак, у нас есть этот агент с историей разговоров. Он знает, когда использовать этот инструмент. И теперь на этом этапе мы можем начать расширять инструменты, которые мы ему даем. Мы можем уточнить нашу системную подсказку, поэкспериментировать с различными LLM. И я тоже хочу об этом поговорить. Начиная с больших языковых моделей, выбора LLM, как я говорил, когда я создавал агента, Claude Haiku 4.5 — это тот, который я рекомендую, просто дешевый и быстрый вариант, который действительно хорош для создания доказательств концепции, когда я не хочу тратить много денег на токены, пока я изначально итерирую своего агента. А затем Claude Sonnet 4.5 — это, как правило, лучший универсальный вариант прямо сейчас. Это может измениться буквально через неделю, и у людей разные мнения. Главное, что я хочу донести здесь, — это не беспокойтесь о выборе идеальной LLM заранее, особенно когда вы используете такую платформу, как Open Router, где так легко переключаться между LLM. Даже если вы не используете Open Router, это все равно очень просто. А затем, если вам нужна локальная модель по соображениям конфиденциальности или вы хотите работать на 100% бесплатно на своем оборудовании, то Mistral 3.1 и Llama 3 — это те, которые я рекомендую прямо сейчас. И если вы никогда не пробовали Open Router или подобный инструмент, который просто направляет вас между различными поставщиками LLM, я настоятельно рекомендую попробовать один, потому что это так легко итерировать LLM для вашего агента, давая вам мгновенный доступ, посмотрите на это. У нас есть Grok, Anthropic, Gemini, у нас есть модели GPT, у нас есть Llama 3, все модели с открытым исходным кодом. Независимо от того, с чем вы хотите экспериментировать, у вас есть это здесь. И поэтому просто используйте это как свой инструмент для очень быстрого итерирования LLM и просто не думайте об этом слишком много. А затем для компонента системной подсказки я обещал углубиться в различные категории, которые у меня есть. Так что именно об этом я хочу очень быстро поговорить. Может быть особенно легко переосмыслить системную подсказку, потому что это такая широкая проблема, как "каким должен быть набор инструкций верхнего уровня для моего агента?". И поэтому я люблю сохранять простоту, работая по шаблону, который я использую для всех моих ИИ-агентов, по крайней мере, в качестве отправной точки. У меня всегда есть роль и цели, инструкции по инструментам и примеры, формат вывода и дополнительные инструкции. И о чем вам не следует беспокоиться на данном этапе, так это о настройке сложных оценок подсказок или A/B-тестировании ваших системных подсказок. Вы можете заняться этим, когда действительно захотите уточнить инструкции вашего агента. Но прямо сейчас просто сохраняйте простоту и уточняйте на высоком уровне, пока вы вручную тестируете своего агента. И если вы хотите увидеть этот шаблон системной подсказки в действии, я позаботился о вас. Я оставлю ссылку на это в описании. Это реальный пример того, как я заполняю эти различные разделы, создавая системную подсказку для агента управления задачами. Итак, у меня определена роль. Я определяю цели для агента управления задачами. Инструкции по инструментам, как я могу использовать различные инструменты вместе для управления задачами на моей платформе. Формат вывода, просто указывая способы, которыми я хочу, чтобы он общался со мной, или вещи, которых следует избегать. Некоторые примеры. Теперь это больше относится к более сложным агентам и системным подсказкам, где вы действительно хотите дать пример рабочего процесса, связывающего различные инструменты вместе, так что это не совсем применимо здесь. И затем последнее — это просто дополнительные инструкции. Это также место, куда можно добавить дополнительные инструкции для исправления мелких проблем, которые вы видите у своего агента, которые не обязательно подходят ко всем остальным. Так что это универсальное решение, чтобы убедиться, что есть место для всего, пока вы экспериментируете со своим агентом и уточняете свою системную подсказку. А затем, что касается инструментов для ваших ИИ-агентов, есть всего несколько вещей, которые я хочу быстро обсудить, чтобы помочь вам сохранить простоту и сосредоточенность. Первое — это то, что вы должны ограничить свои инструменты до менее чем 10 для ваших ИИ-агентов, по крайней мере, при начале работы. И вы определенно хотите убедиться, что назначение каждого инструмента очень четкое. Потому что, если ваши инструменты имеют перекрывающуюся функциональность или если их слишком много, тогда ваша большая языковая модель начинает перегружаться всеми возможностями своих способностей, и она будет использовать неправильные инструменты. Она забудет вызывать инструменты. Это просто беспорядок. Обязательно ограничьте их до менее чем 10. А затем также MCP-серверы — отличный способ найти готовые наборы инструментов, которые вы можете интегрировать в своего агента, когда вы, знаете, создаете что-то изначально и просто хотите двигаться очень быстро. И поэтому, безусловно, в зависимости от того, что вы строите, вы, вероятно, сможете найти MCP-сервер, который предоставит вам некоторую функциональность прямо из коробки для ваших агентов. А затем последнее, что я скажу, это то, что многие люди спрашивают меня: "На каких возможностях мне следует сосредоточиться в первую очередь при создании агентов?". И я хочу дать им инструменты, и RAG всегда является ответом, который я им даю. Предоставление вашему ИИ-агенту инструментов, которые позволяют ему искать ваши документы и базу знаний. Это и есть генерация с расширенным поиском. И поэтому, по сути, это предоставление вашим агентам возможности обосновывать свои ответы реальными данными. И я бы сказал, что, вероятно, более 80% ИИ-агентов, работающих сегодня, независимо от отрасли или ниши, в той или иной степени используют RAG в качестве части возможностей агента. А затем, продолжая нашу тему, на чем не следует сосредотачиваться при создании инструментов, так это не беспокойтесь о многоагентных системах или сложной оркестровке инструментов через это пока. Когда у вас есть система, которая начинает иметь более 10 инструментов, это, как правило, когда вы начинаете разделяться на специализированные под-агенты, и у вас есть маршрутизация между ними. Такие системы мощны и необходимы для многих приложений, но определенно избыточны, когда вы только начинаете создавать своего агента или систему. Также, если вы хотите узнать больше о RAG и его интеграции в ваших агентов, посмотрите видео, которое я оставлю здесь. Я постоянно говорю об этом на своем канале, потому что это так важно. И поэтому, с этим, переходя к следующему, у нас есть основы безопасности, потому что важно думать о безопасности при создании любого программного обеспечения заранее. Но я не хочу, чтобы вы усложняли это пока, верно? Не становитесь экспертом по безопасности в одночасье. Существуют существующие инструменты, которые помогут нам с безопасностью. Так что мы все еще можем двигаться быстро, пока мы изначально создаем нашего агента. Мы определенно захотим уделять больше внимания безопасности, когда будем переходить к производству. Но сначала есть пара инструментов, которые я хочу выделить здесь. А затем просто общие принципы, которым нужно следовать. Например, не жестко кодируйте свои API-ключи, верно? Вы не хотите, чтобы ваш API-ключ OpenAI или Anthropic просто лежал прямо в вашем коде или вашем рабочем процессе, например. Вы всегда хотите хранить его безопасным способом с помощью таких вещей, как переменные окружения. А затем, когда мы думаем о создании ИИ-агентов в частности, есть много мер безопасности, которые мы хотим реализовать с помощью так называемых защитных барьеров, верно? Так что ограничение того, какая информация может поступать в большую языковую модель, а затем также ограничение типов ответов, которые агент может давать, и заставление его фактически повторять попытку, если он выдает какой-либо неприемлемый для нас ответ. И есть суперпопулярный репозиторий с открытым исходным кодом, на который я постоянно опираюсь, чтобы помочь с защитными барьерами, и он очень креативно называется Guardrails AI. И поэтому это Python-фреймворк, потому что я всегда люблю создавать своих ИИ-агентов с помощью Python, который помогает создавать надежные ИИ-приложения, предоставляя вам как входные, так и выходные защитные барьеры, о которых я говорю. Так что ограничение того, что входит, и ограничение того, что может выдавать агент. И они предоставляют множество различных вариантов защитных барьеров. Например, одна вещь, которую вы часто хотите избежать, — это вставка любой личной идентифицирующей информации (PII) в подсказку LLM, особенно когда она отправляется в облачную модель, такую как Anthropic или Gemini, вместо локальной LLM. Так что ограничение таких вещей, возможно, обнаружение вульгарного языка, который выдается LLM, потому что они иногда это делают. Это просто некоторые примеры входных и выходных защитных барьеров. И его очень легко установить как пакет Python и интегрировать эти защитные барьеры прямо в ваш код, пока вы взаимодействуете со своими агентами, как мы видели ранее, когда у меня был этот, знаете ли, простой инструмент командной строки для общения с агентом. Я мог бы просто добавить защитный барьер до или после этого вызова агента. Так что да, защитные барьеры не должны быть сложными. Существуют такие инструменты, даже полностью с открытым исходным кодом, как Guardrails AI, которые делают это очень просто. Хорошо, мы поговорили о защитных барьерах, и я дал вам один пример лучших практик безопасности в нашей кодовой базе. Но что насчет других миллиона различных уязвимостей, которые нам нужно учитывать в нашей кодовой базе и зависимостях, которые мы привносим в наш проект? Мы не можем ожидать, что станем экспертами по безопасности в одночасье. И поэтому важно изучать эти вещи, но мы также можем опираться на существующие инструменты, чтобы помочь нам с обнаружением уязвимостей. Существует множество вариантов, но Snyk Studio — это один из тех, которые я в последнее время активно использую. И у них также есть MCP-сервер в студии, чтобы помочь нам обрабатывать обнаружение уязвимостей автоматически прямо в процессе кодирования. Так что, как всегда, я стараюсь сосредоточиться на решениях с открытым исходным кодом для этого видео, но я не знаю ни одного открытого альтернативы Snyk. Эта платформа невероятна. Так что в Snyk Studio мы можем настраивать эти различные проекты и интеграции. Мы можем попросить ее анализировать нашу кодовую базу и зависимости на предмет уязвимостей в наших репозиториях GitHub. У них есть CLI. Мы можем делать вещи локально. У них есть MCP-сервер, который я покажу чуть позже. Я оставлю ссылки на все это в описании. Но да, MCP-сервер в частности очень крут для меня, потому что мы можем встроить обнаружение уязвимостей прямо в наши рабочие процессы ИИ-кодирования. Теперь, посмотрите на это. У меня есть MCP-сервер Snyk, подключенный напрямую к моему облачному коду после того, как я прошел аутентификацию Snyk через CLI. И вы можете подключить это к любому ИИ-ассистенту кодирования или клиенту MCP. Так что теперь в облаке я могу встроить это в полный рабочий процесс ИИ-кодирования, что очень круто. Я покажу вам простую демонстрацию прямо сейчас. Я просто скажу, знаете ли, используйте Snyk MCP для анализа моего кода и зависимостей на предмет уязвимостей. И поэтому он способен использовать различные инструменты в MCP-сервере для проверки обоих, верно? Это очень надежное решение. И поэтому я дам ему немного времени. Я поставлю на паузу и вернусь, когда он завершит обнаружение уязвимостей. Хорошо, это так круто. Посмотрите на это. Итак, в моем базовом репозитории агента, сначала он использовал сервер Snyk MCP для анализа уязвимостей в моих зависимостях, таких как Pydantic AI, например. А затем он выполняет сканирование кода. Так что это также обнаружило бы, например, если бы у меня были жестко закодированы переменные окружения, как в примере, который я привел ранее. Итак, он нашел три проблемы с моими зависимостями и ничего с моим кодом, чем я очень горжусь. У меня нет проблем с моим кодом. И он не только выполняет анализ, но и дает мне сводку и перечисляет действия, которые я могу предпринять для устранения проблем. Например, вот средние уязвимости, которые у меня есть в нескольких моих зависимостях. Ничего в моем коде. А затем он дает мне рекомендации по исправлению. И поэтому я могу перейти и сказать "да, действовать сейчас". И это обновит мои требования.ext, исправит эти вещи. И я мог бы даже снова запустить сервер Snyk MCP. И вы определенно можете увидеть, как вы бы встроили такую вещь непосредственно в слой валидации вашего рабочего процесса ИИ-кодирования. Очень, очень здорово для любого ИИ-агента или действительно любого программного обеспечения, которое вы хотите создать. Продолжая, я хочу поговорить о памяти. Теперь управление токенами, которые мы передаем в вызовы LLM для наших агентов. И это действительно горячая тема прямо сейчас, особенно со всеми ограничениями скорости, которые люди получают от ИИ-ассистентов кодирования, таких как Claude Code. Действительно важно эффективно управлять нашим контекстом, предоставляя нашим агентам только ту информацию, которая им действительно нужна, и не раздувая наши системные подсказки тысячами строк инструкций и инструментов, которые им на самом деле не нужны. Этого следует избегать. И поэтому, всего пара простых советов здесь, следуя нашей теме. Первый — это делать ваши подсказки очень краткими. как ваши системные подсказки, так и описания инструментов, которые описывают вашему агенту, когда и как использовать инструменты, как я показывал в коде ранее. Вам не нужно усложнять. Вот почему у меня есть эти шаблоны для вас, например, для системной подсказки, верно? У вас есть ваша цель, всего пара предложений, ваша роль, всего пара предложений. Держите все очень организованно, и организация также помогает вам сохранять краткость. Вам не нужно переосмысливать. И поэтому я обычно рекомендую, чтобы ваши системные подсказки были не более нескольких сотен строк. Некоторые решения могут потребовать большего, но тогда я бы начал спрашивать, действительно ли вы можете сделать это более кратким или разделить его на разные специализированные агенты, чтобы каждый агент все еще имел простую системную подсказку. Другое, что вы можете сделать для агентов, у которых более длинные разговоры, — это ограничить, скажем так, в скользящем окне до 10 или 20 последних сообщений, например, которые вы фактически включаете в контекст. И возвращаясь к коду, я даже покажу вам, как это выглядит здесь. Сейчас, когда мы вызываем нашего агента, мы запускаем его, мы передаем всю историю разговора. Но в Python, если бы я хотел включить только последние 10 сообщений, я мог бы сделать что-то вроде этого. И теперь, возможно, предыдущие сообщения уже не так актуальны. Мы просто хотим включить последние 10. Вот как мы можем это сделать. Так что это еще одна очень популярная стратегия. Также инструменты, такие как N8N, имеют это как опцию, встроенную непосредственно в их узлы краткосрочной памяти. Так что очень полезно знать. А затем также, когда у вас накапливается так много информации об одном пользователе, что вы не хотите включать ее в краткосрочную память, тогда вы можете обратиться к долгосрочной памяти. Но также не создавайте ее с нуля. Опять же, не усложняйте. Существуют инструменты, которые вы можете использовать, как и в случае с безопасностью, чтобы помочь нам с долгосрочной памятью, и Memzero — один из них. Memzero — это полностью открытый фреймворк для долгосрочной памяти агентов. И поэтому я покажу GitHub через секунду, но да, когда у вас накапливается так много информации о пользователе, что вы не можете включить ее всю в контекст, вам нужен способ искать в более долгосрочном наборе воспоминаний и включать только те, которые актуальны для текущего разговора, который, кстати, использует RAG под капотом. Так что опять же, еще один пример того, почему это такая важная возможность. Но да, по сути, вы можете извлекать основные воспоминания из разговоров и сохранять их для последующего поиска. Это то, что предлагает Memzero. И его так легко интегрировать в наш код Python, как и Guardrails AI. Я быстро покажу вам пример в их быстром старте. Вы устанавливаете его как пакет Python, а затем у вас есть функция для поиска воспоминаний, как выполнение RAG для поиска воспоминаний, связанных с последним сообщением, а затем у вас есть функция для добавления воспоминаний. И поэтому он будет использовать большую языковую модель для извлечения ключевой информации для хранения и последующего извлечения. И поэтому это определенно решает проблему контекста, потому что теперь вы можете иметь практически бесконечную память для агента, но вам не нужно передавать ее всю LLM одновременно. Он просто извлекает вещи по мере необходимости. И, конечно, последнее, на чем я хочу остановиться в контексте, — это на чем не следует сосредотачиваться при первом создании вашего агента. Не беспокойтесь о продвинутых методах сжатия памяти. Есть много классных вещей, над которыми Anthropic особенно проводит исследования, но не беспокойтесь об этом. Не беспокойтесь о специализированных под-агентах. Это оба решения для решения проблемы памяти, когда она становится действительно технической. Но прямо сейчас просто начните с простого, и вы всегда сможете оптимизировать вещи, когда начнете расширять своего агента и переходить к производству и столкнетесь с некоторыми ограничениями. Но прямо сейчас, сосредоточение на этих вещах заранее — это все, что вам нужно, чтобы пройти первые 90%, возможно, даже больше, в зависимости от того, насколько просты ваши агенты. И контекст был последним из четырех основных компонентов агентов. Итак, мы рассмотрели четыре основных компонента и безопасность. Теперь я хочу немного поговорить об наблюдаемости и развертывании. Подготовка нашего агента к производству. И я скажу, что безопасность, наблюдаемость и развертывание определенно входят в последние 10% создания агента. Но я хочу коснуться их здесь, потому что есть способы спроектировать вещи заранее очень просто, особенно с наблюдаемостью. Я хочу представить вам Langfuse прямо сейчас. И я уже рассказывал об этом на своем канале. Ссылка на видео здесь о Langfuse, если вы хотите углубиться в наблюдаемость. Но мы можем настроить возможность отслеживать действия, которые предпринимает наш агент, просматривать их на панели управления. Мы можем делать такие вещи, как тестирование различных подсказок для наших агентов. Это прекрасная платформа, и ее действительно легко интегрировать в наш код. И поэтому я уже сделал это очень незаметно, когда создавал агента вместе с вами, но у меня есть эта функция под названием setup_observability. И все, что она делает, — это инициализирует Langfuse на основе некоторых переменных окружения, которые я установил здесь. И я рассказываю обо всем этом в своем видео на YouTube о Langfuse, если вам интересно. Но вы просто подключаетесь к своему экземпляру Langfuse. А затем, после того как вы настроили соединение и инструментировали своего агента, вашего агента Pydantic AI для наблюдаемости, это все, что вам нужно сделать. Буквально больше никакого кода здесь для Langfuse. И он будет отслеживать все наши выполнения агента, даже получая представление о вызовах инструментов, которые он делает под капотом. Так что посмотрите на это. Итак, я нахожусь на панели управления Langfuse, где я могу просмотреть выполнение, которое у нас было из нашего предыдущего теста, где он использовал функцию add_numbers, и у нас есть все эти очень богатые данные о количестве использованных токенов, задержке. Мы можем просматривать инструменты и также смотреть на различные параметры, которые у нас есть, такие как аргументы инструментов, например, для чисел, которые нужно сложить. Мы можем просмотреть системную подсказку, которая была использована здесь, на основе этого шаблона, который мы определили. У нас есть вся эта наблюдаемость, которая также действительно помогает при мониторинге наших агентов в производстве, когда другие пользователи используют агента. Так что мы не можем просто посмотреть на наш чат и увидеть, как работает агент. И есть так много других вещей в Langfuse, в которые я не хочу вдаваться прямо сейчас, например, eval для вашего агента. Это полностью открытая платформа, как и Memzero и Guardrails AI. Так что опять же, сосредоточение на открытом исходном коде в этом видео. Существуют и другие решения для такой наблюдаемости, такие как Helicone и Langsmith, например, но Langfuse — это то, что я люблю использовать. И я знаю, что я не слишком много говорил об этом в коде, но это действительно так же просто, как я показал. И поэтому вы можете использовать репозиторий, который я оставил ниже, в качестве шаблона для начала работы с агентом с уже встроенной наблюдаемостью, если вы заинтересованы. А затем последний компонент, который я хочу хотя бы затронуть прямо сейчас, — это то, как вы можете заранее настроить своего агента для работы при развертывании, когда вы будете готовы вывести своего агента в производство. Очевидно, что это будет частью последних 10%. Не то, о чем я буду много говорить в этом видео, но одна большая золотая крупица, которую я хочу вам дать, — это то, что вы всегда должны думать о том, как вы можете создать своего ИИ-агента для работы в качестве Docker-контейнера. Docker — это мой метод упаковки любого приложения, особенно ИИ-агентов, которые я хочу развернуть в облаке, и я также скажу, что ИИ-ассистенты кодирования очень хороши в настройке конфигурации Docker, такой как ваши Docker-файлы и файлы Docker Compose. Да. Так что используйте их, а затем вы можете добавить, знаете ли, простое приложение Streamlit с Python или создать фронтенд React для создания интерфейса чата для вашего агента, если это агент, управляемый диалогом, или иначе, что я люблю делать для более, знаете ли, фоновых агентов, которые периодически работают с набором данных, я запускаю его просто как бессерверную функцию, так что это своего рода фоновый агент, запускаемый как бессерверный в Docker-контейнере, диалоговый агент, вы запускаете его в Docker-контейнере также с фронтенд-приложением, это примерно два пути, которые у меня есть для любого агента, который я хочу развернуть. Так что да, просто думайте "Docker-native". Держите это в уме с самого начала, когда вы создаете своего агента. Чего вы не хотите фокусироваться на наблюдаемости и развертывании и всем, что готово к производству, — это оркестровка Kubernetes, обширные оценки LLM или A/B-тестирование подсказок. Некоторые вещи, которые у нас есть в Langfuse, которые очень мощны, когда вы хотите очень точно настроить инструменты вашего агента, системную подсказку и все остальное, не беспокойтесь об этом пока. Вы определенно можете добраться туда, и, как я сказал, это основная часть последних 10%. Но прямо сейчас также не думайте столько об инфраструктуре, потому что, если вы не запускаете локальные большие языковые модели, вам действительно не нужна тяжелая инфраструктура для ваших агентов вообще. Очевидно, это зависит от объема использования вашего агента. Но для большинства случаев использования, просто пара vCPU и несколько гигабайт ОЗУ — это все, что вам нужно для запуска ИИ-агента, даже если у вас есть фронтенд-приложение. очень, очень легкий, пока вы вызываете стороннего поставщика для большой языковой модели, такого как Open Router, или, знаете ли, Anthropic или Gemini, что бы это ни было. Итак, вот и все, что я имею для вас сегодня, помогая вам просто сохранять простоту, что не только поможет вам создавать лучшие агентов, даже когда вам придется масштабировать сложность, но и поможет вам преодолеть этот барьер мотивации, потому что я даю вам разрешение не быть идеальным с самого начала. Вы просто начинаете с основ, как я показал, а затем строите и итерируете по мере необходимости. И поэтому я надеюсь, что это вдохновит вас просто пойти и создать своего следующего ИИ-агента прямо сейчас, потому что начать может быть очень просто. И поэтому, если вы оценили это видео и с нетерпением ждете большего о создании ИИ-агентов и использовании ИИ-ассистентов кодирования, я был бы очень признателен за лайк и подписку. И с этим я увижу вас в следующем.