Агенты 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 всякий раз, когда это необходимо для ответа на запрос пользователя.