Aracılığıyla paylaş


Öğ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_scopeadlı 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-instructiç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-instructkullanan 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.