다음을 통해 공유


ai_query 기능

적용 대상:확인 표시 '예' Databricks SQL 확인 표시 '예' Databricks Runtime

Important

이 기능은 공개 미리 보기HIPAA 규격에 있습니다.

미리 보기 중:

  • 기본 언어 모델은 여러 언어를 처리할 수 있지만 이 AI 함수는 영어로 조정됩니다.
  • AI Functions의 지역 가용성에 대한 지역별로 제한된 기능을 참조하세요.

기존 Azure Databricks 모델 서비스 엔드포인트호출하고 구문 분석하고 응답을 반환합니다.

ai_query 는 실시간 유추 또는 일괄 처리 유추 워크로드에 대한 기존 엔드포인트를 쿼리할 수 있는 범용 AI 함수 입니다.

요구 사항

  • 이 기능은 Azure Databricks SQL 클래식에서는 사용할 수 없습니다.

  • Pro SQL Warehouse에서 이 기능을 사용하려면 Azure Private Link를 사용하도록 설정해야 합니다.

  • Databricks Runtime 15.4 LTS 이상을 사용하는 것이 좋습니다. Databricks Runtime 15.3 이하를 사용하면 성능 속도가 느려질 수 있습니다.

  • 작업 영역은 지원되는 모델 서비스 지역에 있어야 합니다.

  • 모델을 로드한 상태로 서비스하는 기존의 엔드포인트입니다. Databricks 호스티드 파운데이션 모델을 사용하는 경우 엔드포인트가 만들어집니다. 그렇지 않으면 엔드포인트 서비스하는 사용자 지정 모델 만들기 또는 엔드포인트제공하는 기본 모델 만들기를 참조하세요.

  • 기본 모델 API 쿼리는 기본적으로 사용하도록 설정됩니다. 사용자 지정 모델 또는 외부 모델을(를) 제공하는 엔드포인트를 쿼리하려면:

  • 현재Lakeflow Spark 선언적 파이프라인 웨어하우스 채널은 지원하는 ai_query()최신 Databricks 런타임 버전을 사용하지 않습니다. 테이블 속성의 pipelines.channel'preview'으로 설정하여 ai_query()를 사용합니다.

    > create or replace materialized view
        ai_query_mv
        TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
      SELECT
        ai_query("databricks-meta-llama-3-3-70b-instruct", text) as response
      FROM
        messages
      LIMIT 10;
    

Syntax

기본 모델을 제공하는 엔드포인트를 쿼리하려면 다음을 수행합니다.

ai_query(endpoint, request)

모델 스키마을 사용하는 엔드포인트에 사용자 지정 모델을 쿼리하려면 다음을 수행하십시오.

ai_query(endpoint, request)

모델 스키마 없이 엔드포인트를 제공하는 사용자 지정 모델을 쿼리하려면 다음을 수행합니다.

ai_query(endpoint, request, returnType, failOnError)

인수 및 반환

Argument Description Returns
endpoint Databricks Foundation Model 서비스 엔드포인트, 외부 모델 서비스 엔드포인트 또는 같은 작업 공간에서 호출을 위한 사용자 정의 모델 엔드포인트의 이름을 STRING 리터럴로 제공합니다. 정의자는 엔드포인트에 대한 CAN QUERY 권한이 있어야 합니다.
request 엔드포인트를 식으로 호출하는 데 사용되는 요청입니다.
  • 엔드포인트가 외부 모델 서빙 엔드포인트이거나 Databricks Foundation Model APIs 엔드포인트인 경우, 요청은 반드시 STRING이어야 합니다.
  • 엔드포인트가 엔드포인트를 제공하는 사용자 지정 모델인 경우 요청은 단일 열 또는 STRUCT 식일 수 있습니다. STRUCT 필드 이름은 엔드포인트에서 예상하는 입력 기능 이름과 일치해야 합니다.
returnType (Databricks Runtime 15.2 이상에 대한 선택 사항) 엔드포인트에서 식으로 예상되는 returnType 값입니다. 이는 from_json 식 또는 호출을 모두 허용하는 STRING스키마 매개 변수와 비슷합니다.
  • Databricks Runtime 15.2 이상의 경우 이 식은 선택 사항입니다. 제공되지 ai_query() 않으면 엔드포인트를 제공하는 사용자 지정 모델의 모델 스키마에서 반환 형식을 자동으로 유추합니다.
  • Databricks Runtime 15.1 이하의 경우 이 식은 엔드포인트를 제공하는 사용자 지정 모델을 쿼리하는 데 필요합니다.

매개 변수를 responseFormat 사용하여 채팅 기반 모델에 대한 응답 형식을 지정합니다.
failOnError (선택 사항) 기본값이 true인 부울 리터럴입니다. Databricks Runtime 15.3 이상이 필요합니다. 이 플래그는 응답에 ai_query 오류 상태를 포함할지 여부를 나타냅니다.
오류를 처리하는 방법은 failOnError를 사용하여 예제를 참조하세요.
다음은 failOnError 시나리오를 기준으로 한 반환 동작을 설명합니다.
  • 이 경우 failOnError => true함수는 엔드포인트에서 구문 분석된 응답인 기존 동작과 동일한 결과를 반환합니다. 구문 분석된 응답의 데이터 형식은 모델 형식, 모델 스키마 엔드포인트 또는 returnType 함수의 ai_query 매개 변수에서 유추됩니다.
  • failOnError => false경우 함수는 구문 분석된 응답과 오류 상태 문자열을 포함하는 STRUCT 개체를 반환합니다.
    • 만약 행의 유추가 성공하면, errorStatus 필드는 null입니다.
    • 모델 엔드포인트 오류로 인해 행 유추가 실패하면 response 필드가 null.
    • 다른 오류로 인해 행의 유추가 실패하면 전체 쿼리가 실패합니다.
modelParameters (선택 사항) 기본 모델 또는 외부 모델을 제공하기 위한 채팅, 완성 및 포함 모델 매개 변수가 포함된 구조체 필드입니다. 이러한 모델 매개 변수는 데이터가 종속되지 않고 상수 매개 변수여야 합니다.
  • Databricks Runtime 15.3 이상이 필요합니다.
  • 이러한 모델 매개 변수를 지정하지 않거나 null 설정하면 기본값이 사용됩니다. temperature을(를) 제외하고 기본값이 0.0인 이러한 모델 매개변수의 기본값은 Foundation 모델 REST API 참조에 나열된 값과 동일합니다.

예시로는 모델 매개변수를 전달하여 모델을 구성하는 방법을에서 참조하세요.
responseFormat (선택 사항) 채팅 기반 모델을 따를 응답 형식을 지정합니다.
  • Databricks Runtime 15.4 LTS 이상이 필요합니다. 채팅 기반 모델을 쿼리하는 데만 사용할 수 있습니다.
  • 두 가지 응답 형식 스타일이 지원됩니다.
    • DDL 스타일 JSON 문자열
    • JSON 문자열입니다. 세 가지 JSON 문자열 형식의 응답 형식이 지원textjson_object됩니다.json_schema

예제는 구조적 출력을 사용하여 출력 스키마 적용 을 참조하세요.
다음에서는 failOnError가 지정되고 또한 responseFormat가 설정될 때 무엇이 발생하는지 설명합니다.
  • failOnError => falseresponseFormat을 지정한 경우 함수는 구문 분석된 응답과 오류 상태 문자열을 STRUCT 개체로 반환합니다.
  • responseFormat지정된 JSON 문자열 형식에 따라 다음 응답이 반환됩니다.
    • responseFormat => '{"type": "text"}'경우 응답은 “Here is the response”같은 문자열입니다.
    • responseFormat => '{"type": "json_object"}'경우 응답은 {“key”: “value”}같은 키-값 쌍 JSON 문자열입니다.
    • responseFormat => '{"type": "json_schema", "json_schema"...}'경우 응답은 JSON 문자열입니다.
files (선택 사항) 를 사용하여 files=>content멀티모달 입력 요청에 사용할 파일 및 콘텐츠를 지정합니다. files 는 모델에서 다중 모달 입력에 대해 예상하는 매개 변수 이름이며 content 쿼리에 사용할 이미지 파일의 이진 콘텐츠가 포함된 DataFrame의 열을 참조합니다.
  • 다양한 모드 요청에 필요합니다.
  • 이미지 입력만: JPEG 또는 PNG 지원됩니다. 다중 모드 입력 예제를 참조하세요. 이 예제에서 볼 수 있듯이 content의 출력에서 read_files 열을 files 매개 변수에 지정할 수 있습니다.

예제: 기본 모델 쿼리

엔드포인트를 제공하는 외부 모델을 쿼리하려면 다음을 수행합니다.

> 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."

Databricks Foundation 모델 API에서 지원하는 기본 모델을 쿼리하려면 다음을 수행합니다.

> SELECT *,
  ai_query(
    'databricks-meta-llama-3-3-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

선택적으로, ai_query() 호출을 UDF로 래핑하여 함수 호출을 다음과 같이 수행할 수도 있습니다.

 CREATE FUNCTION correct_grammar(text STRING)
  RETURNS STRING
  RETURN ai_query(
    'databricks-meta-llama-3-3-70b-instruct',
    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;

다중 모드 입력

ai_query 기본적으로 다중 모달 이미지 입력을 지원합니다. 지원되는 Databricks 호스팅 비전 모델에 대한 Foundation 모델 유형을 참조하세요.

지원되는 입력 형식은 다음과 같습니다.

  • JPEG
  • PNG

다음 예제에서는 Multimodal 입력에 대해 Databricks Foundation 모델 API에서 지원하는 기초 모델을 쿼리하는 방법을 보여 줍니다. 이 예제에서는 매개 변수를 files => content 사용하여 이미지 파일 데이터를 에 전달합니다. ai_query

  • files: 모델에서 다중 모달 입력에 대해 예상하는 매개 변수 이름입니다.
  • content: READ_FILES이 반환한 DataFrame에서, 이미지 파일의 이진 콘텐츠를 포함한 열입니다.

> SELECT *, ai_query(
  'databricks-llama-4-maverick',
 'what is this image about?', files => content)
as output FROM READ_FILES("/Volumes/main/multimodal/unstructured/image.jpeg");

Databricks Foundation 모델 API에서 지원하는 기본 모델을 쿼리하여 다중 모드 입력을 쿼리하고 구조적 출력을 지정하려면 다음을 수행합니다.

> SELECT *, ai_query(
  'databricks-llama-4-maverick', 'What is interesting or important about this image?',
    responseFormat => ‘{
      "type": "json_schema",
        "json_schema": {
          "name": "output",
          "schema": {
            "type": "object",
            "properties": {
              "summary": {"type": "string"},
              "num_people": {"type": "integer"},
              "num_animals": {"type": "integer"},
              "interesting_fact": {"type": "string"},
              "possible_context": {"type": "string"}
            }
        },
        "strict": true
      }
    }’,
    files => content
  )
  as output FROM READ_FILES("/Volumes/main/user/volume1/image.jpeg");

예: 기존 ML 모델 쿼리

엔드포인트를 제공하는 사용자 지정 모델 또는 기존 ML 모델을 쿼리하려면 다음을 수행합니다.


> 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
  LIMIT 10

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

고급 시나리오의 예

다음 섹션에서는 오류 처리 또는 사용자 정의 함수에 통합 ai_query 하는 방법과 같은 고급 사용 사례에 대한 예제를 제공합니다.

메시지 배열 전달

다음 예제에서는 를 사용하여 ai_query모델 또는 에이전트 애플리케이션에 메시지 배열을 전달하는 방법을 보여 줍니다.

> SELECT ai_query(
    'custom-llama-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."]}

프롬프트 및 유추 열 연결

프롬프트 및 유추 열을 연결하는 여러 가지 방법이 있습니다(예: ||, CONCAT()또는 format_string()사용).

SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};

Alternatively:

SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};

또는 format_string()사용:

SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};

모델 매개 변수를 전달하여 모델 구성

최대 토큰 및 온도와 같은 특정 매개 변수를 전달하여 모델 동작을 사용자 지정합니다. 다음은 그 예입니다.

SELECT text, ai_query(
    "databricks-meta-llama-3-3-70b-instruct",
    "Please summarize the following article: " || text,
    modelParameters => named_struct('max_tokens', 100, 'temperature', 0.7)
) AS summary
FROM uc_catalog.schema.table;

failOnError 사용하여 오류 처리

failOnError에 대해 ai_query 인수를 사용하여 오류를 처리합니다. 다음 예제에서는 한 행에 오류가 있는 경우 전체 쿼리 실행이 중지되지 않도록 하는 방법을 보여줍니다. 인수를 참조하고 이 인수를 설정하는 방법에 따라 예상되는 동작에 대한 반환합니다.


SELECT text, ai_query(
    "databricks-meta-llama-3-3-70b-instruct",
    "Summarize the given text comprehensively, covering key points and main ideas concisely while retaining relevant details and examples. Ensure clarity and accuracy without unnecessary repetition or omissions: " || text,
failOnError => false
) AS summary
FROM uc_catalog.schema.table;

구조적 출력을 통해 출력 스키마를 강화하다

를 사용하여 responseFormat다운스트림 처리를 더 쉽게 수행하려면 출력이 특정 스키마를 준수하는지 확인합니다. Azure Databricks에서 구조적 출력 을(를) 참조하세요.

다음 예제에서는 DDL 스타일 JSON 문자열 스키마를 적용합니다.

SELECT ai_query(
    "databricks-gpt-oss-20b",
    "Extract research paper details from the following abstract: " || abstract,
    responseFormat => 'STRUCT<research_paper_extraction:STRUCT<title:STRING, authors:ARRAY<STRING>, abstract:STRING, keywords:ARRAY<STRING>>>'
)
FROM research_papers;

또는 JSON 스키마 응답 형식을 사용합니다.

SELECT ai_query(
    "databricks-gpt-oss-20b",
    "Extract research paper details from the following abstract: " || abstract,
    responseFormat => '{
      "type": "json_schema",
      "json_schema": {
        "name": "research_paper_extraction",
        "schema": {
          "type": "object",
          "properties": {
            "title": {"type": "string"},
            "authors": {"type": "array", "items": {"type": "string"}},
            "abstract": {"type": "string"},
            "keywords": {"type": "array", "items": {"type": "string"}}
          }
      },
      "strict": true
    }
  }'
)
FROM research_papers;

예상 출력은 다음과 같습니다.

{ "title": "Understanding AI Functions in Databricks", "authors": ["Alice Smith", "Bob Jones"], "abstract": "This paper explains how AI functions can be integrated into data workflows.", "keywords": ["Databricks", "AI", "LLM"] }

사용자 정의 함수에서 ai_query 사용

UDF에서 ai_query 호출을 래핑하여 다양한 워크플로에서 함수를 쉽게 사용하고 공유할 수 있습니다.

CREATE FUNCTION correct_grammar(text STRING)
  RETURNS STRING
  RETURN ai_query(
    'databricks-meta-llama-3-3-70b-instruct',
    CONCAT('Correct this to standard English:\n', text));

GRANT EXECUTE ON correct_grammar TO ds;

SELECT
    * EXCEPT text,
    correct_grammar(text) AS text
  FROM articles;