Введение в MLflow и его возможности
В современном мире автоматизации бизнеса с помощью искусственного интеллекта, управление и отслеживание взаимодействий агентов становится критически важным. MLflow — это открытая платформа, которая помогает в управлении и отслеживании экспериментов машинного обучения. Интеграция MLflow с OpenAI Agents SDK позволяет автоматически фиксировать все взаимодействия агентов, что значительно упрощает процесс отладки и анализа производительности.
Зачем нужно отслеживание ответов агентов OpenAI?
Когда вы работаете с многоагентными системами, важно понимать, как каждый агент взаимодействует с пользователем и с другими агентами. Tracing OpenAI Agent Responses using MLFlow позволяет вам:
- Логировать все взаимодействия и API вызовы;
- Фиксировать использование инструментов, входные и выходные сообщения;
- Отслеживать выполнение для отладки и анализа производительности.
Это особенно полезно, когда разные агенты работают совместно или динамически вызывают функции друг друга.
Практическое применение: Пример многоагентной системы
Рассмотрим пример, где мы создаем многоагентного помощника, который может обрабатывать запросы пользователей по программированию и кулинарии. Для этого мы используем MLflow для автоматического отслеживания взаимодействий.
Настройка зависимостей
pip install openai-agents mlflow pydantic pydotenv
Не забудьте получить ключ API OpenAI и создать файл .env с вашим ключом.
Код многоагентной системы
import mlflow, asyncio
from agents import Agent, Runner
import os
from dotenv import load_dotenv
load_dotenv()
mlflow.openai.autolog()
mlflow.set_tracking_uri("./mlruns")
mlflow.set_experiment("Agent-Coding-Cooking")
coding_agent = Agent(name="Coding agent", instructions="You only answer coding questions.")
cooking_agent = Agent(name="Cooking agent", instructions="You only answer cooking questions.")
triage_agent = Agent(
name="Triage agent",
instructions="If the request is about code, handoff to coding_agent; if about cooking, handoff to cooking_agent.",
handoffs=[coding_agent, cooking_agent],
)
async def main():
res = await Runner.run(triage_agent, input="How do I boil pasta al dente?")
print(res.final_output)
if __name__ == "__main__":
asyncio.run(main())
Просмотр интерфейса MLflow
Чтобы открыть интерфейс MLflow и просмотреть все зафиксированные взаимодействия агентов, выполните команду:
mlflow ui
Это запустит сервер отслеживания MLflow, и вы сможете увидеть поток взаимодействий, что поможет в отладке и оптимизации рабочих процессов агентов.
Пример с защитными механизмами
Теперь рассмотрим пример, где мы реализуем защитный механизм для агента поддержки клиентов. Этот агент будет блокировать запросы, связанные с медицинскими вопросами.
Код с защитным механизмом
import mlflow, asyncio
from pydantic import BaseModel
from agents import (
Agent, Runner,
GuardrailFunctionOutput, InputGuardrailTripwireTriggered,
input_guardrail, RunContextWrapper)
from dotenv import load_dotenv
load_dotenv()
mlflow.openai.autolog()
mlflow.set_tracking_uri("./mlruns")
mlflow.set_experiment("Agent-Guardrails")
class MedicalSymptoms(BaseModel):
medical_symptoms: bool
reasoning: str
guardrail_agent = Agent(
name="Guardrail check",
instructions="Check if the user is asking you for medical symptoms.",
output_type=MedicalSymptoms,
)
@input_guardrail
async def medical_guardrail(ctx: RunContextWrapper[None], agent: Agent, input):
result = await Runner.run(guardrail_agent, input, context=ctx.context)
return GuardrailFunctionOutput(
output_info=result.final_output,
tripwire_triggered=result.final_output.medical_symptoms,
)
agent = Agent(
name="Customer support agent",
instructions="You are a customer support agent. You help customers with their questions.",
input_guardrails=[medical_guardrail],
)
async def main():
try:
await Runner.run(agent, "Should I take aspirin if I'm having a headache?")
print("Guardrail didn't trip - this is unexpected")
except InputGuardrailTripwireTriggered:
print("Medical guardrail tripped")
if __name__ == "__main__":
asyncio.run(main())
Просмотр интерфейса MLflow для защитных механизмов
Запустите команду mlflow ui
в новом терминале, чтобы увидеть все зафиксированные взаимодействия. В этом примере, когда агент получает вопрос о медицинских симптомах, защитный механизм срабатывает, и вы можете увидеть, как это было зафиксировано в интерфейсе MLflow.
Заключение
В этой статье мы рассмотрели, как отслеживать ответы агентов OpenAI с помощью MLflow, продемонстрировав как многоагентную систему, так и реализацию защитных механизмов. Используя возможности MLflow, разработчики могут повысить надежность и безопасность своих AI-приложений.
Часто задаваемые вопросы (FAQ)
1. Как MLflow помогает в отслеживании взаимодействий агентов?
MLflow автоматически фиксирует все API вызовы и взаимодействия, что упрощает отладку и анализ.
2. Какие библиотеки необходимы для работы с MLflow и OpenAI Agents?
Вам понадобятся библиотеки openai-agents
, mlflow
, pydantic
и pydotenv
.
3. Как настроить защитные механизмы для агентов?
Вы можете использовать input_guardrail
для проверки входящих запросов и блокировки нежелательных.
4. Как просмотреть зафиксированные данные в MLflow?
Запустите команду mlflow ui
в терминале, чтобы открыть интерфейс отслеживания.
5. Какие ошибки часто возникают при работе с MLflow?
Частые ошибки включают неправильную настройку окружения и отсутствие необходимых библиотек.
6. Какие лайфхаки можно использовать при работе с MLflow?
Регулярно проверяйте логи и используйте экспериментальные названия, чтобы легко идентифицировать разные сценарии.