Запуск в автоген исследование основ многорежимной архитектуры

Основы многорежимной архитектуры введение в автогенное исследование

Введение

Погрузитесь в захватывающее путешествие в будущее разработки программного обеспечения с помощью основ многоагентной платформы ‘Переход к автогенерации: изучение основ многоагентной системы.’ В свете OpenAI’s ChatGPT, специализированная область, известная как LLM агенты, переживает бурный рост, революционизируя разработку искусственного интеллекта. От автоматизации рутинных задач до решения сложностей в принятии динамических решений, LLM агенты расширяют границы того, что раньше считалось невозможным.

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

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

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

  • Понять, что такое LLM агенты
  • Узнать, что такое Autogen и изучить основы создания агентов с помощью Autogen
  • Создать агентов с помощью Autogen и OpenAI APIs
  • Изучить реальные примеры использования LLM агентов

Эта статья была опубликована в рамках Data Science Blogathon.

Что такое LLM агенты?

Ванильные модели языка отлично справляются с многими задачами, такими как перевод, вопросно-ответная система и т.д. Однако их знания и возможности ограничены. Это похоже на каменщика без его инструментов при строительстве дома. Однако было замечено, что LLM-модели могут рассуждать и действовать, имея необходимые инструменты. У большинства LLM-моделей ограниченное знание о мире, но мы можем усилить их информацией из пользовательских источников через постановку задачи.

Мы можем достичь этого с помощью двух методов. Возможность определения при помощи извлечения и агенты LLM. В RAG/извлечении информации мы питаем модели информацией через настраиваемые трубопроводы. Но с агентами LLM модели, на основе своего рассуждения, будут использовать инструмент, который у них есть. К примеру, GPT-4 с инструментом Serper будет обращаться к Интернету и отвечать соответствующим образом, или он может получать и анализировать данные о финансовой деятельности, когда имеет доступ к инструменту Yahoo Finance. Таким образом, это сочетание LLM-моделей, инструментов и фреймворков для рассуждения и принятия мер – это то, что есть AI-агенты.

Наблюдается быстрый рост платформ и инструментов для создания агентов LLM. Autogen – один из таких инструментов. Итак, давайте поймем, что такое Autogen и как создавать агентов LLM с его помощью.

Что такое Autogen?

Autogen – это инструмент с открытым исходным кодом от Microsoft для создания надежных многоагентных приложений. Этот инструмент разработан с учетом многоагентной коммуникации. Он позволяет нам создавать приложения LLM, в которых несколько агентов общаются друг с другом для поиска решений предоставленных проблем. Агенты могут быть настроены по-разному, так что мы можем направлять их на выполнение определенных задач. Он также хорошо интегрируется с экосистемой инструментов Langchain, что позволяет использовать существующие инструменты Langchain для расширения возможностей наших агентов.

Для выполнения задач Autogen предоставляет различные типы агентов, таких как,

  • Агент-помощник: этот агент отвечает за выполнение задач, таких как написание кода, рецензирование и т.д.
  • Агент-пользователь: Как следует из названия, эти агенты действуют от имени конечных пользователей. Они ответственны за включение людей в цикл агента, чтобы проводить разговоры и давать руководства.
  • Агент-учитель: этот агент настроен на качественное обучение. Мы можем подавать агенту явную информацию, которая отсутствует в LLM-моделях.

Нам обычно нужен помощник-агент и агент-пользователь для большинства наших случаев использования. Так что давайте посмотрим, как мы можем настроить агентов с помощью Autogen. Есть и другие агенты, такие как RetrieveAssistantAgent и RetrieveUserProxy, настроенные для RAG.

Вот диаграмма типичного многокомпонентного рабочего процесса.

Создание агентов с помощью Autogen

Теперь давайте приступим к настройке агентов Autogen. Но перед этим настройте среду. Если случай использования требует выполнения кода, агенты будут выполнять его в текущей среде, и согласно официальной документации, это лучше всего делать в контейнере. Чтобы быстро начать, вы можете использовать GitHub codespaces. Убедитесь, что вы установили “pyautogen”.

На данный момент Autogen поддерживает только модели OpenAI. Чтобы эффективно использовать агентов, нам необходимо настроить наши модели. Мы можем настроить несколько моделей OpenAI и использовать те, которые нам нужны. Есть разные способы настройки моделей, но мы определим JSON-файл.

JSON-файл

#OAI_CONFIG_LIST[    {        "model": "gpt-4",        "api_key": "<ваш ключ OpenAI API здесь>"    },    {        "model": "gpt-4",        "api_key": "<ваш ключ Azure OpenAI API здесь>",        "base_url": "<ваша базовая ссылка Azure OpenAI API здесь>",        "api_type": "azure",        "api_version": "2023-07-01-preview"    },    {        "model": "gpt-3.5-turbo",        "api_key":  "<ваш ключ OpenAI API здесь>"    }]

Теперь определите список конфигурации для моделей.

import autogenconfig_list = autogen.config_list_from_json(    "OAI_CONFIG_LIST",    filter_dict={        "model": {            "gpt-3.5-turbo"        }    })

Этот метод сначала ищет OAI_CONFIG_LIST в переменной среды. Если не удалось, он будет искать файл Json OAI_CONFIG_LIST в текущем каталоге. filter_dict используется для фильтрации моделей на основе некоторых параметров, здесь он установлен на модель.

Конфигурация для LLM

Теперь мы определим конфигурацию для LLM. В этом примере мы будем использовать инструмент функции блокнота Jupyter для запуска скриптов на Python, чтобы выполнить простую задачу по построению графика.

llm_config = {    "functions": [        {            "name": "python",            "description": "выполнить ячейку в IPython и вернуть результат выполнения.",            "parameters": {                "type": "object",                "properties": {                    "cell": {                        "type": "string",                        "description": "Допустимая ячейка Python для выполнения.",                    }                },                "required": ["cell"],            },        },    ],    "config_list": config_list,    "timeout": 120,}

Мы определим функцию для выполнения скриптов на Python в блокноте IPython.

from IPython import get_ipythondef exec_python(cell):    ipython = get_ipython()    result = ipython.run_cell(cell)    log = str(result.result)    if result.error_before_exec is not None:        log += f"\n{result.error_before_exec}"    if result.error_in_exec is not None:        log += f"\n{result.error_in_exec}"    return log

Использование агента помощника и агента-пользователя

Мы почти закончили создание нашей многокомпонентной системы. Единственное, что нам не хватает, это ранее описанные агенты. Здесь нам понадобятся агент помощника и агент-пользователь. Вот как мы можем определить эти агенты.

chatbot = autogen.AssistantAgent(    name="chatbot",    system_message="При выполнении задач по кодированию используйте только предоставленные вам функции. \                    Ответьте TERMINATE, когда задача будет выполнена.",    llm_config=llm_config,)# создайте экземпляр UserProxyAgent с именем "user_proxy"user_proxy = autogen.UserProxyAgent(    name="user_proxy",    is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").\                       rstrip().endswith("TERMINATE"),    human_input_mode="NEVER",    max_consecutive_auto_reply=10,    code_execution_config={"work_dir": "coding"},)

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

Зарегистрируйте функции с агентом-прокси пользователя.

user_proxy.register_function(    function_map={        "python": exec_python,    })

Теперь запустите агентов.

# запуск конверсацииuser_proxy.initiate_chat(    chatbot,    message="построить график для синусоиды",)

Запуск агента покажет журналы на ваше устройстве о том, что происходит.

Журнал выполнения

На приведенном выше журнале выполнения вы можете увидеть, что агент-помощник «chatbot» генерирует код, затем код выполняется, и находятся возможные ошибки. Затем пользовательский прокси отправляет ошибку обратно помощнику, и снова выполняет решающий код, в этом случае, устанавливая Matplotlib, и наконец, выполняет конечный код и возвращает вывод.

Мы также можем расширить это, добавив в разговор другого агента-помощника, например, критика или рецензента. Это поможет сделать вывод более персонализированным. Вот как это можно сделать.

critic = autogen.AssistantAgent(    name="Critic",    system_message="""Critic. You are a helpful assistant highly \    skilled in evaluating the quality of a \    given visualization code by providing a score from 1 (bad) - 10 (good)\     while providing clear rationale. \    YOU MUST CONSIDER VISUALIZATION BEST PRACTICES for each evaluation.\     Specifically, you can carefully \    evaluate the code across the following dimensions- bugs (bugs):  are there bugs, logic errors, syntax error or typos?\ Are there any reasons why the code may \fail to compile? How should it be fixed? If ANY bug exists,\ the bug score MUST be less than 5.- Data transformation (transformation): Is the data transformed\ appropriately for the visualization type? E.g., \is the dataset appropriated filtered, aggregated, or grouped\ if needed? If a date field is used, is the date field\ first converted to a date object etc?YOU MUST PROVIDE A SCORE for each of the above dimensions.{bugs: 0, transformation: 0, compliance: 0, type: 0, encoding: 0, aesthetics: 0}Do not suggest code. Finally, based on the critique above, suggest a concrete list of actions that the coder \should take to improve the code.""",    llm_config=llm_config,)groupchat = autogen.GroupChat(agents=[user_proxy, coder, critic], messages=[], max_round=12)manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)user_proxy.initiate_chat(manager, message="построить график для обратной синусоиды в \                                           регионе -pi/2 до pi/2")

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

В этом примере мы использовали GPT 3.5. Для более сложных задач программирования и логического вывода предпочтительнее GPT-4. Мы можем делать больше с меньшим количеством агентов с помощью способных моделей, таких как GPT-4. Кроме того, GPT-3.5 иногда становится застрявшим в петле. Поэтому для серьезных приложений гораздо лучше выбирать GPT-4. Также разрабатывается новый тип экспериментального EcoAssistant (code). Этот агент решает проблему высокой стоимости использования способных моделей, таких как GPT-4, с помощью иерархии моделей. Идея заключается в том, чтобы начать разговор с экономичными моделями, и если они не достигают конечной цели, они используют более способные, но дорогостоящие модели. Одно из значительных преимуществ этого подхода – синергетический эффект. Поскольку агенты используют одну базу данных, коды более крупных моделей могут быть получены более маленькими моделями позже. Тем самым улучшая эффективность и снижая затраты.

Практические примеры использования

Область применения агентов ИИ в реальном мире огромна. Многие компании начали внедрять агентов в свои существующие системы. Итак, вот несколько примеров использования агентов ИИ, которые могут быть очень полезными.

  • Личные агенты: Одно из наиболее важных применений агентов искусственного интеллекта – это персональный помощник вроде Джарвиса на электронных устройствах, который выполняет задачи на основе текстовых, голосовых или жестовых команд.
  • Агенты-инструкторы: Модели чатов могут справиться только с определенным количеством вещей. Но агенты искусственного интеллекта с инструментами могут делать гораздо больше. Агенты-инструкторы в различных областях, таких как образование, право и терапия, могут быть полезны для множества пользователей.
  • Пользовательский опыт программного обеспечения: Пользовательский опыт программного обеспечения может быть значительно улучшен благодаря эффективным агентам. Вместо ручного просмотра и нажатия кнопок для выполнения задач, агенты искусственного интеллекта автоматически будут выполнять их на основе голосовых команд, таких как заказ еды, такси, покупки и т. д.
  • Пространственные вычисления: Агенты искусственного интеллекта станут вестниками пространственных вычислений, где традиционные компьютеры плавно сливаются с реальным миром. Агенты могут обрабатывать данные в окружающей вас среде, извлекая полезную информацию и выполняя сложные задачи.

Заключение

Агенты искусственного интеллекта становятся все более популярными. В будущем они, без сомнения, будут интегрированы в большинство программных систем каким-то образом. Это все еще ранняя стадия развития агентов, подобная 90-м годам интернета. Вскоре появятся намного более усовершенствованные агенты, решающие новые проблемы. И библиотеки и инструменты, такие как Langchain, будут только развиваться.

Основные выводы

  • Autogen – это открытая платформа для создания многопользовательских агентов от компании Microsoft.
  • С помощью Autogen мы можем легко создавать многопользовательскую систему для решения сложных задач.
  • Оно предоставляет помощников-агентов и пользовательских прокси-агентов для выполнения задач, таких как генерация кода, генерация текста и т. д.
  • Хотя для базовых задач, таких как генерация текста, можно использовать GPT-3.5, более сложные задачи по программированию требуют более мощных моделей, таких как GPT-4.

Часто задаваемый вопрос

Изображения, показанные в этой статье, не являются собственностью Analytics Vidhya и используются по усмотрению автора.