Прощай, LangChain! Atomic Agents в огне!

Новости ИИОбновлено 8 месяцев назад Круг обмена ИИ
7.2K 00

напоминатьLangChain, иCrewAIответить пениемAutoGenТакие фреймворки пользуются популярностью, предоставляя высокоуровневые абстракции для создания систем ИИ. Однако многие разработчики, в том числе и я, пришли к выводу, что эти инструменты приносят больше вреда, чем пользы, часто добавляя ненужную сложность и разочарование в процесс разработки.

входитьАтомные агенты- Модульная, оптимизированная структура, разработанная для устранения проблем, связанных с существующими инструментами разработки ИИ. Atomic Agents основана на надежных парадигмах программирования, таких как Модель "вход-процесс-выход" (IPO)ответить пениематомарностьконцепция, обеспечивающая новый подход, в котором приоритет отдается простоте, гибкости и контролю разработчика.

В этой статье мы подробно рассмотрим, почему был создан Atomic Agents, какую парадигму программирования он использует и чем он выделяется из толпы. Посмотрите на Atomic Agents с примерами кода и реальными примерами, и если вы когда-нибудь думали, что LangChain слишком сложен, то вот вам совместный взгляд на него!

Проблемы с существующими системами искусственного интеллекта

Когда я только начал экспериментировать сLangChainВ то время я был очень заинтересован в том, что это упростит разработку агентов ИИ. Однако на самом деле все не так просто.

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

Волшебные иллюзии в CrewAI и AutoGen

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

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

Функция избыточной ответственности: часто задаваемые вопросы

Постоянной проблемой этих систем является тенденция кФункция избыточной ответственности. Некоторые компании и инструменты утверждают, что предлагают решения, близкие к AGI (Artificial General Intelligence), но если вы долго работали в области искусственного интеллекта, вы поймете, что мы еще не достигли этого уровня. Шумиха часто приводит к нереалистичным ожиданиям, и когда эти инструменты неизбежно оказываются несостоятельными, разработчикам приходится сталкиваться с последствиями.

Нужен лучший способ

После борьбы с этими неудачами нам стало ясно, что нам нужна такая основа:Устранение ненужных сложностейи слои абстракции:

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

Это понимание привело к тому, чтоАтомные агентыРождение.

Введение в атомные агенты

再见 LangChain!Atomic Agents火了!

Логотип Atomic Agents

Атомные агентыэто фреймворк с открытым исходным кодом, разработанный для того, чтобы быть настолько легким, модульным и композитным, насколько это возможно. Он следуетМодель "Вход-Процессинг-Выход" (IPO)ответить пениематомарностьпринципы, гарантирующие, что каждый компонент является одноцелевым, многократно используемым и взаимозаменяемым.

Почему существуют атомные агенты?

Атомные агенты была создана для того, чтобы восполнить пробелы существующих рамок. Его цель -

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

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

Парадигма программирования, лежащая в основе атомарных агентов

Модель "вход-процесс-выход" (IPO)

В основе Atomic Agents лежитМодель "вход-процесс-выход" (IPO)Это базовая парадигма программирования, которая делит структуру программы на три отдельные фазы:

  1. Вход: Получение данных от пользователей или других систем.
  2. Процесс: Обработка или преобразование данных.
  3. Выход: Обработанные данные представлены в виде результатов.

Эта модель понятна и лаконична, она облегчает понимание и управление потоком данных в приложении.

На языке атомных агентов это означает

  • Схемы ввода: Используйте Pydantic для определения структуры входных данных и правил проверки.
  • Компоненты обработкиАгенты и инструменты, выполняющие операции над данными.
  • Схемы вывода: Убедитесь, что результаты структурированы и проверены перед возвращением.

Атомарность: функциональные строительные блоки

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

  • Единая ответственностьЭто облегчает понимание и обслуживание.
  • МногоразовыеЭто позволяет использовать компоненты в разных частях приложения или даже в разных проектах.
  • Можно комбинировать с другими атомарными компонентами для создания более сложных функций.

Сосредоточившись на атомарных компонентах, Atomic Agents обеспечивает модульную архитектуру для повышения гибкости и масштабируемости.

Как работают атомные агенты

ингредиент

В Atomic Agents агент искусственного интеллекта состоит из нескольких ключевых компонентов:

  • системное оповещение: Определите поведение и цели агента.
  • режим ввода: Указывает ожидаемую структуру входных данных.
  • режим вывода: Определяет структуру выходных данных.
  • память с произвольным доступом (RAM): Хранит историю диалога или информацию о состоянии.
  • контекстно-зависимое программирование: Вводит динамический контекст в системную подсказку во время выполнения.
  • артефакт: Внешние функции или интерфейсы приложений, доступные агенту.

Каждый компонент спроектирован как модульный и взаимозаменяемый и соответствует принципам разделения задач и единой ответственности.

Модульность и композитность

Модульность лежит в основе Atomic Agents. Проектируя компоненты как самодостаточные и ориентированные на выполнение одной задачи, разработчики могут

  • Смена инструментов или агентовбез ущерба для остальной системы.
  • Тонкая настройка отдельных компонентовнапример, системные подсказки или режимы, не создавая при этом непредвиденных побочных эффектов.
  • Настраивая режимы входа и выхода, можноАгенты и инструментыБесшовно соединенные вместе.

Такой модульный подход не только делает разработку более управляемой, но и повышает ремонтопригодность и масштабируемость приложений ИИ.

Обеспечение контекста: повышение гибкости

контекстно-зависимое программированиеПозволяет агентам включать динамические данные в системные подсказки и улучшать ответы на основе последней информации.

Пример:

from atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBase

class SearchResultsProvider(SystemPromptContextProviderBase):
def __init__(self, title: str, search_results: List[str]):
super().__init__(title=title)
self.search_results = search_results
def get_info(self) -> str:
return "n".join(self.search_results)
# 向代理注册上下文提供程序
agent.register_context_provider("search_results", search_results_provider)

Вводя данные в реальном времени в контекст агента, вы можете создавать более динамичные и отзывчивые приложения ИИ.

Цепочка деталей и агентов

Atomic Agents упрощает процесс объединения агентов и инструментов в цепочки, настраивая режимы ввода и вывода.

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

from web_search_agent.tools.searxng_search import SearxNGSearchTool

# Initialize the query agent
query_agent = BaseAgent(
BaseAgentConfig(
# ... other configurations ...
output_schema=SearxNGSearchTool.input_schema,  # Align output schema
)
)

Такая конструкция улучшает многоразовость и гибкость, позволяя легко заменять компоненты или расширять функциональность.

Причины, по которым Atomic Agents лучше других продуктов

Устранение ненужных сложностей

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

  • прозрачная архитектура: Вы можете полностью понять, как данные проходят через ваше приложение.
  • Более простая отладка: Выявление и устранение проблем упрощается благодаря снижению сложности.
  • Сокращение сроков обучения: Разработчики могут быстро приступить к работе без необходимости понимать сложные абстрактные концепции.

Создано разработчиками для разработчиков

Atomic Agents разработан с учетом реальных задач разработки. В нем используются проверенные парадигмы программирования, а приоритетом является опыт разработчиков.

  • Прочная основа программирования: Следуя модели IPO и атомарности, фреймворк поощряет лучшие практики.
  • Гибкость и контрольРазработчики могут свободно настраивать и расширять компоненты по своему усмотрению.
  • управляемый сообществом: Являясь проектом с открытым исходным кодом, он приглашает к участию и сотрудничеству сообщество разработчиков.

Отдельные и многократно используемые компоненты

Каждая часть Atomic Agents может работать независимо, что способствует многократному использованию и модульности.

  • Можно тестировать в изоляции: Компоненты можно тестировать по отдельности, чтобы убедиться в их надежности перед интеграцией.
  • Возможность многократного использования в разных проектахАтомарные компоненты могут использоваться в различных приложениях, что экономит время разработки.
  • Более простое обслуживание: Функция изоляции уменьшает влияние изменений и упрощает обновление.

Создание простого агента искусственного интеллекта

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

Шаг 1: Определите пользовательские режимы ввода и вывода

from pydantic import BaseModel, Field from typing import List from atomic_agents.agents.base_agent import BaseIOSchema

class CustomInputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The user's input message.")

class CustomOutputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The agent's response message.")
suggested_questions: List[str] = Field(..., description="Suggested follow-up questions.")

Шаг 2: Настройка системных оповещений

from atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator

system_prompt_generator = SystemPromptGenerator(
background=[
"You are a knowledgeable assistant that provides helpful information and suggests follow-up questions."
],
steps=[
"Analyze the user's input to understand the context and intent.",
"Provide a relevant and informative response.",
"Generate 3 suggested follow-up questions."
],
output_instructions=[
"Ensure clarity and conciseness in your response.",
"Conclude with 3 relevant suggested questions."
]
)

Шаг 3: Инициализация агента

from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig
import instructor
import openai

# Initialize the agent
agent = BaseAgent(
config=BaseAgentConfig(
client=instructor.from_openai(openai.OpenAI(api_key='YOUR_OPENAI_API_KEY')),
model="gpt-4",
system_prompt_generator=system_prompt_generator,
input_schema=CustomInputSchema,
output_schema=CustomOutputSchema
)
)

Шаг 4: Использование прокси-серверов

user_input = "Can you explain the benefits of using Atomic Agents?" input_data = CustomInputSchema(chat_message=user_input) response = agent.run(input_data)

print(f"Agent: {response.chat_message}")
print("Suggested questions:")
for question in response.suggested_questions:
print(f"- {question}")

Ожидаемый результат:

Agent: Atomic Agents simplifies AI development by providing modular, reusable components based on solid programming paradigms like the IPO model and atomicity.
Suggested questions:
- How does Atomic Agents compare to other AI frameworks?
- Can you provide an example of building an agent with Atomic Agents?
- What are the key features of Atomic Agents that enhance productivity?

Инструменты интеграции и поставщики контекста

Предположим, что агент должен выполнять веб-поиск по запросу пользователя.

Шаг 1: Скачайте и установите SearxNGSearchTool

пользоваться Atomic Assembler CLIМы можем загрузить инструмент поиска:

atomic

Выберите SearxNGSearchTool в меню и следуйте инструкциям по установке зависимостей.

Шаг 2: Интеграция поисковых инструментов

from web_search_agent.tools.searxng_search import SearxNGSearchTool, SearxNGSearchToolConfig

# 初始化搜索工具
search_tool = SearxNGSearchTool(config=SearxNGSearchToolConfig(base_url="http://localhost:8080"))

Шаг 3: Обновление агента для использования инструмента

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

from typing import Union

class OrchestratorOutputSchema(BaseModel):
tool: str = Field(..., description="The tool to use: 'search' or 'chat'")
parameters: Union[SearxNGSearchTool.input_schema, CustomInputSchema] = Field(..., description="Parameters for the selected tool.")
# 修改代理逻辑以输出 OrchestratorOutputSchema
# ...
# 执行选定的工具
if response.tool == "search":
search_results = search_tool.run(response.parameters)
# 处理检索结果
else:
# 使用之前的聊天代理
pass

Шаг 4: Используйте контекстный провайдер в результатах поиска

class SearchResultsProvider(SystemPromptContextProviderBase):
    def __init__(self, search_results):
        super().__init__(title="Search Results")
        self.search_results = search_results
def get_info(self) -> str:
return "n".join(self.search_results)
# After obtaining search results
context_provider = SearchResultsProvider(search_results)
agent.register_context_provider("search_results", context_provider)

Благодаря этой интеграции агенты могут предоставлять ответы на основе данных веб-поиска в режиме реального времени.

Atomic Assembler CLI: простые инструменты управления

Отличительной особенностью Атомных агентов являетсяAtomic Assembler CLIЭто инструмент командной строки, который упрощает управление инструментами и агентами.

Вдохновлен некоторыми современными библиотеками Tailwind, такими как shadcn, где вместо установки компонентов в качестве зависимостей, вы берете на себя право собственности на них в своем собственном исходном коде.

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

  1. Загрузите инструмент вручную или скопируйте/вставьте исходный код из репозитория Atomic Agents на GitHub и вставьте его в atomic-forge папка.
  2. Для загрузки инструмента мы будем использовать Atomic Assembler CLI.
再见 LangChain!Atomic Agents火了!

Атомные агенты

ключевая функция

  • Инструменты загрузки и управления: Легкое добавление новых инструментов в проекты без необходимости вручную копировать или устранять зависимости.
  • Избегайте беспорядка зависимостей: Устанавливайте только те инструменты, которые вам необходимы.
  • Простой инструмент для модификации: Каждый инструмент является независимым, с собственными тестами и документацией.
  • Инструменты прямого доступа: При желании можно вручную управлять инструментами, открыв папку Tools.
再见 LangChain!Atomic Agents火了!再见 LangChain!Atomic Agents火了!

написать в конце

Atomic Agents привносит столь необходимый сдвиг в сферу разработки ИИ, ставя во главу угла простоту, модульность и контроль разработчика. Применяя надежные парадигмы программирования, такие как модель "вход-процесс-выход" и атомарность, она решает многие проблемы, с которыми сталкиваются разработчики при использовании LangChain, CrewAI и AutoGen Разочарование, возникшее при использовании существующих рамок, таких как

С помощью Atomic Agents вы можете

  • Устранение ненужных сложностейкоторая специализируется на создании эффективных приложений искусственного интеллекта.
  • Общий контролькаждый компонент системы.
  • Легкая замена или модификация компонентовне прерывая работу всего приложения.
  • Использование модульности и возможности повторного использованияПовышение эффективности и ремонтопригодности.

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

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...