Платформа Atomic Agents спроектирована как модульная, расширяемая и простая в использовании. Его главная цель — устранить избыточную сложность, ненужные абстракции и скрытые предположения, сохраняя при этом гибкую и мощную платформу для создания приложений ИИ с помощью атомарности. Платформа предоставляет набор инструментов и агентов, которые можно комбинировать для создания мощных приложений. Он построен на основе Instructor и использует возможности Pydantic для проверки и сериализации данных и схем.
Хотя существующие структуры для агентного ИИ ориентированы на создание автономных многоагентных систем, им часто не хватает контроля и предсказуемости, необходимых для реальных приложений. Предприятиям нужны системы искусственного интеллекта, которые производят последовательные и надежные результаты, соответствующие их бренду и целям.
Atomic Agents решает эту проблему, предоставляя:
Модульность: создавайте приложения искусственного интеллекта, комбинируя небольшие повторно используемые компоненты.
Предсказуемость. Определите четкие схемы ввода и вывода, чтобы обеспечить согласованное поведение.
Расширяемость: легко заменять компоненты или интегрировать новые, не нарушая работу всей системы.
Управление: индивидуальная точная настройка каждой части системы, от системных подсказок до интеграции инструментов.
В Atomic Agents агент состоит из нескольких ключевых компонентов:
Системная подсказка: определяет поведение и цель агента.
Схема ввода: определяет структуру и правила проверки входных данных агента.
Схема вывода: определяет структуру и правила проверки выходных данных агента.
Память: хранит историю разговоров или другие важные данные.
Поставщики контекста: внедряйте динамический контекст в системную подсказку агента во время выполнения.
Вот схема архитектуры высокого уровня:
Чтобы установить Atomic Agents, вы можете использовать pip:
pip установить атомарные агенты
Убедитесь, что вы также установили поставщика, которого хотите использовать. Например, чтобы использовать OpenAI и Groq, вы можете установить пакеты openai
и groq
:
pip установить openai groq
При этом также устанавливается CLI Atomic Assembler , который можно использовать для загрузки инструментов (а вскоре и агентов и конвейеров).
Для локальной разработки можно установить из репозитория:
git клон https://github.com/BrainBlend-AI/atomic-agents.gitcdatomic-agents установка поэзии
Atomic Agents использует структуру монорепозитория со следующими основными компонентами:
atomic-agents/
: основная библиотека атомных агентов.
atomic-assembler/
: инструмент CLI для управления компонентами Atomic Agents.
atomic-examples/
: примеры проектов, демонстрирующих использование атомных агентов.
atomic-forge/
: набор инструментов, которые можно использовать с Atomic Agents.
Полный список примеров можно найти в каталоге примеров.
Мы стремимся тщательно документировать каждый пример, но если что-то неясно, не стесняйтесь открыть проблему или запросить извлечение, чтобы улучшить документацию.
Вот небольшой фрагмент, демонстрирующий, как легко создать мощный агент с помощью Atomic Agents:
# Определите пользовательский класс схемы вывода CustomOutputSchema(BaseIOSchema):""" строка документации для пользовательской схемы вывода """chat_message: str = Field(...,description="Сообщение чата от агента.")suggested_questions: List[str ] = Field(...,description="Предлагаемые дополнительные вопросы.")# Настройте систему Promptsystem_prompt_generator = SystemPromptGenerator(background=["Этот помощник хорошо осведомлен, полезен и предлагает дополнительные вопросы."],steps =["Проанализируйте вводимые пользователем данные, чтобы понять контекст и намерения.","Сформулируйте релевантный и информативный ответ.","Создайте 3 предлагаемых дополнительных вопроса для пользователя."],output_instructions=["Предоставьте четкую и краткую информацию в ответ на запросы пользователей.», «Завершите каждый ответ тремя соответствующими вопросами, предлагаемыми пользователю.»] )# Инициализируйте агентагент = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # Замените фактической моделью клиента="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=AgentMemory(),output_schema=CustomOutputSchema) )# Используйте Agentresponse = Agent.run(user_input)print(f"Agent: {response.chat_message}")print("Предлагаемые вопросы:") для вопроса в ответе.suggested_questions:print(f"- {question}")
В этом фрагменте показано, как создать настраиваемый агент, который отвечает на запросы пользователей и предлагает дополнительные вопросы. Полные работоспособные примеры можно найти в следующих файлах в каталогеatomic atomic-examples/quickstart/quickstart/
:
Базовый чат-бот Минимальный пример чат-бота для начала.
Пользовательский чат-бот. Более продвинутый пример с настраиваемой системной подсказкой.
Пользовательский чат-бот со схемой. Расширенный пример с пользовательской схемой вывода.
Чат-бот с несколькими поставщиками Демонстрирует, как использовать различных поставщиков, таких как Ollama или Groq.
Помимо примеров быстрого старта, у нас есть более сложные примеры, демонстрирующие возможности атомарных агентов:
Агент веб-поиска: интеллектуальный агент, который выполняет поиск в Интернете и отвечает на вопросы на основе результатов.
YouTube Summarizer: агент, который извлекает и обобщает информацию из видеороликов YouTube.
Полный список примеров можно найти в каталоге примеров.
Эти примеры служат отличной отправной точкой для понимания и использования атомных агентов.
Atomic Agents позволяет вам расширять возможности ваших агентов с помощью динамического контекста с помощью провайдеров контекста . Поставщики контекста позволяют вам вводить дополнительную информацию в системное приглашение агента во время выполнения, что делает ваши агенты более гибкими и контекстно-зависимыми.
Чтобы использовать поставщика контекста, создайте класс, который наследуется от SystemPromptContextProviderBase
и реализует метод get_info()
, который возвращает строку контекста, которая будет добавлена в системное приглашение.
Вот простой пример:
изatomic_agents.lib.comComponents.system_prompt_generator import SystemPromptContextProviderBaseclass SearchResultsProvider(SystemPromptContextProviderBase):def __init__(self, title: str, search_results: List[str]):super().__init__(title=title)self.search_results = search_resultsdef get_info(self ) -> str:return "n".join(self.search_results)
Затем вы можете зарегистрировать своего поставщика контекста с помощью агента:
# Инициализируйте поставщика контекста с помощью динамических данных datasearch_results_provider = SearchResultsProvider(title="Результаты поиска",search_results=["Результат 1", "Результат 2", "Результат 3"] )# Зарегистрируйте поставщика контекста с помощью Agentagent.register_context_provider("search_results", search_results_provider)
Это позволяет вашему агенту включать результаты поиска (или любой другой контекст) в свою системную подсказку, улучшая свои ответы на основе самой последней информации.
Атомарные агенты позволяют легко объединять агенты и инструменты путем согласования их схем ввода и вывода. Такая конструкция позволяет легко заменять компоненты, обеспечивая модульность и возможность повторного использования в ваших приложениях искусственного интеллекта.
Предположим, у вас есть агент, генерирующий поисковые запросы, и вы хотите использовать эти запросы с различными поисковыми инструментами. Согласовав схему вывода агента со схемой ввода инструмента поиска, вы можете легко объединить их или переключаться между различными поставщиками поиска.
Вот как вы можете этого добиться:
import инструкторимпорт openaiиз pydantic import Fieldfromatomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfigfromatomic_agents.lib.comComponents.system_prompt_generator import SystemPromptGenerator# Импортируйте инструмент поиска, который вы хотите использовать, из web_search_agent.tools.searxng_search import SearxNGSearchTool# Определите входную схему для запроса класс агента QueryAgentInputSchema(BaseIOSchema):"""Входная схема для QueryAgent."""instruction: str = Field(...,description="Инструкция для создания поисковых запросов для.")num_queries: int = Field(..., description="Количество генерируемых запросов.")# Инициализировать запрос Agentquery_agent = BaseAgent(BaseAgentConfig(client=instructor.from_openai(openai.OpenAI()),model="gpt-4o-mini",system_prompt_generator=SystemPromptGenerator(background= ["Вы эксперт по созданию интеллектуальных запросов.","Ваша задача — сгенерировать указанное количество разнообразных и высокорелевантных запросов на основе заданной инструкции."],steps=["Получите инструкцию и количество запросов, которые нужно сгенерировать. .","Сгенерировать запросы в формате JSON."],output_instructions=["Убедитесь, что каждый запрос уникален и актуален.","Предоставьте запросы в ожидаемой схеме."], ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # Выравнивание выходной схемы) )
В этом примере:
Модульность : установив output_schema
query_agent
в соответствии со input_schema
SearxNGSearchTool
, вы можете напрямую использовать выходные данные агента в качестве входных данных для инструмента.
Возможность замены : если вы решите переключиться на другого поставщика поиска, вы можете импортировать другой инструмент поиска и соответствующим образом обновить output_schema
.
Например, чтобы переключиться на другую службу поиска:
# Импортируем другой инструмент поиска из web_search_agent.tools.another_search import AnotherSearchTool# Обновляем выходную схемуquery_agent.config.output_schema = AnotherSearchTool.input_schema
Этот шаблон проектирования упрощает процесс объединения агентов и инструментов, делая ваши приложения ИИ более адаптируемыми и простыми в обслуживании.
Чтобы запустить CLI, просто выполните следующую команду:
атомный
Или, если вы установили Atomic Agents с Poetry, например:
поэзия на атомном уровне
Или, если вы установили Atomic Agents с помощью uv:
атомный УФ-запуск
После запуска этой команды вам будет представлено меню, позволяющее загрузить инструменты.
У каждого инструмента есть свои:
Входная схема
Выходная схема
Пример использования
Зависимости
Инструкции по установке
Интерфейс командной строки atomic-assembler
дает вам полный контроль над вашими инструментами, избегая беспорядка ненужных зависимостей. Кроме того, это упрощает модификацию инструментов: каждый инструмент проходит собственный набор тестов на надежность.
Но вы не ограничены интерфейсом командной строки! При желании вы можете напрямую получить доступ к папкам инструментов и управлять ими вручную, просто копируя и вставляя по мере необходимости.
Атомные агенты зависят от пакета Instructor. Это означает, что во всех примерах, где используется OpenAI, также можно использовать любой другой API, поддерживаемый Instructor, например Ollama, Groq, Mistral, Cohere, Anthropic, Gemini и другие. Полный список см. в документации инструктора на странице GitHub.
Документацию по API можно найти здесь.
Atomic Forge — это набор инструментов, которые можно использовать с Atomic Agents для расширения его функциональности. Текущие инструменты включают в себя:
Калькулятор
ПоискxNG Поиск
Сборщик транскриптов YouTube
Дополнительную информацию об использовании и создании инструментов см. в README Atomic Forge.
Мы приветствуем вклады! Подробную информацию о том, как внести свой вклад в Atomic Agents, можно найти в Руководстве разработчика. Вот несколько быстрых шагов:
Форкнуть репозиторий
Создайте новую ветку ( git checkout -b feature-branch
)
Внесите изменения
Запуск тестов ( pytest --cov atomic_agents
)
Отформатируйте свой код ( black atomic_agents atomic_assembler
)
Свяжите свой код ( flake8 atomic_agents atomic_assembler
)
Зафиксируйте изменения ( git commit -m 'Add some feature'
)
Нажмите на ветку ( git push origin feature-branch
)
Открыть запрос на вытягивание
Полную настройку и рекомендации по разработке можно найти в Руководстве разработчика.
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.