Itinai.com it development details code screens blured futuris c6679a58 04d0 490e 917c d214103a6d65 2

Создание многоагентной исследовательской системы с OpenAI Agents

Itinai.com it development details code screens blured futuris c6679a58 04d0 490e 917c d214103a6d65 2

Реализация кода для построения многопользовательской исследовательской системы с использованием агентов OpenAI

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

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

Первым делом необходимо подготовить рабочее окружение. Установите необходимые пакеты и настройте ключ API OpenAI:

!pip install openai-agents python-dotenv

Импортируйте необходимые библиотеки:

import asyncio
import json
from datetime import datetime
from agents import Agent, Runner, function_tool, SQLiteSession
import os

os.environ['OPENAI_API_KEY'] = 'Ваш_API_ключ'

Определение инструментов функций

Для агентов мы создадим три инструмента функций:

@function_tool
def web_search(query: str, max_results: int = 3) -> str:
   результаты = [
       f"Результат 1 для '{query}': Последние данные показывают значительные достижения...",
       f"Результат 2 для '{query}': Исследования указывают на новые подходы в этой области...",
       f"Результат 3 для '{query}': Экспертный анализ предполагает важные последствия..."
   ]
   return f"Результаты поиска для '{query}':\n" + "\n".join(результаты[:max_results])
@function_tool
def analyze_data(data: str, analysis_type: str = "summary") -> str:
   анализы = {
       "summary": f"Резюме: Данные содержат {len(data.split())} ключевых моментов с основными темами вокруг инноваций и эффективности.",
       "detailed": f"Подробный анализ: Разбор {len(data)} символов данных выявляет паттерны в методологии и выводах.",
       "trends": f"Трендовый анализ: Текущие данные указывают на рост с 3 основными точками поворота."
   }
   return анализы.get(analysis_type, "Анализ завершен: Стандартная оценка выполнена.")
@function_tool
def save_research(title: str, content: str, category: str = "general") -> str:
   timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
   запись_исследования = {
       "title": title,
       "content": content,
       "category": category,
       "timestamp": timestamp,
       "id": f"research_{len(content) % 1000}"
   }
   return f" Исследование сохранено: '{title}' в категории '{category}' в {timestamp}"

Создание специализированных агентов

Определим трех агентов OpenAI с четкими ролями:

research_agent = Agent(
   name="Специалист по исследованиям",
   instructions="""Вы эксперт-исследователь, который:
   - Проводит тщательные веб-поиски по любой теме
   - Критически и объективно анализирует информацию
   - Выявляет ключевые идеи и паттерны
   - Всегда использует инструменты для сбора и анализа данных перед ответом""",
   tools=[web_search, analyze_data]
)

analyst_agent = Agent(
   name="Аналитик данных",
   instructions="""Вы старший аналитик данных, который:
   - Берет выводы из исследований и проводит глубокий анализ
   - Выявляет тренды, паттерны и действующие идеи
   - Создает структурированные резюме и рекомендации
   - Использует инструменты анализа для улучшения понимания""",
   tools=[analyze_data, save_research]
)

coordinator_agent = Agent(
   name="Координатор исследований",
   instructions="""Вы координатор исследований, который:
   - Управляет многопроцессными исследовательскими проектами
   - Делегирует задачи соответствующим специалистам
   - Синтезирует выводы из нескольких источников
   - Принимает окончательные решения по направлению исследования
   - Передает задачи исследовательскому агенту для первоначального сбора данных
   - Передает аналитическому агенту для детального анализа""",
   handoffs=[research_agent, analyst_agent],
   tools=[save_research]
) 

Запуск продвинутого исследовательского рабочего процесса

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

async def run_advanced_research_workflow():
   session = SQLiteSession("research_session_001")
   research_topic = "искусственный интеллект в здравоохранении 2024"

   результат1 = await Runner.run(
       coordinator_agent,
       f"Мне необходимо полное исследование по теме '{research_topic}'. Пожалуйста, координируйте полный рабочий процесс исследования, включая сбор данных, анализ и генерацию финального отчета.",
       session=session
   )

   результат2 = await Runner.run(
       coordinator_agent,
       "На основе предыдущего исследования мне нужен детализированный трендовый анализ с акцентом на новые возможности и потенциальные проблемы. Сохраните финальный анализ для будущего использования.",
       session=session
   )

   результат3 = await Runner.run(
       analyst_agent,
       "Проведите детальный анализ рынка ИИ в здравоохранении, сосредоточив внимание на регуляторных проблемах и рыночных возможностях. Категоризируйте это как 'market_analysis'.",
       session=session
   )

   return результат1, результат2, результат3

Фокусированный анализ и быстрая исследовательская работа

Также мы покажем возможности фокусированного анализа:

async def run_focused_analysis():
   результат = await Runner.run(
       research_agent,
       "Исследуйте квантовые вычисления и проанализируйте ключевые достижения 2024 года.",
       max_turns=5
   )
   return результат

def quick_research_sync(topic: str):
   результат = Runner.run_sync(
       research_agent,
       f"Быстро исследуйте {topic} и предоставьте 3 ключевых вывода."
   )
   return результат

Основная функция для демонстрации возможностей

Основная функция orchestrates всей демонстрации:

async def main():
   await run_advanced_research_workflow()
   await run_focused_analysis()
   quick_research_sync("внедрение блокчейна в бизнесе")

if __name__ == "__main__":
   import nest_asyncio
   nest_asyncio.apply()
   asyncio.run(main())

Заключение

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

Рекомендуем ознакомиться с полным кодом и не стесняться исследовать дополнительные ресурсы.

Новости в сфере искусственного интеллекта