Реализация кода для построения многопользовательской исследовательской системы с использованием агентов 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: координированное многопользовательское сотрудничество, расширяемые пользовательские инструменты, постоянная память сессии и гибкие режимы выполнения. Пользователи могут использовать эти основы для создания новых инструментов и экспериментов с различными ролями агентов и стратегиями передачи задач.
Рекомендуем ознакомиться с полным кодом и не стесняться исследовать дополнительные ресурсы.















