Bagikan melalui


Model fondasi kueri

Dalam artikel ini, Anda mempelajari cara memformat permintaan kueri untuk model fondasi dan mengirimkannya ke titik akhir penyajian model Anda.

Untuk permintaan kueri model ML atau Python tradisional, lihat Kueri yang melayani titik akhir untuk model kustom.

Databricks Model Serving mendukung API Model Foundation dan model eksternal untuk mengakses model fondasi dan menggunakan API dan SDK yang kompatibel dengan OpenAI terpadu untuk mengkuerinya. Hal ini memungkinkan untuk bereksperimen dengan dan menyesuaikan model fondasi untuk produksi di seluruh cloud dan penyedia yang didukung.

Databricks Model Serving menyediakan opsi berikut untuk mengirim permintaan penilaian ke model fondasi:

Metode Detail
Klien OpenAI Mengkueri model yang dihosting oleh titik akhir Penyajian Model Databricks menggunakan klien OpenAI. Tentukan nama titik akhir penyajian model model sebagai input. Didukung untuk model obrolan, penyematan, dan penyelesaian yang disediakan oleh API Model Foundation atau model eksternal.
Melayani UI Pilih Titik akhir kueri dari halaman Titik akhir penayangan . Sisipkan data input model format JSON dan klik Kirim Permintaan. Jika model memiliki contoh input yang dicatat, gunakan Tampilkan Contoh untuk memuatnya.
REST API Panggil dan kueri model menggunakan REST API. Lihat POST /serving-endpoints/{name}/invocations untuk detailnya. Untuk permintaan penilaian ke titik akhir yang melayani beberapa model, lihat Mengkueri model individual di belakang titik akhir.
SDK Penyebaran MLflow Gunakan fungsi predict() MLflow Deployments SDK untuk mengkueri model.
Databricks GenAI SDK Databricks GenAI SDK adalah lapisan di atas REST API. Ini menangani detail tingkat rendah, seperti autentikasi dan pemetaan ID model ke URL titik akhir, sehingga lebih mudah untuk berinteraksi dengan model. SDK dirancang untuk digunakan dari dalam notebook Databricks.
Fungsi SQL Panggil inferensi model langsung dari SQL menggunakan ai_query fungsi SQL. Lihat Mengkueri model yang dilayani dengan ai_query().

Persyaratan

Penting

Sebagai praktik terbaik keamanan untuk skenario produksi, Databricks merekomendasikan agar Anda menggunakan token OAuth mesin-ke-mesin untuk autentikasi selama produksi.

Untuk pengujian dan pengembangan, Databricks merekomendasikan penggunaan token akses pribadi milik perwakilan layanan alih-alih pengguna ruang kerja. Untuk membuat token untuk perwakilan layanan, lihat Mengelola token untuk perwakilan layanan.

Memasang paket

Setelah memilih metode kueri, Anda harus terlebih dahulu menginstal paket yang sesuai ke kluster Anda.

Klien OpenAI

Untuk menggunakan klien OpenAI, openai paket perlu diinstal pada kluster Anda. Jalankan hal berikut ini di buku catatan atau terminal lokal Anda:

!pip install openai

Berikut ini hanya diperlukan saat menginstal paket pada Buku Catatan Databricks

dbutils.library.restartPython()

REST API

Akses ke Rest API Penyajian tersedia di Databricks Runtime untuk Pembelajaran Mesin.

SDK Penyebaran MLflow

!pip install mlflow

Berikut ini hanya diperlukan saat menginstal paket pada Buku Catatan Databricks

dbutils.library.restartPython()

Databricks GenAI SDK

Untuk digunakan databricks-genai-inference dengan beban kerja throughput yang disediakan, Anda harus menggunakan versi 0.2.2 atau lebih tinggi.

 !pip install databricks-genai-inference

Berikut ini hanya diperlukan saat menginstal paket pada Buku Catatan Databricks

 dbutils.library.restartPython()

Mengkueri model penyelesaian obrolan

Berikut ini adalah contoh untuk mengkueri model obrolan.

Untuk contoh inferensi batch, lihat Inferensi batch menggunakan API Model Foundation.

Klien OpenAI

Berikut ini adalah permintaan obrolan untuk model Instruksi DBRX yang disediakan oleh API Model Foundation titik akhir bayar per token, databricks-dbrx-instruct di ruang kerja Anda.

Untuk menggunakan klien OpenAI, tentukan model yang melayani nama titik akhir sebagai model input. Contoh berikut mengasumsikan Anda memiliki token Databricks API dan openai diinstal pada komputasi Anda. Anda juga memerlukan instans ruang kerja Databricks untuk menghubungkan klien OpenAI ke Databricks.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.chat.completions.create(
    model="databricks-dbrx-instruct",
    messages=[
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is a mixture of experts model?",
      }
    ],
    max_tokens=256
)

REST API

Penting

Contoh berikut menggunakan parameter REST API untuk mengkueri titik akhir penyajian yang melayani model fondasi. Parameter ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat POST /serving-endpoints/{name}/invocations.

Berikut ini adalah permintaan obrolan untuk model Instruksi DBRX yang disediakan oleh API Model Foundation titik akhir bayar per token, databricks-dbrx-instruct di ruang kerja Anda.

curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": " What is a mixture of experts model?"
    }
  ]
}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-dbrx-instruct/invocations \

SDK Penyebaran MLflow

Penting

Contoh berikut menggunakan predict() API dari SDK Penyebaran MLflow.

Berikut ini adalah permintaan obrolan untuk model Instruksi DBRX yang disediakan oleh API Model Foundation titik akhir bayar per token, databricks-dbrx-instruct di ruang kerja Anda.


import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

chat_response = client.predict(
    endpoint="databricks-dbrx-instruct",
    inputs={
        "messages": [
            {
              "role": "user",
              "content": "Hello!"
            },
            {
              "role": "assistant",
              "content": "Hello! How can I assist you today?"
            },
            {
              "role": "user",
              "content": "What is a mixture of experts model??"
            }
        ],
        "temperature": 0.1,
        "max_tokens": 20
    }
)

Databricks GenAI SDK

Berikut ini adalah permintaan obrolan untuk model Instruksi DBRX yang disediakan oleh API Model Foundation titik akhir bayar per token, databricks-dbrx-instruct di ruang kerja Anda.

from databricks_genai_inference import ChatCompletion

# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

response = ChatCompletion.create(model="databricks-dbrx-instruct",
                                messages=[{"role": "system", "content": "You are a helpful assistant."},
                                          {"role": "user","content": "What is a mixture of experts model?"}],
                                max_tokens=128)
print(f"response.message:{response.message}")

LangChain

Untuk mengkueri titik akhir model fondasi menggunakan LangChain, Anda bisa melakukan salah satu hal berikut ini:

  • Databricks Impor kelas LLM dan tentukan endpoint_name dan transform_input_fn.
  • ChatDatabricks Impor kelas ChatModel dan tentukan endpoint.

Contoh berikut menggunakan Databricks kelas LLM di LangChain untuk mengkueri titik akhir pay-per-token API Model Foundation, databricks-dbrx-instruct. API Model Foundation mengharapkan dalam kamus messages permintaan, sementara LangChain Databricks LLM secara default menyediakan prompt dalam kamus permintaan. transform_input Gunakan fungsi untuk menyiapkan kamus permintaan ke dalam format yang diharapkan.

from langchain.llms import Databricks
from langchain_core.messages import HumanMessage, SystemMessage

def transform_input(**request):
  request["messages"] = [
    {
      "role": "user",
      "content": request["prompt"]
    }
  ]
  del request["prompt"]
  return request

llm = Databricks(endpoint_name="databricks-dbrx-instruct", transform_input_fn=transform_input)
llm("What is a mixture of experts model?")

Contoh berikut menggunakan ChatDatabricks kelas ChatModel dan menentukan endpoint.

from langchain.chat_models import ChatDatabricks
from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]
chat_model = ChatDatabricks(endpoint="databricks-dbrx-instruct", max_tokens=500)
chat_model.invoke(messages)

SQL

Penting

Contoh berikut menggunakan fungsi SQL bawaan, ai_query. Fungsi ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat Mengkueri model yang dilayani dengan ai_query().

Berikut ini adalah permintaan obrolan untuk llama-2-70b-chat disediakan oleh API Model Yayasan titik akhir bayar per token, databricks-llama-2-70b-chat di ruang kerja Anda.

Catatan

Fungsi ai_query() ini tidak mendukung titik akhir kueri yang melayani model DBRX atau DBRX Instruct.

SELECT ai_query(
    "databricks-llama-2-70b-chat",
    "Can you explain AI in ten words?"
  )

Berikut ini adalah format permintaan yang diharapkan untuk model obrolan. Untuk model eksternal, Anda dapat menyertakan parameter tambahan yang valid untuk penyedia dan konfigurasi titik akhir tertentu. Lihat Parameter kueri tambahan.

{
  "messages": [
    {
      "role": "user",
      "content": "What is a mixture of experts model?"
    }
  ],
  "max_tokens": 100,
  "temperature": 0.1
}

Berikut ini adalah format respons yang diharapkan:

{
  "model": "databricks-dbrx-instruct",
  "choices": [
    {
      "message": {},
      "index": 0,
      "finish_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 74,
    "total_tokens": 81
  },
  "object": "chat.completion",
  "id": null,
  "created": 1698824353
}

Sesi obrolan

Databricks GenAI SDK menyediakan ChatSession kelas untuk mengelola percakapan obrolan multi-putaran. WDS menyediakan fungsi-fungsi berikut:

Fungsi Tampilkan Deskripsi
reply (string) Mengambil pesan pengguna baru
last string Pesan terakhir dari asisten
history daftar dict Pesan dalam riwayat obrolan, termasuk peran.
count int Jumlah putaran obrolan yang dilakukan sejauh ini.

Untuk menginisialisasi ChatSession, Anda menggunakan sekumpulan argumen yang sama dengan ChatCompletion, dan argumen tersebut digunakan di seluruh sesi obrolan.


from databricks_genai_inference import ChatSession

chat = ChatSession(model="llama-2-70b-chat", system_message="You are a helpful assistant.", max_tokens=128)
chat.reply("Knock, knock!")
chat.last # return "Hello! Who's there?"
chat.reply("Guess who!")
chat.last # return "Okay, I'll play along! Is it a person, a place, or a thing?"

chat.history
# return: [
#     {'role': 'system', 'content': 'You are a helpful assistant.'},
#     {'role': 'user', 'content': 'Knock, knock.'},
#     {'role': 'assistant', 'content': "Hello! Who's there?"},
#     {'role': 'user', 'content': 'Guess who!'},
#     {'role': 'assistant', 'content': "Okay, I'll play along! Is it a person, a place, or a thing?"}
# ]

Mengkueri model penyematan

Berikut ini adalah permintaan penyematan untuk model yang bge-large-en disediakan oleh API Model Foundation.

Klien OpenAI

Untuk menggunakan klien OpenAI, tentukan model yang melayani nama titik akhir sebagai model input. Contoh berikut mengasumsikan Anda memiliki token Databricks API dan openai diinstal pada kluster Anda.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.embeddings.create(
  model="databricks-bge-large-en",
  input="what is databricks"
)

REST API

Penting

Contoh berikut menggunakan parameter REST API untuk mengkueri titik akhir penyajian yang melayani model fondasi. Parameter ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat POST /serving-endpoints/{name}/invocations.


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d  '{ "input": "Embed this sentence!"}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-bge-large-en/invocations

SDK Penyebaran MLflow

Penting

Contoh berikut menggunakan predict() API dari SDK Penyebaran MLflow.


import mlflow.deployments

export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

embeddings_response = client.predict(
    endpoint="databricks-bge-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

Databricks GenAI SDK


from databricks_genai_inference import Embedding

# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

response = Embedding.create(
    model="bge-large-en",
    input="3D ActionSLAM: wearable person tracking in multi-floor environments")
print(f'embeddings: {response.embeddings}')

LangChain

Untuk menggunakan model API Model Databricks Foundation di LangChain sebagai Model Penyematan, impor DatabricksEmbeddings kelas dan tentukan endpoint parameter sebagai berikut:

from langchain.embeddings import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

SQL

Penting

Contoh berikut menggunakan fungsi SQL bawaan, ai_query. Fungsi ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat Mengkueri model yang dilayani dengan ai_query().


SELECT ai_query(
    "databricks-bge-large-en",
    "Can you explain AI in ten words?"
  )

Berikut ini adalah format permintaan yang diharapkan untuk model penyematan. Untuk model eksternal, Anda dapat menyertakan parameter tambahan yang valid untuk penyedia dan konfigurasi titik akhir tertentu. Lihat Parameter kueri tambahan.


{
  "input": [
    "embedding text"
  ]
}

Berikut ini adalah format respons yang diharapkan:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Mengkueri model penyelesaian teks

Berikut ini adalah permintaan penyelesaian untuk model yang databricks-mpt-30b-instruct disediakan oleh API Model Foundation. Untuk parameter dan sintaks, lihat Tugas penyelesaian.

Klien OpenAI

Untuk menggunakan klien OpenAI, tentukan model yang melayani nama titik akhir sebagai model input. Contoh berikut mengasumsikan Anda memiliki token Databricks API dan openai diinstal pada kluster Anda.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="databricks-mpt-30b-instruct",
  prompt="what is databricks",
  temperature=1.0
)

REST API

Penting

Contoh berikut menggunakan parameter REST API untuk mengkueri titik akhir penyajian yang melayani model fondasi. Parameter ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat POST /serving-endpoints/{name}/invocations.


curl \
 -u token:$DATABRICKS_TOKEN \
 -X POST \
 -H "Content-Type: application/json" \
 -d '{"prompt": "What is a quoll?", "max_tokens": 64}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-mpt-30b-instruct/invocations

SDK Penyebaran MLflow

Penting

Contoh berikut menggunakan predict() API dari SDK Penyebaran MLflow.


import os
import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook

os.environ['DATABRICKS_HOST'] = "https://<workspace_host>.databricks.com"
os.environ['DATABRICKS_TOKEN'] = "dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

completions_response = client.predict(
    endpoint="databricks-mpt-30b-instruct",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)

# Print the response
print(completions_response)

Databricks GenAI SDK

import os
from databricks_genai_inference import Completion

# Only required when running this example outside of a Databricks Notebook
os.environ['DATABRICKS_HOST'] = "https://<workspace_host>.databricks.com"
os.environ['DATABRICKS_TOKEN'] = "dapi-your-databricks-token"

response = Completion.create(
    model="databricks-mpt-30b-instruct",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets.",
    max_tokens=128)
print(f"response.text:{response.text:}")

SQL

Penting

Contoh berikut menggunakan fungsi SQL bawaan, ai_query. Fungsi ini adalah Pratinjau Publik dan definisinya mungkin berubah. Lihat Mengkueri model yang dilayani dengan ai_query().

SELECT ai_query(
    "databricks-mpt-30b-instruct",
    "Can you explain AI in ten words?"
  )

Berikut ini adalah format permintaan yang diharapkan untuk model penyelesaian. Untuk model eksternal, Anda dapat menyertakan parameter tambahan yang valid untuk penyedia dan konfigurasi titik akhir tertentu. Lihat Parameter kueri tambahan.

{
  "prompt": "What is mlflow?",
  "max_tokens": 100,
  "temperature": 0.1,
  "stop": [
    "Human:"
  ],
  "n": 1,
  "stream": false,
  "extra_params":{
    "top_p": 0.9
  }
}

Berikut ini adalah format respons yang diharapkan:

{
  "id": "cmpl-8FwDGc22M13XMnRuessZ15dG622BH",
  "object": "text_completion",
  "created": 1698809382,
  "model": "gpt-3.5-turbo-instruct",
  "choices": [
    {
    "text": "MLflow is an open-source platform for managing the end-to-end machine learning lifecycle. It provides tools for tracking experiments, managing and deploying models, and collaborating on projects. MLflow also supports various machine learning frameworks and languages, making it easier to work with different tools and environments. It is designed to help data scientists and machine learning engineers streamline their workflows and improve the reproducibility and scalability of their models.",
    "index": 0,
    "logprobs": null,
    "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 83,
    "total_tokens": 88
  }
}

Mengobrol dengan LLM yang didukung menggunakan AI Playground

Anda dapat berinteraksi dengan model bahasa besar yang didukung menggunakan AI Playground. AI Playground adalah lingkungan seperti obrolan tempat Anda dapat menguji, meminta, dan membandingkan LLM dari ruang kerja Azure Databricks Anda.

Taman bermain AI

Sumber Daya Tambahan: