Öğretici: OpenAI modellerini sorgulamak için dış model uç noktaları oluşturma
Bu makalede, MLflow Dağıtımları SDK'sını kullanarak tamamlamalar, sohbet ve eklemeler için OpenAI modellerine hizmet veren bir dış model uç noktasını yapılandırmaya ve sorgulamaya yönelik adım adım yönergeler sağlanır. Dış modeller hakkında daha fazla bilgi edinin.
Bu görevi gerçekleştirmek için Sunma kullanıcı arabirimini kullanmayı tercih ediyorsanız bkz . Dış model sunma uç noktası oluşturma.
Gereksinimler
- Databricks Runtime 13.0 ML veya üzeri.
- MLflow 2.9 veya üzeri.
- OpenAI API anahtarları.
- Databricks CLI sürüm 0.205 veya üzerini yükleyin.
(İsteğe bağlı) 0. Adım: Databricks Gizli Dizileri CLI'sını kullanarak OpenAI API anahtarını depolama
API anahtarlarınızı 3. Adımda düz metin dizeleri olarak veya Azure Databricks Gizli Dizileri kullanarak sağlayabilirsiniz.
OpenAI API anahtarını gizli dizi olarak depolamak için Databricks Gizli Dizileri CLI'sını (sürüm 0.205 ve üzeri) kullanabilirsiniz. Gizli diziler için REST API'yi de kullanabilirsiniz.
Aşağıdaki, my_openai_secret_scope
adlı gizli dizi kapsamını oluşturur ve ardından bu kapsamda gizli diziyi openai_api_key
oluşturur.
databricks secrets create-scope my_openai_secret_scope
databricks secrets put-secret my_openai_secret_scope openai_api_key
1. Adım: MLflow'u dış modeller desteğiyle yükleme
Dış model desteğine sahip bir MLflow sürümü yüklemek için aşağıdakileri kullanın:
%pip install mlflow[genai]>=2.9.0
2. Adım: Dış model uç noktası oluşturma ve yönetme
Önemli
Bu bölümdeki kod örneklerinde Genel Önizleme MLflow Dağıtımları CRUD SDK'sının kullanımı gösterilmektedir.
Büyük bir dil modeli (LLM) için dış model uç noktası oluşturmak için MLflow Dağıtımları SDK'sından yöntemini kullanın create_endpoint()
. Sunum kullanıcı arabiriminde dış model uç noktaları da oluşturabilirsiniz.
Aşağıdaki kod parçacığı, yapılandırma bölümünde belirtildiği served_entities
gibi OpenAI gpt-3.5-turbo-instruct
için bir tamamlamalar uç noktası oluşturur. Uç noktanız için ve openai_api_key
değerlerini her alan için benzersiz değerlerinizle doldurup doldurmayı name
unutmayın.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
name="openai-completions-endpoint",
config={
"served_entities": [{
"name": "openai-completions",
"external_model": {
"name": "gpt-3.5-turbo-instruct",
"provider": "openai",
"task": "llm/v1/completions",
"openai_config": {
"openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}"
}
}
}]
}
)
Aşağıdaki kod parçacığında, openAI API anahtarınızı düz metin dizesi olarak sağlayabileceğiniz ve yukarıdakiyle aynı tamamlama uç noktasını oluşturmanın alternatif bir yolu gösterilmektedir.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
name="openai-completions-endpoint",
config={
"served_entities": [{
"name": "openai-completions",
"external_model": {
"name": "gpt-3.5-turbo-instruct",
"provider": "openai",
"task": "llm/v1/completions",
"openai_config": {
"openai_api_key_plaintext": "sk-yourApiKey"
}
}
}]
}
)
Azure OpenAI kullanıyorsanız yapılandırma bölümünde Azure OpenAI dağıtım adını, uç nokta URL'sini openai_config
ve API sürümünü de belirtebilirsiniz.
client.create_endpoint(
name="openai-completions-endpoint",
config={
"served_entities": [
{
"name": "openai-completions",
"external_model": {
"name": "gpt-3.5-turbo-instruct",
"provider": "openai",
"task": "llm/v1/completions",
"openai_config": {
"openai_api_type": "azure",
"openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
"openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
"openai_deployment_name": "my-gpt-35-turbo-deployment",
"openai_api_version": "2023-05-15"
},
},
}
],
},
)
Bir uç noktayı güncelleştirmek için kullanın update_endpoint()
. Aşağıdaki kod parçacığı, bir uç noktanın hız sınırlarını kullanıcı başına dakikada 20 çağrıyla nasıl güncelleştireceklerini gösterir.
client.update_endpoint(
endpoint="openai-completions-endpoint",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 20
}
],
},
)
3. Adım: Dış model uç noktasına istek gönderme
Önemli
Bu bölümdeki kod örnekleri, MLflow Dağıtımları SDK'sının predict()
yönteminin kullanımını gösterir.
MLflow Dağıtımları SDK'sının predict()
yöntemini kullanarak dış model uç noktasına sohbet, tamamlama ve ekleme istekleri gönderebilirsiniz.
Aşağıdaki, OpenAI tarafından barındırılan gpt-3.5-turbo-instruct
bir istek gönderir.
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. Adım: Farklı bir sağlayıcının modellerini karşılaştırma
Model sunma, Open AI, Anthropic, Cohere, Amazon Bedrock, Google Cloud Vertex AI ve daha fazlası dahil olmak üzere birçok dış model sağlayıcısını destekler. AI Playground'ı kullanarak uygulamalarınızın doğruluğunu, hızını ve maliyetini iyileştirmenize yardımcı olmak için LLM'leri sağlayıcılar arasında karşılaştırabilirsiniz.
Aşağıdaki örnek, Antropik claude-2
için bir uç nokta oluşturur ve yanıtını OpenAI gpt-3.5-turbo-instruct
kullanan bir soruyla karşılaştırır. Her iki yanıt da aynı standart biçime sahiptir ve bu da karşılaştırmayı kolaylaştırır.
Antropik claude-2 için uç nokta oluşturma
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
name="anthropic-completions-endpoint",
config={
"served_entities": [
{
"name": "claude-completions",
"external_model": {
"name": "claude-2",
"provider": "anthropic",
"task": "llm/v1/completions",
"anthropic_config": {
"anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
},
},
}
],
},
)
Her uç noktadan gelen yanıtları karşılaştırma
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
}
]
Ek kaynaklar
Mozaik Yapay Zeka Modeli Sunma'daki dış modeller.