Skip to content

Latest commit

 

History

History
173 lines (100 loc) · 16.9 KB

File metadata and controls

173 lines (100 loc) · 16.9 KB

Open Source Models

Введение

AI Agents представляют собой захватывающее направление в области генеративного ИИ, позволяя большим языковым моделям (LLM) эволюционировать из помощников в агентов, способных выполнять действия. Фреймворки AI Agent дают разработчикам возможность создавать приложения, которые предоставляют LLM доступ к инструментам и управлению состоянием. Эти фреймворки также повышают прозрачность, позволяя пользователям и разработчикам отслеживать действия, запланированные LLM, что улучшает управление пользовательским опытом.

В этом уроке мы рассмотрим следующие темы:

  • Понимание, что такое AI Agent — что именно представляет собой AI Agent?
  • Изучение четырёх различных фреймворков AI Agent — в чём их особенности?
  • Применение AI Agents в разных сценариях — когда стоит использовать AI Agents?

Цели обучения

После прохождения этого урока вы сможете:

  • Объяснить, что такое AI Agents и как их можно использовать.
  • Понять различия между некоторыми популярными фреймворками AI Agent и их особенности.
  • Понять, как работают AI Agents, чтобы создавать приложения с их использованием.

Что такое AI Agents?

AI Agents — это очень интересная область в мире генеративного ИИ. Вместе с этим интересом иногда возникает путаница в терминах и их применении. Чтобы упростить и охватить большинство инструментов, которые называют AI Agents, мы будем использовать следующее определение:

AI Agents позволяют большим языковым моделям (LLM) выполнять задачи, предоставляя им доступ к состоянию и инструментам.

Agent Model

Давайте определим эти термины:

Большие языковые модели — это модели, упоминаемые в этом курсе, такие как GPT-3.5, GPT-4, Llama-2 и другие.

Состояние — это контекст, в котором работает LLM. Модель использует контекст своих прошлых действий и текущий контекст, чтобы направлять принятие решений для последующих действий. Фреймворки AI Agent облегчают разработчикам поддержание этого контекста.

Инструменты — чтобы выполнить задачу, которую запросил пользователь и которую запланировал LLM, модель должна иметь доступ к инструментам. Примерами таких инструментов могут быть база данных, API, внешнее приложение или даже другая LLM!

Эти определения помогут вам лучше понять, как всё реализовано. Давайте рассмотрим несколько различных фреймворков AI Agent:

LangChain Agents

LangChain Agents — это реализация приведённых выше определений.

Для управления состоянием используется встроенная функция AgentExecutor. Она принимает определённого agent и доступные для него tools.

AgentExecutor также сохраняет историю чата, чтобы обеспечить контекст беседы.

Langchain Agents

LangChain предлагает каталог инструментов, которые можно импортировать в ваше приложение, чтобы LLM получил к ним доступ. Эти инструменты создаются сообществом и командой LangChain.

Вы можете определить эти инструменты и передать их в AgentExecutor.

Прозрачность — ещё один важный аспект при работе с AI Agents. Разработчикам важно понимать, какой инструмент использует LLM и почему. Для этого команда LangChain разработала LangSmith.

AutoGen

Следующий фреймворк AI Agent, который мы рассмотрим, — AutoGen. Основное внимание в AutoGen уделяется диалогам. Агенты одновременно способны вести диалог и настраиваемы.

Способны вести диалог — LLM могут начинать и продолжать разговор с другой LLM для выполнения задачи. Это реализуется созданием AssistantAgents с определённым системным сообщением.

autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, )

Настраиваемы — агенты могут быть определены не только как LLM, но и как пользователь или инструмент. Как разработчик, вы можете определить UserProxyAgent, который отвечает за взаимодействие с пользователем для получения обратной связи при выполнении задачи. Эта обратная связь может либо продолжить выполнение задачи, либо остановить её.

user_proxy = UserProxyAgent(name="user_proxy")

Состояние и инструменты

Для изменения и управления состоянием агент-ассистент генерирует Python-код для выполнения задачи.

Вот пример этого процесса:

AutoGen

LLM определяется с помощью системного сообщения

system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done."

Это системное сообщение направляет конкретную LLM, какие функции релевантны для её задачи. Помните, что в AutoGen можно иметь несколько AssistantAgents с разными системными сообщениями.

Диалог инициируется пользователем

user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", )

Это сообщение от user_proxy (человека) запускает процесс, в ходе которого агент исследует возможные функции для выполнения.

Выполнение функции

chatbot (to user_proxy):

***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** --------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR ****************************************************************

После обработки начального сообщения агент предложит инструмент для вызова. В данном случае это функция get_weather. В зависимости от вашей настройки, функция может быть выполнена автоматически и прочитана агентом или выполнена по запросу пользователя.

Вы можете найти список примеров кода AutoGen, чтобы подробнее изучить, как начать разработку.

Taskweaver

Следующий фреймворк, который мы рассмотрим, — Taskweaver. Его называют «code-first» агентом, потому что он работает не только со строками (strings), но и с DataFrames в Python. Это особенно полезно для задач анализа данных и генерации, например, создания графиков, диаграмм или генерации случайных чисел.

Состояние и инструменты

Для управления состоянием разговора TaskWeaver использует концепцию Planner. Planner — это LLM, который принимает запросы пользователей и планирует задачи, необходимые для выполнения этого запроса.

Для выполнения задач Planner имеет доступ к набору инструментов, называемых Plugins. Это могут быть классы Python или общий интерпретатор кода. Эти плагины хранятся в виде эмбеддингов, чтобы LLM мог лучше находить нужный плагин.

Taskweaver

Вот пример плагина для обнаружения аномалий:

class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):

Код проверяется перед выполнением. Ещё одна функция для управления контекстом в Taskweaver — это experience. Experience позволяет сохранять контекст разговора в долгосрочной перспективе в YAML-файле. Это можно настроить так, чтобы LLM со временем улучшался в выполнении определённых задач, учитывая предыдущие разговоры.

JARVIS

Последний фреймворк, который мы рассмотрим, — JARVIS. Особенность JARVIS в том, что он использует LLM для управления состоянием разговора, а инструментами выступают другие AI-модели. Каждая из этих моделей специализирована на выполнении определённых задач, таких как обнаружение объектов, транскрипция или создание подписей к изображениям.

JARVIS

LLM, будучи универсальной моделью, получает запрос от пользователя, определяет конкретную задачу и необходимые аргументы/данные для её выполнения.

[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}]

Затем LLM форматирует запрос в виде, понятном специализированной AI-модели, например, в JSON. После того как AI-модель возвращает свой результат, LLM получает ответ.

Если для выполнения задачи требуется несколько моделей, LLM также интерпретирует ответы от этих моделей и объединяет их, чтобы сформировать ответ для пользователя.

Пример ниже показывает, как это работает, когда пользователь запрашивает описание и подсчёт объектов на изображении:

Задание

Чтобы продолжить изучение AI Agents, вы можете создать с помощью AutoGen:

  • Приложение, имитирующее деловое совещание с разными отделами образовательного стартапа.
  • Создать системные сообщения, которые помогут LLM понять разные роли и приоритеты, а также позволят пользователю представить новую идею продукта.
  • Затем LLM должен сгенерировать уточняющие вопросы от каждого отдела, чтобы доработать и улучшить презентацию и идею продукта.

Обучение не заканчивается здесь — продолжайте путь

После завершения этого урока ознакомьтесь с нашей коллекцией по генеративному ИИ, чтобы продолжать развивать свои знания в области генеративного ИИ!

Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, просим учитывать, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.