Sdílet prostřednictvím


Funkce ai_query

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Důležité

Tato funkce je ve verzi Public Preview.

Vyvolá existující koncový bod služby Azure Databricks Model Serving a parsuje a vrátí její odpověď.

Požadavky

  • Tato funkce není dostupná v Azure Databricks SQL Classic.
  • Dotazování rozhraní API základního modelu je ve výchozím nastavení povolené. Pokud chcete dotazovat koncové body, které obsluhují vlastní modely nebo externí modely, povolte AI_Query pro vlastní modely a externí modely v uživatelském rozhraní Databricks Previews.
  • Aktuální kanál skladu DLT nepoužívá nejnovější verzi databricks Runtime, která podporuje ai_query(). pipelines.channel Nastavte vlastnosti tabulky tak, aby 'preview' se používaly ai_query(). Podívejte se na příklady ukázkového dotazu.

Poznámka:

  • V Databricks Runtime 14.2 a novějších je tato funkce podporovaná v poznámkových blocích Databricks, včetně poznámkových bloků, které se spouští jako úkol v pracovním postupu Databricks.
  • V databricks Runtime 14.1 a níže není tato funkce v poznámkových blocích Databricks podporovaná.

Syntaxe

Dotazování koncového bodu, který obsluhuje externí model nebo základní model:

ai_query(endpointName, request)

Dotazování vlastního modelu obsluhujícího koncový bod pomocí schématu modelu:

ai_query(endpointName, request)

Dotazování vlastního modelu obsluhujícího koncový bod bez schématu modelu:

ai_query(endpointName, request, returnType)

Argumenty

  • endpointName: Literál STRING, název databricks Foundation Modelu obsluhující koncový bod, externí model obsluhující koncový bod nebo vlastní koncový bod modelu ve stejném pracovním prostoru pro vyvolání. Definer musí mít v koncovém bodu oprávnění CAN QUERY.
  • request: Výraz, požadavek použitý k vyvolání koncového bodu.
    • Pokud je koncový bod externím modelem, který obsluhuje koncový bod nebo koncový bod rozhraní API modelu Databricks Foundation, musí být požadavek STRING.
    • Pokud je koncovým bodem vlastní model obsluhující koncový bod, může být požadavek jedním sloupcem nebo výrazem struktury. Názvy polí struktury by měly odpovídat názvům vstupních funkcí očekávaným koncovým bodem.
  • returnType: Výraz, očekávaný returnType z koncového bodu. Podobá se parametru schématu ve funkci from_json, která přijímá výraz A STRING nebo vyvolání schema_of_json funkce.
    • Pokud tento výraz není zadaný, databricks Runtime 14.2 a vyšší, ai_query() automaticky odvodí návratový typ ze schématu modelu koncového bodu obsluhy vlastního modelu.
    • V Databricks Runtime 14.1 a níže se tento výraz vyžaduje pro dotazování vlastního koncového bodu obsluhy modelu.

Návraty

Analyzovaná odpověď z koncového bodu.

Příklady

Dotazování externího modelu obsluhujícího koncový bod:

> SELECT ai_query(
    'my-external-model-openai-chat',
    'Describe Databricks SQL in 30 words.'
  ) AS summary

  "Databricks SQL is a cloud-based platform for data analytics and machine learning, providing a unified workspace for collaborative data exploration, analysis, and visualization using SQL queries."

Dotazování základního modelu podporovaného rozhraními API modelu Databricks Foundation:

> SELECT *,
  ai_query(
    'databricks-meta-llama-3-1-70b-instruct',
    "Can you tell me the name of the US state that serves the provided ZIP code? zip code: " || pickup_zip
    )
  FROM samples.nyctaxi.trips
  LIMIT 10

Volitelně můžete také zabalit volání ai_query() do funkce pro volání funkcí následujícím způsobem:

> CREATE FUNCTION correct_grammar(text STRING)
  RETURNS STRING
  RETURN ai_query(
    'databricks-llama-2-70b-chat',
    CONCAT('Correct this to standard English:\n', text));
> GRANT EXECUTE ON correct_grammar TO ds;
- DS fixes grammar issues in a batch.
> SELECT
    * EXCEPT text,
    correct_grammar(text) AS text
  FROM articles;

Dotazování vlastního modelu obsluhujícího koncový bod:


> SELECT text, ai_query(
    endpoint => 'spam-classification-endpoint',
    request => named_struct(
      'timestamp', timestamp,
      'sender', from_number,
      'text', text),
    returnType => 'BOOLEAN') AS is_spam
  FROM messages

> SELECT ai_query(
    'weekly-forecast',
    request => struct(*),
    returnType => 'FLOAT') AS predicted_revenue
  FROM retail_revenue

> SELECT ai_query(
    'custom-llama-2-7b-chat',
    request => named_struct("messages",
        ARRAY(named_struct("role", "user", "content", "What is ML?"))),
    returnType => 'STRUCT<candidates:ARRAY<STRING>>')

  {"candidates":["ML stands for Machine Learning. It's a subfield of Artificial Intelligence that involves the use of algorithms and statistical models to enable machines to learn from data, make decisions, and improve their performance on a specific task over time."]}

Příklad dotazu pro nastavení kanálu DLT na náhled:

> create or replace materialized view
    ai_query_mv
    TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
  SELECT
    ai_query("databricks-dbrx-instruct", text) as response
  FROM
    messages