<НА ГЛАВНУЮ

Создание надежного многоагентного пайплайна с CAMEL

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

Обзор

В этом учебном пособии мы строим продвинутый, сквозной исследовательский рабочий процесс с использованием фреймворка CAMEL. Мы проектируем скоординированное общество агентов—Планировщик, Исследователь, Писатель, Критик и Финализатор—которые совместно преобразуют высокоуровневую тему в отточенный, обоснованный фактами исследовательский бриф.

Интеграция OpenAI API

Мы надежно интегрируем OpenAI API, программно организуем взаимодействия агентов и добавляем легковесную постоянную память для сохранения знаний между запусками. Структурируя систему вокруг четких ролей, контрактов на основе JSON и итеративной доработки, мы показываем, как CAMEL можно использовать для создания надежных, контролируемых и масштабируемых многоагентных пайплайнов.

Настройка окружения

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

!pip -q install "camel-ai[all]" "python-dotenv" "rich"
 
import os
import json
import time
from typing import Dict, Any
from rich import print as rprint
 
 
def load_openai_key() -> str:
   key = None
   try:
       from google.colab import userdata
       key = userdata.get("OPENAI_API_KEY")
   except Exception:
       key = None
   if not key:
       import getpass
       key = getpass.getpass("Введите OPENAI_API_KEY (скрыто): ").strip()
   if not key:
       raise ValueError("OPENAI_API_KEY необходим.")
   return key
 
 
os.environ["OPENAI_API_KEY"] = load_openai_key()

Инициализация модели CAMEL

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

from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType
from camel.agents import ChatAgent
from camel.toolkits import SearchToolkit
 
MODEL_CFG = {"temperature": 0.2}
 
model = ModelFactory.create(
   model_platform=ModelPlatformType.OPENAI,
   model_type=ModelType.GPT_4O,
   model_config_dict=MODEL_CFG,
)

Реализация постоянной памяти

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

MEM_PATH = "camel_memory.json"
 
 
def mem_load() -> Dict[str, Any]:
   if not os.path.exists(MEM_PATH):
       return {"runs": []}
   with open(MEM_PATH, "r", encoding="utf-8") as f:
       return json.load(f)
 
def mem_save(mem: Dict[str, Any]) -> None:
   with open(MEM_PATH, "w", encoding="utf-8") as f:
       json.dump(mem, f, ensure_ascii=False, indent=2)
 
def mem_add_run(topic: str, artifacts: Dict[str, str]) -> None:
   mem = mem_load()
   mem["runs"].append({"ts": int(time.time()), "topic": topic, "artifacts": artifacts})
   mem_save(mem)

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

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

 
def make_agent(role: str, goal: str, extra_rules: str = "") -> ChatAgent:
   system = (
       f"Вы {role}.
"
       f"Цель: {goal}
"
       f"{extra_rules}
"
       "Выход должен быть четким, структурированным и непосредственно используемым следующим агентом."
   )
   return ChatAgent(model=model, system_message=system)

Оркестровка рабочего процесса

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

 
def run_workflow(topic: str) -> Dict[str, str]:
   rprint(mem_last_summaries(3))
 
   plan = step_json(
       planner,
       f"Тема: {topic}\nСоздать компактный план и исследовательские вопросы."
   )
   
   research = step_json(
       researcher,
       f"Исследовать тему с помощью веб-поиска.\n{json.dumps(plan)}"
   )
   
   draft = step_text(
       writer,
       f"Написать исследовательский бриф с использованием:\n{json.dumps(research)}"
   )
   
   critique = step_json(
       critic,
       f"Критиковать черновик:\n{draft}"
   )
   
   final = step_text(
       finalizer,
       f"Переписать с учетом критики:\n{json.dumps(critique)}\nЧерновик:\n{draft}"
   )
   
   artifacts = {
       "plan_json": json.dumps(plan, indent=2),
       "research_json": json.dumps(research, indent=2),
       "draft_md": draft,
       "critique_json": json.dumps(critique, indent=2),
       "final_md": final,
   }
   
   mem_add_run(topic, artifacts)
   return artifacts

Заключение

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

Полные коды

Посмотрите ПОЛНЫЕ КОДЫ здесь.

🇬🇧

Switch Language

Read this article in English

Switch to English