Руководство по созданию мультиагентных систем на основе CrewAI

1. Введение

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

2. Основные концепции CrewAI в деталях

2.1 Агент

2.1.1 Определение и функции агента

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

2.1.2 Свойства прокси-сервера

  • Роль : Уточните функциональное положение агента в команде и определите типы задач, которые он лучше всего подходит выполнять. Например, агент в роли исследователя отлично справляется со сбором и анализом информации, а агент в роли писателя сосредоточен на создании контента.
  • Цель : Процесс принятия решений, которым руководствуется агент, - это индивидуальная цель, которую он стремится достичь. Например, целью агента-аналитика данных может быть извлечение действенных идей для поддержки бизнес-решений.
  • Предыстория : Повышение динамики взаимодействия и сотрудничества путем предоставления богатой контекстной информации о роли и целях агента. Например, в случае с аналитиком данных предыстория может звучать так: "Вы - аналитик данных в крупной компании. Вы отвечаете за анализ данных и предоставление информации для бизнеса. В настоящее время вы работаете над проектом по анализу эффективности наших маркетинговых кампаний".
  • LLM (по выбору) : Указывает языковую модель для запуска агента. Если не указано, то по умолчанию агент запускается с языка OPENAI_MODEL_NAME Укажите имя модели в переменной окружения, иначе по умолчанию будет установлено значение "gpt-4". Разработчики могут выбрать подходящую языковую модель для удовлетворения требований к обработке различных задач.
  • Инструменты (опционально) : Набор возможностей или наборов функций, доступных агенту, обычно это экземпляры пользовательских классов, совместимых со средой выполнения, с пустым списком значений по умолчанию. Эти инструменты могут расширять возможности агента, позволяя ему выполнять такие операции, как поиск в Интернете, анализ данных и т. д.
  • LLM для функции вызова (необязательно) : Указывает языковую модель, которая обрабатывает этот вызов инструмента агента, переопределяет командную функцию вызова LLM, если она передана, по умолчанию None. Гибко настраивая этот атрибут, разработчики могут более точно контролировать поведение агента при вызове инструментов.
  • Максимальное количество итераций (необязательно) : Максимальное количество итераций, которое может выполнить агент, прежде чем он будет вынужден дать наилучший ответ; значение по умолчанию - 25. Установка этого параметра помогает контролировать глубину и эффективность выполнения задачи.
  • Максимальное количество запросов (необязательно) : Максимальное количество запросов, которое прокси может выполнить в минуту, используется, чтобы избежать ограничения скорости, по умолчанию None. Разработчик может выполнить настройки в соответствии с реальной ситуацией, чтобы обеспечить стабильную работу системы.
  • Максимальное время выполнения (опционально) : Максимальная продолжительность времени, в течение которого агент может выполнять задание, значение по умолчанию Noneозначает, что максимальное время выполнения не ограничено. Этот атрибут можно использовать для контроля времени выполнения задачи, чтобы она не занимала ресурсы в течение длительного времени.
  • Подробный режим (опционально) : Установите его на True Настраиваемый внутренний регистратор предоставляет подробные журналы выполнения для отладки и мониторинга, значение по умолчанию False. Во время разработки и оптимизации включение детального режима помогает быстро обнаружить проблемы.
  • Разрешение на делегирование (необязательно) Агенты могут делегировать задачи или проблемы друг другу, гарантируя, что задачи будут выполняться наиболее подходящим агентом, со значением по умолчанию True. Эта функция способствует гибкой совместной работе в команде и повышает точность и эффективность обработки заданий.
  • Обратный вызов шага (необязательно) : Функции, вызываемые после каждого шага агента, которые могут быть использованы для регистрации операций или выполнения других действий, будут переопределять команду step_callback. Разработчики могут реализовать пользовательскую логику мониторинга и обработки с помощью этой функции обратного вызова.
  • Кэш (необязательно) : Указывает, использует ли прокси кэш для использования инструментов, со значением по умолчанию True. Механизм кэширования позволяет повысить эффективность выполнения задач и сократить количество дублирующихся вычислений.

2.1.3 Создание агентов

Агенты могут взаимодействовать друг с другом, используя встроенные в CrewAI механизмы делегирования и коммуникации. Это позволяет динамично управлять задачами и решать проблемы в командах.

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

from crewai import Agent
agent = Agent(
role="数据分析师",
goal="提取可操作的见解",
backstory="""您是一家大公司的数据分析师。
您负责分析数据并为业务提供见解。
您目前正在进行一个项目,分析我们营销活动的表现。""",
tools=[my_tool1, my_tool2],  # 可选,默认为空列表
llm=my_llm,  # 可选
function_calling_llm=my_llm,  # 可选
max_iter=15,  # 可选
max_rpm=None,  # 可选
verbose=True,  # 可选
allow_delegation=True,  # 可选
step_callback=my_intermediate_step_callback,  # 可选
cache=True  # 可选
)

2.2 Задачи

2.2.1 Постановка задачи и сотрудничество

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

2.2.2 Атрибуты задач

  • Описание : Четкое и краткое изложение содержания задачи, чтобы агент точно знал, что ему нужно сделать. Например, "Найти и обобщить последние и наиболее актуальные новости об искусственном интеллекте".
  • Агент Агенты, ответственные за выполнение задач, могут быть указаны напрямую или назначены процессами Crew на основе ролей, доступности и других факторов. Это гарантирует, что задачи найдут правильного исполнителя.
  • Ожидаемый результат : Подробное описание задачи после ее выполнения, чтобы агент четко понимал цели и желаемые результаты задачи. Например, "Резюме в виде маркированного списка 5 наиболее важных новостей ИИ".
  • Инструменты (опционально) : Функции или возможности, используемые агентами для выполнения задач, могут повысить эффективность выполнения задач и взаимодействия агентов. Выбирая правильные инструменты, агенты могут выполнять задачи более эффективно.
  • Асинхронное выполнение (необязательно) Задачи будут выполняться асинхронно, если они установлены, позволяя другим задачам продолжать продвижение, не дожидаясь завершения, для задач, которые занимают много времени или мало влияют на выполнение последующих задач.
  • Контекст (необязательно) : Укажите задачи, результаты которых будут использоваться в качестве контекста данной задачи, уточните зависимости между задачами и обеспечьте эффективную доставку и использование результатов задач.
  • Конфигурация (опционально) : Дополнительные сведения о конфигурации агента, используемого для выполнения задачи, позволяют гибко настроить выполнение задачи.
  • Вывод JSON (необязательно) : Для вывода JSON-объектов требуется OpenAI API, и можно задать только один формат вывода. Это свойство облегчает взаимодействие с данными и интеграцию с другими системами.
  • Выход Pydantic (опционально) : Для вывода объектов модели Pydantic также требуется OpenAI API, и можно установить только один формат вывода. Разработчики могут выбрать подходящий формат вывода в соответствии с их реальными потребностями.
  • Выходной файл (необязательно) : Сохраняет вывод задачи в файл, если сравнивать с 输出 JSON возможно 输出 Pydantic При совместном использовании можно указать способ сохранения результатов. Это облегчает сохранение данных и последующий анализ.
  • Обратный вызов (необязательно) : Вызываемая функция Python, которая выполняется после завершения задачи и может использоваться для запуска действий или уведомлений на основе результатов задачи, например, для отправки электронного письма.
  • Ручной ввод (опция) : Указывает, требуется ли для выполнения задания ручная обратная связь, что полезно для заданий, требующих ручного контроля для обеспечения точности и надежности результатов выполнения задания.

2.2.3 Использование инструментов для создания задач

Разобравшись с основными свойствами задачи, мы рассмотрим, как создать задачу с помощью этого инструмента. Ниже приведен пример:

import os
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key"  # serper.dev API key
from crewai import Agent, Task, Crew
from crewai_tools import SerperDevTool
research_agent = Agent(
role="研究员",
goal="查找并总结最新的人工智能新闻",
backstory="""您是一家大公司的研究员。
您负责分析数据并为业务提供见解。""",
verbose=True
)
search_tool = SerperDevTool()
task = Task(
description="查找并总结最新的人工智能新闻",
expected_output="对前 5 条最重要的人工智能新闻进行项目符号列表总结",
agent=research_agent,
tools=[search_tool]
)
crew = Crew(
agents=[research_agent],
tasks=[task],
verbose=2
)
result = crew.kickoff()
print(result)

2.2.4 Создание задач

Создание задачи включает в себя определение ее области действия, ответственного агента и любых дополнительных атрибутов для гибкости:

from crewai import Task
task = Task(
description="查找并总结有关人工智能的最新和最相关新闻",
agent=sales_agent
)

Задания можно назначать напрямую, указывая 代理Или пусть 分层 Процесс CrewAI определяется ролью, доступностью и т.д.

2.2.5 Зависимости задач

В CrewAI вывод одной задачи автоматически передается следующей, что может быть полезно, когда есть задача, которая зависит от вывода другой задачи, но не выполняется сразу после нее. Это делается с помощью функции задачи 上下文 Завершение атрибута:

research_ai_task = Task(
description="查找并总结最新的人工智能新闻",
expected_output="对前 5 条最重要的人工智能新闻进行项目符号列表总结",
async_execution=True,
agent=research_agent,
tools=[search_tool]
)
research_ops_task = Task(
description="查找并总结最新的人工智能运营新闻",
expected_output="对前 5 条最重要的人工智能运营新闻进行项目符号列表总结",
async_execution=True,
agent=research_agent,
tools=[search_tool]
)
write_blog_task = Task(
description="撰写一篇关于人工智能重要性及其最新新闻的完整博客文章",
expected_output="4 段长的完整博客文章",
agent=writer_agent,
context=[research_ai_task, research_ops_task]
)

2.2.6 Асинхронное выполнение

Задачи выполняются асинхронно, то есть Crew не ждет их завершения, прежде чем перейти к следующей задаче. Это полезно для задач, которые требуют много времени для завершения или не являются критичными для выполнения следующей задачи. Вы можете использовать 上下文 атрибут определен в будущей задаче, она должна дождаться завершения вывода асинхронной задачи.

list_ideas = Task(
description="探索有关人工智能文章的 5 个有趣想法。",
expected_output="一份包含 5 个文章想法的项目符号列表。",
agent=researcher,
async_execution=True  # 将以异步方式执行
)
list_important_history = Task(
description="研究人工智能的历史,并告诉我 5 个最重要的事件。",
expected_output="包含 5 个重要事件的项目符号列表。",
agent=researcher,
async_execution=True  # 将以异步方式执行
)
write_article = Task(
description="撰写一篇关于人工智能、其历史和有趣想法的文章。",
expected_output="一篇关于人工智能的 4 段文章。",
agent=writer,
context=[list_ideas, list_important_history]  # 将等待两个任务的输出完成
)

2.2.7 Механизмы обратного вызова

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

def callback_function(output: TaskOutput):
# 任务完成后执行某些操作
# 例如:向经理发送电子邮件
print(f"""
任务完成!
任务:{output.description}
输出:{output.raw_output}
""")
research_task = Task(
description="查找并总结最新的人工智能新闻",
expected_output="对前 5 条最重要的人工智能新闻进行项目符号列表总结",
agent=research_agent,
tools=[search_tool],
callback=callback_function
)

2.2.8 Доступ к выводам, относящимся к конкретной задаче

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

task1 = Task(
description="查找并总结最新的人工智能新闻",
expected_output="对前 5 条最重要的人工智能新闻进行项目符号列表总结",
agent=research_agent,
tools=[search_tool]
)
crew = Crew(
agents=[research_agent],
tasks=[task1, task2, task3],
verbose=2
)
result = crew.kickoff()
print(f"""
任务完成!
任务:{task1.output.description}
输出:{task1.output.raw_output}
""")

2.2.9 Механизмы переопределения инструментов

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

2.2.10 Механизмы обработки ошибок и валидации

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

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

Эти проверки помогают поддерживать последовательность и надежность выполнения задач в рамках CrewAI.

2.3 Инструменты

2.3.1 Роль и типы инструментов

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

2.3.2 Ключевые особенности инструмента

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

2.3.3 Использование инструмента CrewAI

Чтобы расширить возможности агента с помощью инструмента CrewAI, необходимо сначала установить дополнительный набор инструментов:

pip install 'crewai[tools]'

Ниже приведен пример использования:

import os
from crewai import Agent, Task, Crew
# 导入 CrewAI 工具
from crewai_tools import (
DirectoryReadTool,
FileReadTool,
SerperDevTool,
WebsiteSearchTool
)
# 设置 API 密钥
os.environ["SERPER_API_KEY"] = "Your Key"  # serper.dev API 密钥
os.environ["OPENAI_API_KEY"] = "Your Key"
# 实例化工具
docs_tool = DirectoryReadTool(directory='./blog-posts')
file_tool = FileReadTool()
search_tool = SerperDevTool()
web_rag_tool = WebsiteSearchTool()
# 创建代理
researcher = Agent(
role="市场研究分析师",
goal="提供关于人工智能行业最新市场分析",
backstory="一位对市场趋势敏锐的专家分析师。",
tools=[search_tool, web_rag_tool],
verbose=True
)
writer = Agent(
role="内容撰写人员",
goal="撰写有关人工智能行业的引人入胜的博客文章",
backstory="一位对技术充满激情的熟练撰稿人。",
tools=[docs_tool, file_tool],
verbose=True
)
# 定义任务
research = Task(
description="研究人工智能行业的最新趋势并提供摘要。",
expected_output="关于人工智能行业前三个热门发展的摘要,并对其重要性提供独特视角。",
agent=researcher
)
write = Task(
description="根据研究分析师的摘要撰写一篇引人入胜的博客文章。从目录中最新的博客文章中汲取灵感。",
expected_output="一篇以 markdown 格式排版的四段博客文章,内容引人入胜、信息丰富且易懂,避免使用复杂术语。",
agent=writer,
output_file='blog-posts/new_post.md'  # 最终的博客文章将保存在此处
)
# 组建团队
crew = Crew(
agents=[researcher, writer],
tasks=[research, write],
verbose=2
)
# 执行任务
crew.kickoff()

2.3.4 Создание собственных инструментов

Сначала необходимо установить набор инструментов:

pip install 'crewai[tools]'
  • подклассификация BaseTool : по наследству BaseTool класс, разработчики могут создавать пользовательские инструменты. Вам необходимо определить имя и описание инструмента и реализовать функцию _run метод для определения конкретной функциональной логики инструмента. Пример:
from crewai_tools import BaseTool
class MyCustomTool(BaseTool):
name: str = "我的工具名称"
description: str = "清晰描述此工具用于什么,您的代理将需要这些信息来使用它。"
def _run(self, argument: str) -> str:
# 实现在这里
return "自定义工具的结果"
  • использовать tool декоратор : Использование tool Декораторы позволяют более чисто создавать пользовательские инструменты. Просто определите функцию, добавьте @tool декоратор, и просто укажите название и описание инструмента. Пример:
from crewai_tools import tool
@tool("我的工具名称")
def my_tool(question: str) -> str:
"""清晰描述此工具用于什么,您的代理将需要这些信息来使用它。"""
# 函数逻辑在这里
return "您的自定义工具的结果"
  • Пользовательские механизмы кэширования : Инструмент имеет возможность реализовать cache_function для точной настройки поведения кэша. Определение времени кэширования результатов на основе определенных условий обеспечивает тонкий контроль над логикой кэширования. Пример:
from crewai_tools import tool
@tool
def multiplication_tool(first_number: int, second_number: int) -> str:
"""当您需要将两个数字相乘时有用。"""
return first_number * second_number
def cache_func(args, result):
# 在这种情况下,仅在结果是 2 的倍数时才缓存结果
cache = result % 2 == 0
return cache
multiplication_tool.cache_function = cache_func

2.3.5 Использование инструмента LangChain

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

from crewai import Agent
from langchain.agents import Tool
from langchain.utilities import GoogleSerperAPIWrapper
# 设置 API 密钥
os.environ["SERPER_API_KEY"] = "Your Key"
search = GoogleSerperAPIWrapper()
# 创建并将搜索工具分配给代理
serper_tool = Tool(
name="中级答案",
func=search.run,
description="用于基于搜索的查询的工具"
)
agent = Agent(
role="研究分析师",
goal="提供最新的市场分析",
backstory="一位对市场趋势敏锐的专家分析师。",
tools=[serper_tool]
)

2.4 Процесс

2.4.1 Реализация процесса

  • Последовательный Задачи выполняются последовательно в заранее определенном порядке, причем результаты одной задачи служат контекстом для следующей, обеспечивая упорядоченное и последовательное выполнение задач.
  • Иерархический : Организуйте задачи по уровням управления, задавая модель языка управления (manager_llm), чтобы запустить процесс. Агент-менеджер отвечает за контроль выполнения задач, включая планирование, делегирование и проверку задач, которые назначаются на основе возможностей агента, а не заранее.
  • Процесс консенсуса (планируется) : Цель - обеспечить совместное принятие решений между агентами о выполнении задач и внедрить демократический подход к управлению задачами, который пока не реализован в кодовой базе, но отражает стремление CrewAI к постоянному развитию и инновациям.

2.4.2 Роль процесса в командной работе

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

2.4.3 Назначение процессов менеджеру

При создании менеджера разработчик может указать тип процесса для установки политики выполнения. Для иерархических процессов необходимо определить для агента менеджера manager_llm. Пример:

from crewai import Crew, Process
from langchain_openai import ChatOpenAI
# 顺序流程
crew = Crew(
agents=my_agents,
tasks=my_tasks,
process=Process.sequential
)
# 分级流程,确保提供 manager_llm
crew = Crew(
agents=my_agents,
tasks=my_tasks,
process=Process.hierarchical,
manager_llm=ChatOpenAI(model="gpt-4")
)

2.4.4 Дополнительные характеристики задачи

  • Асинхронное выполнение (Асинхронное выполнение) : Позволяет выполнять задачи асинхронно, обеспечивая параллельную обработку и повышая общую производительность команды. Разработчики могут гибко выбирать синхронные или асинхронные методы выполнения в зависимости от характеристик задачи.
  • Обзор человеческого вклада (HIR) : Обеспечивает опциональную ручную проверку результатов выполнения заданий для обеспечения качества и точности перед окончательным оформлением результатов выполнения заданий, вводя дополнительный уровень надзора для обеспечения надежности выполнения заданий.
  • Настройка вывода : Задача поддерживает различные форматы вывода, такие как JSON (output_json), модель Пидантика (output_pydantic) и вывод файлов (output_file) для удовлетворения различных потребностей и облегчения обработки и использования данных.

2.5 Экипажи

2.5.1 Атрибуты команды

  • Задачи : Список задач, поставленных перед командой, с указанием того, что команда должна выполнить.
  • Агенты : Список агентов, входящих в команду, определяющий состав членов команды, каждый из которых имеет свои уникальные роли и возможности.
  • Процесс (необязательно) : Тип процесса, которому следует команда, например, последовательный или иерархический процесс, определяет порядок и способ выполнения задач.
  • Уровень детализации (необязательно) : Уровень детализации протоколирования во время выполнения, позволяющий разработчикам легко получать достаточную информацию для отладки и мониторинга.
  • Менеджер LLM (факультативно, требуется для многоуровневого процесса) : Языковая модель, используемая агентами-менеджерами в иерархическом процессе для управления процессом выполнения задач.
  • Вызов функции LLM (необязательно) : При передаче команда будет использовать этот LLM для создания вызовов функций в инструменте для всех агентов, которые могут быть гибко настроены разработчиком по мере необходимости.
  • Конфигурация (опционально) : Дополнительные параметры конфигурации для команд Json возможно Dict[str, Any] Для дальнейшей настройки поведения команды предусмотрен формат.
  • Максимальное число оборотов (опция) : Максимальное количество запросов, которое может быть выполнено в минуту во время выполнения команды, чтобы избежать ограничения скорости, может переопределяться отдельными агентами. max_rpm Установка.
  • Язык (необязательно) : Язык, используемый командой, который по умолчанию является английским, может быть изменен в соответствии с реальными потребностями.
  • Языковые файлы (опционально) : Пути к языковым файлам для команд, чтобы облегчить поддержку нескольких языков.
  • Память (опционально) : Используется для хранения исполнительной памяти (краткосрочной, долгосрочной и физической), чтобы повысить способность команды к выполнению и обучению.
  • Кэш (необязательно) : Укажите, следует ли использовать кэширование для хранения результатов выполнения инструмента, чтобы повысить эффективность процесса.
  • Эмбеддер (опционально) : Конфигурация эмбеддера, используемая командой, в основном для функций in-memory, влияет на то, как данные внедряются и извлекаются.
  • Полный выход (опционально) : Решите, возвращает ли команда полный результат, содержащий все результаты задачи, или только конечный результат, чтобы удовлетворить различные потребности в получении результатов.
  • Обратный вызов шага (необязательно) : Функция, вызываемая после каждого шага каждого агента для регистрации операций или выполнения других операций, которая не переопределяет специфические для агента действия. step_callback.
  • Обратные вызовы задач (необязательно) : Функция, вызываемая после завершения каждой задачи для контроля или выполнения других действий после выполнения задачи.
  • Общая команда (по желанию) : Вся ли информация о команде и ее реализации передается команде CrewAI для улучшения библиотеки и обучения моделей.
  • Выходной файл журнала (необязательно) : Создавать или нет файл, содержащий полный вывод и выполнение команды; вы можете указать путь и имя файла.

2.5.2 Пример создания команды

Ниже приведен пример создания команды, показывающий, как можно объединить агентов с взаимодополняющими ролями и инструментами, распределить задачи и выбрать процессы:

from crewai import Crew, Agent, Task, Process
from langchain_community.tools import DuckDuckGoSearchRun
# 定义具有特定角色和工具的代理
researcher = Agent(
role="高级研究分析师",
goal="发现创新的人工智能技术",
tools=[DuckDuckGoSearchRun()]
)
writer = Agent(
role="内容撰稿人",
goal="撰写有关人工智能发现的引人入胜的文章",
verbose=True
)
# 为代理创建任务
research_task = Task(
description="识别突破性人工智能技术",
agent=researcher
)
write_article_task = Task(
description="撰写关于最新人工智能技术的文章",
agent=writer
)
# 使用顺序流程组装团队
my_crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_article_task],
process=Process.sequential,
full_output=True,
verbose=True,
)

2.5.3 Процесс выполнения команды

  • Последовательный Задачи выполняются последовательно, а работа протекает линейно, что просто и интуитивно понятно, и подходит для сценариев, в которых существует четкая последовательность между задачами.
  • Иерархический : Агент-менеджер координирует работу команды, делегирует задачи и проверяет результаты, прежде чем приступить к работе. Этот процесс требует manager_llmОн подходит для управления и распределения сложных задач, обеспечивая эффективное выполнение заданий и контроль качества.
  • Команда запуска : Использование kickoff() метод инициирует командный рабочий процесс, запускает выполнение задачи в соответствии с заданным процессом и получает результаты выполнения задачи. Пример:
# 启动团队的任务执行
result = my_crew.kickoff()
print(result)

2.6 Память

2.6.1 Компоненты системы памяти

  • Краткосрочная память (кратковременная память) Временное хранение недавних взаимодействий и результатов позволяет агенту быстро вспоминать и использовать информацию, тесно связанную с текущим контекстом, тем самым поддерживая согласованность диалога или последовательности задач и принимая более контекстуально релевантные решения и ответы.
  • Долгосрочная память (долговременная память) Это хранилище знаний, в котором хранятся ценные сведения и опыт прошлых действий. С течением времени агенты могут учиться на этом опыте и постепенно создавать и совершенствовать свою систему знаний, что, в свою очередь, улучшает их будущие возможности принятия решений и решения проблем, позволяя лучше справляться со сложными и меняющимися сценариями задач.
  • Память сущностей : фокусируется на сборе и организации информации о различных типах сущностей, встречающихся в процессе выполнения задачи, включая людей, места, концепции и так далее. Это помогает агенту глубже понять внутренние связи между сложной информацией, более эффективно обрабатывать и интегрировать соответствующие знания благодаря точному отображению отношений между сущностями, а также обеспечить более полную и глубокую перспективу для решения проблем.
  • Контекстная память : Работа по поддержанию контекстной информации во время взаимодействия, гарантирующая, что агент сможет последовательно отвечать на вопросы, обеспечивая согласованность и релевантность в ходе выполнения серии задач или последовательных диалогов. Даже при длительном взаимодействии можно точно понять контекст задачи и намерения, избегая разрыва связи или неправильной интерпретации информации и обеспечивая тем самым более точный и обоснованный результат.

2.6.2 Как системы памяти расширяют возможности агентов

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

2.6.3 Реализация памяти в командах

При настройке команды разработчики могут включать и настраивать каждый компонент памяти в зависимости от целей команды и характера задач. По умолчанию система памяти отключена, для этого необходимо задать конфигурацию команды в поле memory=TrueВы можете активировать функцию воспоминаний, чтобы наделить свою команду мощными возможностями памяти. По умолчанию Memory использует вкрапления OpenAI, но разработчики также могут настраивать embedder Установите параметр на другую модель, например Google AI, Azure OpenAI, GPT4ALL, Vertex AI или Cohere и т.д. для удовлетворения потребностей различных сценариев. Пример:

from crewai import Crew, Agent, Task, Process
# 使用具有记忆功能的团队,采用默认的 OpenAI Embeddings
my_crew = Crew(
agents=[...],
tasks=[...],
process=Process.sequential,
memory=True,
verbose=True
)
# 使用具有记忆功能的团队,切换为 Google AI 嵌入
my_crew = Crew(
agents=[...],
tasks=[...],
process=Process.sequential,
memory=True,
verbose=True,
embedder={
"provider": "google",
"config": {
"model": "models/embedding-001",
"task_type": "retrieval_document",
"title": "Embeddings for Embedchain"
}
}
)

2.6.4 Преимущества использования системы памяти CrewAI

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

3. Практические шаги по созданию многоагентной системы на основе CrewAI

3.1 Подготовка

3.1.1 Конфигурация среды

Убедитесь, что ваша система соответствует требованиям к установке CrewAI и сопутствующих зависимостей. В зависимости от операционной системы вам может потребоваться установить определенные пакеты или настроить переменные окружения. Например, в некоторых системах может потребоваться установка среды Python, соответствующих библиотек и настройка ключей API.

3.1.2 Установка CrewAI и Ollama (опционально)

Следуйте инструкциям в официальной документации, чтобы установить CrewAI и Ollama (если вам нужна Ollama) по очереди. В процессе установки вам может потребоваться обратить внимание на совместимость версий, зависимости и другие моменты, чтобы обеспечить успешное завершение установки. Например, используйте команду pip для установки CrewAI и его инструментария:pip install crewai[tools]и в соответствии с Оллама Руководство по установке для

3.1.3 Настройка модели

В файле конфигурации CrewAI установите для языковой модели (LLM) желаемое значение, например Llama3 и т. д. Этот шаг гарантирует, что агент сможет использовать соответствующую языковую модель для рассуждений и принятия решений при выполнении задач.

3.2 Создание агентов

3.2.1 Определение ролей и целей агентов

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

3.2.2 Настройка свойств агента

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

3.2.3 Разработка предыстории агента (не обязательно, но рекомендуется)

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

3.3 Определение задач

3.3.1 Уточнение описаний задач

Дайте четкое и ясное описание каждой задачи, чтобы агенты четко понимали конкретные требования к ней. Например, "Проанализировать отзывы пользователей о [название продукта] в социальных сетях за последний месяц и извлечь ключевые комментарии и предложения", "Спрогнозировать тенденции в [название отрасли] на ближайшие три месяца на основе рыночных данных" и т. д.

3.3.2 Назначение агентов задач

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

3.3.3 Настройка свойств задачи

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

3.4 Инструменты интеграции

3.4.1 Выбор правильного инструмента

Выберите подходящий инструмент для выполнения задачи из богатой библиотеки инструментов, предоставляемых CrewAI, например, для поиска в Интернете WebsiteSearchToolСайт FileReadToolНиже приведены примеры анализа данных, использованных в CSVSearchTool и т. д. При необходимости можно также создавать пользовательские инструменты, отвечающие уникальным требованиям конкретных задач.

3.4.2 Интеграция инструментов с агентами и задачами

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

3.5 Формирование команды

3.5.1 Комбинированные агенты

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

3.5.2 Определение процессов в команде

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

3.5.3 Настройка свойств команды

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

3.6 Выполнение задач и мониторинг

3.6.1 Инициируйте постановку задач команде

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

3.6.2 Контроль выполнения заданий

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

3.6.3 Обработка результатов выполнения заданий

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

4. тематическое исследование: применение CrewAI в реальном проекте

4.1 Интеллектуальная система обслуживания клиентов

4.1.1 Архитектура системы и роли агентов

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

4.1.2 Поток задач и совместная работа

Когда пользователь задает вопрос, агент приема вопросов пользователя записывает вопрос и передает его агенту классификации вопросов. Агент классификации проблем классифицирует проблему на различные типы, такие как общие проблемы, технические проблемы, проблемы после продажи и т. д. с помощью анализа ключевых слов, семантического понимания и других методов. Затем, основываясь на результатах классификации, проблема назначается соответствующему агенту информационного запроса. Агент информационного запроса ищет соответствующую информацию в базе знаний, базе данных или внешних ресурсах в соответствии с типом проблемы. Например, для обычных проблем ответы извлекаются непосредственно из базы знаний; для технических проблем может потребоваться запрос технической документации или взаимодействие с техническими экспертными системами. На основе запрошенной информации агент генерации ответов использует методы генерации на естественном языке для преобразования информации в четкие и понятные ответы. Наконец, агент проверки ответов выполняет грамматическую проверку, логический анализ и оценку вежливости ответа, а при необходимости - его дальнейшую оптимизацию и модификацию. На протяжении всего процесса агенты эффективно взаимодействуют друг с другом благодаря механизму связи CrewAI и возможностям планирования задач, чтобы предоставить пользователям быстрые и точные ответы.

4.2 Интеллектуальный помощник по созданию контента

4.2.1 Функции агента и разделение труда

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

4.2.2 Творческие процессы и синергетические механизмы

Когда пользователь подает запрос на создание (например, написать статью на [определенную тему]), агент планирования темы сначала анализирует и планирует тему, определяя общие рамки и ключевое содержание статьи. Затем агент сбора материалов ищет в Интернете соответствующие статьи, исследовательские отчеты, кейсы и другие материалы по теме, организует их и передает агенту создания контента. Агент генерации контента создает первый вариант статьи на основе тематического фреймворка и собранных материалов, используя модели глубокого обучения. Например, он может генерировать содержание абзацев и организовывать структуру статьи на основе идей и данных, содержащихся в материалах. И, наконец, агент для корректировки контента выполняет комплексную доработку первого черновика, проверяя грамматические ошибки, оптимизируя выбор лексики и корректируя структуру предложений, чтобы сделать статью более беглой, гладкой и привлекательной. На протяжении всего процесса создания статьи агенты обмениваются информацией и отзывами в режиме реального времени с помощью механизмов коммуникации и сотрудничества CrewAI, чтобы обеспечить бесперебойный ход работы.

4.3 Интеллектуальные системы принятия инвестиционных решений

4.3.1 Состав системы и обязанности агентов

Интеллектуальная система принятия инвестиционных решений состоит из агента сбора рыночных данных, агента анализа данных, агента оценки рисков, агента рекомендации инвестиционной стратегии и агента оптимизации портфеля. Агент сбора рыночных данных отвечает за сбор рыночных данных в режиме реального времени из различных источников финансовых данных (например, бирж, сайтов финансовых новостей, финансовых баз данных и т. д.), включая цены акций, оборот, макроэкономические показатели и т. д.; агент анализа данных очищает, систематизирует и анализирует собранные данные для извлечения ценной информации, такой как тенденции рынка, динамика отрасли, финансовые условия компании и т. д.; агент оценки рисков оценивает уровень риска объекта инвестиций с помощью модели оценки рисков на основе результатов анализа данных; агент рекомендации инвестиционной стратегии оценивает уровень риска объекта инвестиций с помощью модели оценки рисков; агент рекомендации инвестиционной стратегии оценивает уровень риска объекта инвестиций на основе результатов анализа данных. На основе результатов анализа данных агент оценки рисков применяет модель оценки рисков для оценки уровня риска инвестиционных целей; агент рекомендации инвестиционной стратегии рекомендует подходящие инвестиционные стратегии, такие как долгосрочные инвестиции, краткосрочные спекуляции, диверсифицированные инвестиции и т. д., на основе рыночных условий и предпочтений инвесторов в отношении риска; агент оптимизации портфеля оптимизирует инвестиционный портфель на основе рекомендуемых инвестиционных стратегий и определяет оптимальный коэффициент распределения активов.

4.3.2 Процессы принятия решений и способы сотрудничества

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

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

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

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

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