Агенты OpenAI#

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

Начало работы#

Чтобы начать использовать агентов OpenAI, выполните следующие шаги:

  • Установите пакет

    pip install openai-agents
    
  • Настройте ключ API OpenAI

    export OPENAI_API_KEY="<YOUR_KEY>"
    

Принцип работы#

SDK агентов имеет очень небольшой набор примитивов:

  • Agents, представляющие собой модели больших языков (LLM), оснащенные инструкциями и инструментами;

  • Handoffs, позволяющие агентам делегировать задачи другим агентам для выполнения конкретных задач;

  • Guardrails, обеспечивающие проверку входных данных для агентов.

Используемые совместно с языком программирования Python, эти строительные блоки позволяют легко создавать реальные приложения с взаимодействием инструментов и агентов при минимальном уровне обучения. Кроме того, SDK включает трассировку, которая помогает отлаживать, оценивать и настраивать рабочие процессы агентов.

Создание первых агентов#

Вот базовый пример трех агентов:

  • Тренировочный агент: действует как первая точка контакта. Он анализирует вопрос пользователя и решает, следует ли направить его специалисту-агенту.

  • Математический репетитор: специализированный агент, предназначенный для помощи по вопросам математики.

  • Репетитор истории: специализированный агент, специализирующийся на исторических темах.

from agents import Agent, Runner


math_tutor_agent = Agent(
    name="Math Tutor",
    handoff_description="Specialist agent for math questions",
    instructions="You provide help with math problems. Explain your reasoning at each step and include examples",
)

history_tutor_agent = Agent(
    name="History Tutor",
    handoff_description="Specialist agent for historical questions",
    instructions="You provide assistance with historical queries. Explain important events and context clearly.",
)

triage_agent = Agent(
    name="Triage Agent",
    instructions="You determine which agent to use based on the user homework question",
    handoffs=[history_tutor_agent, math_tutor_agent],
)

# Run the interaction
result = Runner.run_sync(triage_agent, "I want some help with WW1.")
print(result.final_output)

Интеграция с Vector DB#

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

Предположим, что уже создана коллекция Vector DB с использованием модели "text-embedding-3-small". Структура полезной нагрузки содержит поле text для хранения знаний.

import qdrant_client
from openai import OpenAI
from agents import Agent, function_tool

# Initialize clients
openai_client = OpenAI()
qdrant = qdrant_client.QdrantClient(host="localhost")

# Configuration
EMBEDDING_MODEL = "text-embedding-3-small"
COLLECTION_NAME = "help_center"
LIMIT = 5
SCORE_THRESHOLD = 0.7

@function_tool
def query_qdrant(query: str) -> str:
    """Retrieve semantically relevant content from Qdrant.

    Args:
        query: The query to search.
    """
    embedded_query = openai_client.embeddings.create(
        input=query,
        model=EMBEDDING_MODEL,
    ).data[0].embedding

    results = qdrant.query_points(
        collection_name=COLLECTION_NAME,
        query=embedded_query,
        limit=LIMIT,
        score_threshold=SCORE_THRESHOLD,
    ).points

    if results:
        return "\n".join([point.payload["text"] for point in results])
    else:
        return "No results found."

qdrant_agent = Agent(
    name="Qdrant searcher",
    handoff_description="Specialist agent for retrieving info from a Qdrant collection",
    instructions="You help find answers for user queries using Qdrant. Do not make up any info on your own.",
    tools=[query_qdrant],  
)

Теперь qdrant_agent может запрашивать коллекцию Vector DB всякий раз, когда это необходимо для ответа на запрос пользователя.

Дополнительная документация#