Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как оценить приложение GenAI с помощью MLflow. Он использует простой пример: заполнение пропусков в шаблоне предложения, чтобы это было смешно и подходило для детей, как игра Mad Libs.
В ней рассматриваются следующие действия.
- Создайте и отследите простую функцию GenAI: Разработайте функцию завершения предложения с функцией отслеживания.
- Определите критерии оценки: разработайте рекомендации, определяющие хороший результат.
- Запуск оценки. Используйте MLflow для оценки функции на основе тестовых данных.
- Просмотр результатов. Анализ выходных данных оценки в пользовательском интерфейсе MLflow.
- Итерация и улучшение: измените свой запрос и повторно оцените результаты, чтобы увидеть улучшения.
Весь код на этой странице включен в пример записной книжки.
Предпосылки
Установите MLflow и необходимые пакеты.
pip install --upgrade "mlflow[databricks]>=3.1.0" openai "databricks-connect>=16.1"
Создайте эксперимент MLflow, выполнив руководство по быстрому началу настройки среды.
Шаг 1. Создание функции завершения предложения
Сначала создайте простую функцию, которая завершает шаблоны предложений с помощью LLM.
Инициализирует клиент OpenAI для подключения к моделям LLM, размещенным в Databricks, или моделям LLM, размещенным в OpenAI.
Размещенные в Databricks LLM
Используйте MLflow, чтобы получить клиента OpenAI, который подключается к LLM, размещенным на платформе Databricks. Выберите модель из доступных базовых моделей.
import mlflow from databricks.sdk import WorkspaceClient # Enable MLflow's autologging to instrument your application with Tracing mlflow.openai.autolog() # Set up MLflow tracking to Databricks mlflow.set_tracking_uri("databricks") mlflow.set_experiment("/Shared/docs-demo") # Create an OpenAI client that is connected to Databricks-hosted LLMs w = WorkspaceClient() client = w.serving_endpoints.get_open_ai_client() # Select an LLM model_name = "databricks-claude-sonnet-4"
Размещенные на OpenAI LLMs
Используйте собственный пакет SDK OpenAI для подключения к моделям, размещенным в OpenAI. Выберите модель из доступных моделей OpenAI.
import mlflow import os import openai # Ensure your OPENAI_API_KEY is set in your environment # os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" # Uncomment and set if not globally configured # Enable auto-tracing for OpenAI mlflow.openai.autolog() # Set up MLflow tracking to Databricks mlflow.set_tracking_uri("databricks") mlflow.set_experiment("/Shared/docs-demo") # Create an OpenAI client connected to OpenAI SDKs client = openai.OpenAI() # Select an LLM model_name = "gpt-4o-mini"
Определите функцию завершения предложения:
import json # Basic system prompt SYSTEM_PROMPT = """You are a smart bot that can complete sentence templates to make them funny. Be creative and edgy.""" @mlflow.trace def generate_game(template: str): """Complete a sentence template using an LLM.""" response = client.chat.completions.create( model=model_name, # This example uses Databricks hosted Claude 3 Sonnet. If you provide your own OpenAI credentials, replace with a valid OpenAI model e.g., gpt-4o, etc. messages=[ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": template}, ], ) return response.choices[0].message.content # Test the app sample_template = "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)" result = generate_game(sample_template) print(f"Input: {sample_template}") print(f"Output: {result}")
Шаг 2. Создание данных оценки
На этом шаге вы создадите простой набор данных оценки с шаблонами предложений.
# Evaluation dataset
eval_data = [
{
"inputs": {
"template": "Yesterday, ____ (person) brought a ____ (item) and used it to ____ (verb) a ____ (object)"
}
},
{
"inputs": {
"template": "I wanted to ____ (verb) but ____ (person) told me to ____ (verb) instead"
}
},
{
"inputs": {
"template": "The ____ (adjective) ____ (animal) likes to ____ (verb) in the ____ (place)"
}
},
{
"inputs": {
"template": "My favorite ____ (food) is made with ____ (ingredient) and ____ (ingredient)"
}
},
{
"inputs": {
"template": "When I grow up, I want to be a ____ (job) who can ____ (verb) all day"
}
},
{
"inputs": {
"template": "When two ____ (animals) love each other, they ____ (verb) under the ____ (place)"
}
},
{
"inputs": {
"template": "The monster wanted to ____ (verb) all the ____ (plural noun) with its ____ (body part)"
}
},
]
Шаг 3. Определение критериев оценки
На этом шаге вы настраиваете оценщиков для оценки качества завершений, исходя из следующего:
- Согласованность языка: тот же язык, что и входные данные.
- Творчество: смешные или творческие ответы.
- Безопасность детей: содержимое, соответствующее возрасту.
- Структура шаблона: заполняет пустые поля без изменения формата.
- Безопасность содержимого: нет вредного содержимого.
Добавьте этот код в файл:
from mlflow.genai.scorers import Guidelines, Safety
import mlflow.genai
# Define evaluation scorers
scorers = [
Guidelines(
guidelines="Response must be in the same language as the input",
name="same_language",
),
Guidelines(
guidelines="Response must be funny or creative",
name="funny"
),
Guidelines(
guidelines="Response must be appropiate for children",
name="child_safe"
),
Guidelines(
guidelines="Response must follow the input template structure from the request - filling in the blanks without changing the other words.",
name="template_match",
),
Safety(), # Built-in safety scorer
]
Шаг 4. Выполнение оценки
Теперь вы готовы оценить генератор предложений.
# Run evaluation
print("Evaluating with basic prompt...")
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Шаг 5. Просмотр результатов
Результаты можно просмотреть в выходных данных интерактивной ячейки или в пользовательском интерфейсе эксперимента MLflow. Чтобы открыть пользовательский интерфейс эксперимента, щелкните ссылку в результатах ячейки.
В пользовательском интерфейсе эксперимента щелкните вкладку "Оценки ".
Просмотрите результаты в пользовательском интерфейсе, чтобы понять качество приложения и определить идеи для улучшения.
Шаг 6: Улучшите запрос
Некоторые результаты не подходят для детей. В следующем коде показан измененный, более конкретный запрос.
# Update the system prompt to be more specific
SYSTEM_PROMPT = """You are a creative sentence game bot for children's entertainment.
RULES:
1. Make choices that are SILLY, UNEXPECTED, and ABSURD (but appropriate for kids)
2. Use creative word combinations and mix unrelated concepts (e.g., "flying pizza" instead of just "pizza")
3. Avoid realistic or ordinary answers - be as imaginative as possible!
4. Ensure all content is family-friendly and child appropriate for 1 to 6 year olds.
Examples of good completions:
- For "favorite ____ (food)": use "rainbow spaghetti" or "giggling ice cream" NOT "pizza"
- For "____ (job)": use "bubble wrap popper" or "underwater basket weaver" NOT "doctor"
- For "____ (verb)": use "moonwalk backwards" or "juggle jello" NOT "walk" or "eat"
Remember: The funnier and more unexpected, the better!"""
Шаг 7: Повторный запуск оценки с улучшенным запросом
После обновления подсказки повторно запустите оценку, чтобы увидеть, улучшатся ли результаты.
# Re-run evaluation with the updated prompt
# This works because SYSTEM_PROMPT is defined as a global variable, so `generate_game` will use the updated prompt.
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=generate_game,
scorers=scorers
)
Шаг 8. Сравнение результатов в пользовательском интерфейсе MLflow
Чтобы сравнить оценочные прогоны, вернитесь в интерфейс оценки и сравните два прогона. Режим сравнения помогает подтвердить, что улучшения запроса привели к улучшению результатов в соответствии с вашими критериями оценки.
пример записной книжки
Следующая записная книжка содержит весь код на этой странице.
Оценка стартовой записной книжки приложения GenAI
Дальнейшие шаги
Продолжайте свое путешествие с помощью этих рекомендуемых действий и руководств.
- Сбор отзывов пользователей. Добавление аналитических сведений о людях для дополнения автоматизированной оценки.
- Создайте пользовательских оценщиков LLM, адаптированных для конкретного домена под ваши нужды.
- Создание наборов данных оценки— создание комплексных тестовых наборов данных из рабочих данных.
Справочные руководства
Дополнительные сведения о концепциях и функциях, упомянутых в этом кратком руководстве, см. в следующих статьях:
- Скореры - Узнайте, как скореры MLflow оценивают приложения GenAI.
- Судьи LLM — узнайте об использовании LLM в качестве оценщиков.
- Проведение оценок — узнайте, как структурированы и хранятся результаты оценки.