Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini menyediakan instruksi langkah demi langkah untuk mengonfigurasi dan mengkueri titik akhir model eksternal yang melayani model OpenAI untuk penyelesaian, obrolan, dan penyematan. Anda membuat titik akhir dengan SDK Penyebaran MLflow dan mengkuerinya dengan klien OpenAI. Untuk informasi selengkapnya, lihat model eksternal.
Setelah Anda membuat titik akhir, Databricks merekomendasikan untuk mengonfigurasi Unity AI Gateway di dalamnya untuk menambahkan fitur tata kelola seperti pelacakan penggunaan, pencatatan payload, pagar pembatas, dan batas laju. Semua model eksternal yang dilayani melalui Model Serving dikueri menggunakan API yang kompatibel dengan OpenAI, sehingga Anda dapat menggunakan satu klien di seluruh penyedia. Lihat Unity AI Gateway.
Jika Anda lebih suka menggunakan Antarmuka Pengguna Penyajian untuk menyelesaikan tugas ini, lihat Buat titik akhir penyajian model eksternal.
Persyaratan
- Databricks Runtime 13.0 ML atau lebih tinggi.
- MLflow 2.9 atau lebih tinggi.
- Kunci API OpenAI.
- Instal Databricks CLI versi 0.205 atau lebih tinggi.
(Opsional) Langkah 0: Simpan kunci OpenAI API menggunakan Databricks Secrets CLI
Anda dapat menyediakan kunci API Anda baik sebagai string teks biasa di Langkah 3 atau dengan menggunakan Rahasia Azure Databricks.
Untuk menyimpan kunci OpenAI API sebagai rahasia, Anda dapat menggunakan Databricks Secrets CLI (versi 0.205 ke atas). Anda juga dapat menggunakan REST API untuk rahasia.
Berikut ini membuat cakupan rahasia bernama, my_openai_secret_scope, lalu membuat rahasia openai_api_key dalam cakupan tersebut.
databricks secrets create-scope my_openai_secret_scope
databricks secrets put-secret my_openai_secret_scope openai_api_key
Langkah 1: Instal MLflow dengan dukungan model eksternal
Gunakan yang berikut ini untuk menginstal versi MLflow dengan dukungan model eksternal:
%pip install mlflow[genai]>=2.9.0
Langkah 2: Membuat dan mengelola titik akhir model eksternal
Penting
Contoh kode di bagian ini menunjukkan penggunaan MLflow Deployments CRUD SDK Pratinjau Publik.
Untuk membuat titik akhir model eksternal untuk model bahasa besar (LLM), gunakan create_endpoint() metode dari MLflow Deployments SDK. Anda juga dapat membuat titik akhir model eksternal di Antarmuka Pengguna Penyajian.
Cuplikan kode berikut membuat titik akhir penyelesaian untuk OpenAI gpt-3.5-turbo-instruct, seperti yang ditentukan di bagian served_entities konfigurasi. Untuk titik akhir Anda, pastikan untuk mengisi name dan openai_api_key dengan nilai unik Anda untuk setiap bidang.
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}}"
}
}
}]
}
)
Cuplikan kode berikut menunjukkan bagaimana Anda dapat menyediakan kunci API OpenAI Anda sebagai string teks biasa untuk cara alternatif untuk membuat titik akhir penyelesaian yang sama seperti di atas.
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"
}
}
}]
}
)
Jika Anda menggunakan Azure OpenAI, Anda juga dapat menentukan nama penyebaran Azure OpenAI, URL titik akhir, dan versi API di bagian openai_config konfigurasi.
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"
},
},
}
],
},
)
Untuk mengonfigurasi batas laju, pelacakan penggunaan, pengelogan payload, atau pagar pembatas di titik akhir, gunakan Unity AI Gateway. Mengonfigurasi batas laju melalui Unity AI Gateway mendukung batas berbasis kueri (QPM) dan berbasis token (TPM) dan memungkinkan Anda mengatur batas per pengguna, per grup, dan seluruh titik akhir.
Lihat Mengonfigurasi Unity AI Gateway pada model yang melayani titik akhir untuk contoh terprogram yang memperbarui titik akhir untuk menambahkan batas laju dan fitur Gateway AI Unity lainnya.
Note
Pola client.update_endpoint() dengan field tingkat atas rate_limits yang sebelumnya terdokumentasi tidak lagi direkomendasikan. Gunakan konfigurasi Unity AI Gateway pada titik akhir sebagai gantinya.
Langkah 3: Mengirim permintaan ke titik akhir model eksternal
Databricks merekomendasikan kueri titik akhir model eksternal menggunakan klien OpenAI. Model Serving mengekspos API terpadu yang kompatibel dengan OpenAI di seluruh penyedia, sehingga kode klien yang sama berfungsi apakah model yang mendasarinya berasal dari OpenAI, Anthropic, Cohere, Amazon Bedrock, Google Cloud Vertex AI, atau penyedia kustom.
Instal klien OpenAI pada komputasi Anda:
%pip install openai
Berikut ini mengirimkan permintaan penyelesaian obrolan ke titik akhir yang melayani model obrolan OpenAI. Ganti nilai base_url dengan URL ruang kerja Azure Databricks Anda, dan berikan token akses pribadi an Azure Databricks untuk api_key. Atur parameter model menjadi nama endpoint penyajian model Anda.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("DATABRICKS_TOKEN"),
base_url="https://<workspace-name>.cloud.databricks.com/serving-endpoints"
)
response = client.chat.completions.create(
model="openai-chat-endpoint",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
],
max_tokens=128,
temperature=0.1,
)
print(response.choices[0].message.content)
Untuk mengirim permintaan completions ke endpoint yang dikonfigurasi untuk tugas llm/v1/completions, gunakan client.completions.create():
response = client.completions.create(
model="openai-completions-endpoint",
prompt="What is the capital of France?",
max_tokens=10,
temperature=0.1,
n=2,
)
print(response)
Untuk mengirim permintaan sematan ke endpoint yang dikonfigurasi untuk tugas llm/v1/embeddings, gunakan client.embeddings.create():
response = client.embeddings.create(
model="openai-embeddings-endpoint",
input="Databricks is a unified analytics platform.",
)
print(response.data[0].embedding)
Jika Anda menjalankan klien OpenAI dari dalam buku catatan Azure Databricks, Anda dapat menggunakan databricks-openai helper, yang secara otomatis mengonfigurasi autentikasi dan URL dasar ruang kerja. Lihat Menggunakan model fondasi untuk detailnya.
Langkah 4: Bandingkan model dari penyedia yang berbeda
Penyajian model mendukung banyak penyedia model eksternal termasuk Open AI, Anthropic, Cohere, Amazon Bedrock, Google Cloud Vertex AI, dan banyak lagi. Anda dapat membandingkan LLM antar penyedia, membantu mengoptimalkan akurasi, kecepatan, dan biaya aplikasi Anda menggunakan AI Playground.
Contoh berikut membuat titik akhir untuk Antropis claude-2 dan membandingkan responsnya dengan pertanyaan yang menggunakan OpenAI gpt-3.5-turbo-instruct. Kedua respons memiliki format standar yang sama, yang membuatnya mudah dibandingkan.
Membuat titik akhir untuk Claude-2 Anthropic
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}}"
},
},
}
],
},
)
Membandingkan respons dari setiap titik akhir
Karena semua titik akhir model eksternal mengekspos API yang kompatibel dengan OpenAI, Anda dapat mengkueri kedua titik akhir dengan klien OpenAI yang sama dengan mengalihkan model parameter ke nama titik akhir yang sesuai.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("DATABRICKS_TOKEN"),
base_url="https://<workspace-name>.cloud.databricks.com/serving-endpoints"
)
prompt = "How is Pi calculated? Be very concise."
openai_response = client.completions.create(
model="openai-completions-endpoint",
prompt=prompt,
)
anthropic_response = client.completions.create(
model="anthropic-completions-endpoint",
prompt=prompt,
)
print("OpenAI:", openai_response.choices[0].text)
print("Anthropic:", anthropic_response.choices[0].text)