Руководство: Создание конечных точек внешней модели для запроса моделей OpenAI
Статья
В этой статье приведены пошаговые инструкции по настройке и запросу внешнего конечного узла модели, который служит моделям OpenAI для завершения, чатов и встраивания, используя MLflow Deployments SDK. Дополнительные сведения о внешних моделях.
Если вы предпочитаете использовать пользовательский интерфейс обслуживания для выполнения этой задачи, см. статью "Создание внешней конечной точки обслуживания модели".
Требования
Databricks Runtime 13.0 ML или более поздней версии.
MLflow 2.9 или более поздней версии.
Ключи API OpenAI.
Установите Databricks CLI версии 0.205 или более поздней.
(Необязательно) Шаг 0: Сохраните ключ API OpenAI, используя интерфейс командной строки Databricks Secrets CLI
Ключи API можно предоставить в виде строк обычного текста на шаге 3 или с помощью секретов Azure Databricks.
Чтобы сохранить ключ API OpenAI в качестве секрета, можно использовать интерфейс командной строки секретов Databricks (версия 0.205 и выше). Для секретов также можно использовать REST API.
Сначала создается область секрета с именем my_openai_secret_scope, а затем в этой области создается секрет openai_api_key.
Следующий фрагмент кода создает конечную точку завершения для OpenAI gpt-3.5-turbo-instruct, как указано в served_entities разделе конфигурации. Для конечной точки обязательно заполните name, openai_api_key вашими уникальными значениями для каждого поля.
В следующем фрагменте кода показано, как предоставить ключ API OpenAI в виде строки открытого текста, чтобы создать ту же конечную точку завершения, что и выше.
При использовании Azure OpenAI можно также указать имя развертывания Azure OpenAI, URL-адрес конечной точки и версию API в openai_config разделе конфигурации.
Чтобы обновить конечную точку, используйте update_endpoint(). В следующем фрагменте кода показано, как обновить ограничения скорости конечной точки до 20 вызовов в минуту на пользователя.
Шаг 3. Отправка запросов во внешнюю конечную точку модели
Важно!
Примеры кода в этом разделе демонстрируют использование метода predict() из пакета SDK для развертываний MLflow.
Вы можете отправлять запросы на чат, выполнение и встраивание во внешнюю конечную точку модели с помощью метода SDK MLflow Deployments для predict().
В следующем примере отправляется запрос gpt-3.5-turbo-instruct к серверу, хостинг которого осуществляется OpenAI.
completions_response = client.predict(
endpoint="openai-completions-endpoint",
inputs={
"prompt": "What is the capital of France?",
"temperature": 0.1,
"max_tokens": 10,
"n": 2
}
)
completions_response == {
"id": "cmpl-8QW0hdtUesKmhB3a1Vel6X25j2MDJ",
"object": "text_completion",
"created": 1701330267,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "The capital of France is Paris.",
"index": 0,
"finish_reason": "stop",
"logprobs": None
},
{
"text": "Paris is the capital of France",
"index": 1,
"finish_reason": "stop",
"logprobs": None
},
],
"usage": {
"prompt_tokens": 7,
"completion_tokens": 16,
"total_tokens": 23
}
}
Шаг 4. Сравнение моделей из другого поставщика
Служба моделей поддерживает множество внешних поставщиков моделей, включая Open AI, Anthropic, Cohere, Amazon Bedrock, Google Cloud Vertex AI и многое другое. Вы можете сравнивать многомодальные языковые модели (LLM) от разных поставщиков, что позволяет оптимизировать точность, скорость и стоимость ваших приложений с помощью AI Playground.
В следующем примере создается конечная точка для Anthropic claude-2, и ее ответ сравнивается с ответом на вопрос, который использует OpenAI gpt-3.5-turbo-instruct. Оба ответа имеют одинаковый стандартный формат, что упрощает их сравнение.
openai_response = client.predict(
endpoint="openai-completions-endpoint",
inputs={
"prompt": "How is Pi calculated? Be very concise."
}
)
anthropic_response = client.predict(
endpoint="anthropic-completions-endpoint",
inputs={
"prompt": "How is Pi calculated? Be very concise."
}
)
openai_response["choices"] == [
{
"text": "Pi is calculated by dividing the circumference of a circle by its diameter."
" This constant ratio of 3.14159... is then used to represent the relationship"
" between a circle's circumference and its diameter, regardless of the size of the"
" circle.",
"index": 0,
"finish_reason": "stop",
"logprobs": None
}
]
anthropic_response["choices"] == [
{
"text": "Pi is calculated by approximating the ratio of a circle's circumference to"
" its diameter. Common approximation methods include infinite series, infinite"
" products, and computing the perimeters of polygons with more and more sides"
" inscribed in or around a circle.",
"index": 0,
"finish_reason": "stop",
"logprobs": None
}
]