📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Why and How to Build AI Agents for Software Testing?

Execute Automation11:20

Transcription

Добро пожаловать в следующую секцию нашего курса, и в этой секции мы поговорим о создании агентов и инструментов. Итак, наконец, в этом курсе, посвященном генеративному ИИ, ИИ-агентам и многоагентным системам, мы поговорим о том, как мы можем начать создавать агентов и инструментарий. Мы уже говорили о том, что такое агенты, в предыдущих секциях этого курса, что ИИ-агент может быть определен несколькими способами. Некоторые определяют агентов как полностью автономную систему, которая работает независимо или в течение длительного периода времени, или использует различные инструменты для выполнения сложных задач. Мы видели это раньше. Так что мы знаем, что такое ИИ-агент. Мы также видели, что ИИ-агент повышает эффективность системы ИИ, которая позволит LMS взаимодействовать с внешним миром. Так что на самом деле это означает, что эти ИИ-агенты будут думать, решать и действовать для данной задачи, что является силой ИИ-агента, потому что все эти дни мы знаем, что до нашей последней секции этого курса мы пытались подключить большую языковую модель, мы задавали вопрос и получали ответ. Вот что мы получали до сих пор. Это очень похоже на чат GPT, верно? Вы задаете вопрос чат GPT, он дает вам ответ. Вот что он делает все время. Но что, если вы хотите использовать большую языковую модель еще дальше? Ну, вот тут-то и появляется ИИ-агент. Но опять же, в контексте самого ИИ-агента, что именно будет делать ИИ-агент для выполнения операции, как мы видим здесь. Мы также видели, что для мышления используется большая языковая модель, потому что она понимает, что такое ввод пользователя, а затем она решит, большая языковая модель решит, как создать план действий для любого данного запроса от пользователя. Таким образом, операции "думать" и "решать" будут выполняться большой языковой моделью. Но "действовать" — это то, чего большая языковая модель не может сделать, но она может вызвать инструмент, который привязан или привязан к большой языковой модели, и операция "действовать" будет выполнена ИИ-агентом для вас, и это то, что внешняя операция, которую ИИ-агент будет выполнять для вас, и для этого, как я вам говорил, ИИ-агенту требуется то, что называется инструментами, которые являются внешними функциями или утилитами, которые агенты могут использовать для выполнения действий в реальном мире, таких как чтение файлов, запрос к базе данных и тому подобное. Так что это и есть инструмент. Таким образом, вы можете в основном думать об инструментах как о доступе для большой языковой модели для взаимодействия с внешними системами. Итак, в этой секции мы увидим, как мы можем создавать этих ИИ-агентов и инструменты в Langchain. Агенты в Langchain очень легко создавать, потому что сложные агенты могут быть созданы с помощью Lang. Так что есть совершенно другой пакет. Есть совершенно другая платформа. Так что вам нужно использовать Lang для этого, чего мы не будем делать в этом курсе, потому что этот курс на самом деле не курс разработки. Опять же, если вы действительно заинтересованы в том, чтобы делать все это, вам нужно перейти к моему другому курсу, где я рассказывал, как вы можете использовать Langchain и Lang для создания сложного агента и тому подобного. Но в этом курсе мы увидим, как мы можем создать очень, очень минималистичного агента, который может быть использован для выполнения привязок инструментов и вызовов инструментов с нашей большой языковой моделью, что мы будем делать в оставшейся части этого курса. Так что эта секция, это видео очень, очень важно. Поэтому я настоятельно, настоятельно рекомендую вам посмотреть это видео пару раз, если вы действительно не поймете, о чем я говорю. Но да, эта лекция очень, очень важна, и вся эта секция супер важна. Поэтому, пожалуйста, посмотрите ее несколько раз. Ну, как я уже сказал, вы можете видеть, что агенты в Langchain очень легко создавать, и я покажу вам в фрагменте кода на следующем слайде, как это можно сделать, и мы также можем создавать инструменты в Langchain, что также очень, очень легко, как вы можете думать об этом как о методе, который может быть вызван после привязки этого инструмента к агенту, и вы можете просто использовать его, использовать его почти так же, как вы делаете с обычными вызовами функций. Вот что такое инструменты, и мы будем использовать тег инструмента для выполнения этой операции. Вот как мы можем создавать агента и инструменты в Langchain. Давайте быстро посмотрим, как можно создать агента в Langchain. Это очень, очень просто. Видите ли, агент здесь будет инициализирован с помощью метода, называемого initialize_agent. Вот этот метод используется для инициализации агента. Он требует инструменты. Смотрите, это те инструменты, которые вы будете настраивать. Это может быть всего один инструмент, как вы видите, есть инструмент под названием summarize_tool, но у вас может быть несколько разных инструментов. У вас может быть инструмент поиска, у вас может быть инструмент вызова браузера, инструмент Playwright или, возможно, инструмент сложения, простая вещь, инструмент поиска в Википедии, сложная вещь, вы можете настроить все эти инструменты здесь в массиве инструментов. И тогда вам нужна большая языковая модель здесь, потому что именно она будет принимать решение. Таким образом, вы настраиваете агента, который будет иметь все инструменты, и этот парень, LLM, является принимающим решение о том, что именно нужно сделать и какой инструмент нужно вызвать, и этот инструмент будет вызван на основе инструмента, который был вызван этой большой языковой моделью. И тогда вам нужно указать тип агента, и существует множество различных типов агентов. Так что пока не беспокойтесь об этом. И тогда мы скажем verbose равно true, чтобы он мог показать вам журналы и тому подобное. Вот так вы создаете агента. Смотрите, так же просто, как это, всего одна строка с парой параметров, и вы закончили. Вот как вы создаете агента в Langchain. Следующее — это то, как вы можете создать простой инструмент с помощью Langchain. Смотрите, вот что такое инструмент. О, посмотрите на это. Это очень просто. Можете сказать: Картик, это тот инструмент, о котором ты говоришь? Ну да. Вы видите, что это инструмент для выполнения простой операции сложения. Итак, я скажу def add_numbers. По сути, это способ объявить метод, а затем я явно укажу, какой параметр я передаю, например, целочисленное значение, и тип возвращаемого значения тоже целочисленный. А затем я скажу описание здесь, что сложить два числа и вернуть результат. Так что это будет полезно для большой языковой модели, когда она будет вызывать инструмент. Так что это очень, очень важно. Это описание очень важно, а затем это возвращаемое значение для двух целых чисел после выполнения сложения. Так что это инструмент, который я аннотировал с помощью аннотации @tool. Так что это простой инструмент, который мы можем создать, и это именно то, что такое инструменты в Langchain. Но у вас может возникнуть вопрос: ну, такое простое сложение может быть выполнено и большой языковой моделью, верно? Зачем нам нужен инструмент для этого? Вы задали очень, очень правильный вопрос, но что, если вашей большой языковой модели нужен доступ к внешним файлам, доступ к базе данных или, возможно, доступ к браузеру для выполнения этих операций? Как вы это сделаете? Просто скажите мне сейчас. Просто подумайте об этом и скажите мне. Ну, вы не можете. Вам нужна мощь инструментов для выполнения этой операции. Так что инструменты — это как ноги для большой языковой модели или, возможно, руки для большой языковой модели, чтобы идти и работать с внешними файлами, внешними базами данных, возможно, даже Jenkins, Jira, API Slack и получать доступ к требуемым документам или файлам журналов. Все эти вещи становятся удобными или, возможно, достижимыми только в том случае, если вы предоставите вашей большой языковой модели доступ к этим системам с помощью инструментов. Таким образом, инструменты являются ключевым компонентом или движущим компонентом для достижения этого. Так что это и есть сила инструмента. Вы не можете просто писать и добавлять инструменты, которые даже большая языковая модель может сделать. Я просто показал вам простой пример, но вы не будете делать это из или, возможно, писать как инструмент, честно говоря, но вот как инструмент будет работать, и вы будете использовать его для своих целей тестирования, а это именно то, что я показывал вам в MCP, если вы помните, где сервер MCP будет действовать как протокол, который будет получать доступ к внешним файловым системам, таким как локальный доступ к Git или файлам, Slack, Puppeteer, Playwright и Google Drive. Таким образом, вы можете получить доступ к любому из них с помощью протокола MCP и поддержки инструментов. Так что именно это делал MCP. Именно это я показывал вам в демо в нашей первой секции этого курса. Именно это на самом деле делают инструменты. Ну, как я уже сказал, для доступа к файлу журнала с помощью инструмента, вот как мы пишем простой инструмент. Это пользовательский инструмент, который я написал здесь, например, summarize_logs, где говорится: прочитать и вернуть сводку первых нескольких строк каждого файла журнала. Теперь это каталог, где вы будете перебирать список всех каталогов, которые у нас есть. Мы откроем путь и объединим каталоги вместе с именами файлов, которые существуют в этом конкретном каталоге. а затем мы просто прочитаем все строки файла, а затем добавим их в массив с помощью метода extend. Вы помните, что то же самое мы делали и в предыдущих секциях этого курса. Мы сделаем это, и это будет содержать все это. Смотрите, он будет хранить детали файла с именем файла: детали строки. Вот что я делаю, и я прочитаю первые 50 строк каждого файла журнала и сохраню все это в массиве. Я объединяю все журналы с новыми символами, новыми строками, а затем возвращаю детали в виде строки большой языковой модели, когда этот парень будет вызван. Вот как я на самом деле делаю это, когда создаю пользовательские инструменты или пользовательский инструмент ведения журнала или инструмент суммирования. Вот как мы позволяем большой языковой модели получить доступ к нашим папкам журналов. Посмотрите на это. Это потрясающе. Сейчас вы предоставляете вашей большой языковой модели доступ к папке журналов. Если до сих пор все ясно, мы будем создавать, как мы можем фактически вызывать или создавать средство доступа к файлам журналов с помощью ИИ-агента. И это суть того, что мы будем делать. Но пока не беспокойтесь об этой диаграмме. Я объясню, когда мы дойдем до нее. Но это цель этой секции для вас — увидеть, как мы можем создавать ИИ-агента, как мы можем писать инструменты и как мы можем суммировать файлы журналов, которые у нас есть на нашей собственной машине, и получать результаты обратно.