다음을 통해 공유


Azure Databricks에서 함수 호출

Important

이 기능은 공개 미리 보기제공되며 기본 모델 API 토큰당 종량제 엔드포인트에서만 지원됩니다.

이 문서에서는 함수 호출 및 이를 생성 AI 애플리케이션 워크플로의 일부로 사용하는 방법을 설명합니다. Databricks 함수 호출은 OpenAI와 호환되며 파운데이션 모델 API일부로 사용되는 모델 중에만 사용할 수 있습니다.

함수 호출이란?

함수 호출은 LLM의 출력을 제어하여 구조화된 응답을 보다 안정적으로 생성하는 방법을 제공합니다. 함수 호출을 사용하는 경우 JSON 스키마를 사용하여 함수 인수를 설명하여 API 호출의 함수를 설명합니다. LLM 자체는 이러한 함수를 호출하지 않고 사용자가 코드에서 함수를 호출하는 데 사용할 수 있는 JSON 개체를 만듭니다.

Databricks에서 함수 호출의 경우 단계의 기본 시퀀스는 다음과 같습니다.

  1. 제출된 쿼리 및 매개 변수에 정의된 tools 함수 집합을 사용하여 모델을 호출합니다.
  2. 모델은 정의된 함수를 호출할지 여부를 결정합니다. 함수가 호출되면 콘텐츠는 사용자 지정 스키마를 준수하는 문자열의 JSON 개체입니다.
  3. 코드에서 문자열을 JSON으로 구문 분석하고 제공된 인수가 있는 경우 함수를 호출합니다.
  4. 구조화된 응답을 새 메시지로 추가하여 모델을 다시 호출합니다. 응답의 구조는 이전에 제공한 함수에 의해 정의됩니다 tools. 여기에서 모델은 결과를 요약하고 해당 요약을 사용자에게 보냅니다.

함수 호출을 사용하는 경우

다음은 함수 호출에 대한 예제 사용 사례입니다.

  • 다른 API를 호출하여 질문에 대답할 수 있는 도우미를 만듭니다. 예를 들어 다음과 같은 send_email(to: string, body: string) 함수를 정의할 current_weather(location: string, unit: 'celsius' | 'fahrenheit')수 있습니다.
  • 자연어를 기반으로 API 호출을 정의하고 사용합니다. "내 최고 고객은 누구인가?" 라는 API 호출 get_customers(min_revenue: int, created_before: string, limit: int) 로 만들고 해당 API를 호출합니다.
  • 구조화되지 않은 데이터를 구조화된 데이터로 변환합니다. 제품 검토 피드백을 부정, 긍정 또는 중립으로 식별하고 분류하는 것과 같습니다.

지원되는 모델

Databricks에서 함수 호출은 다음 기본 모델 API 토큰당 종량제 모델을 지원합니다.

Important

DBRX는 Databricks 오픈 모델 라이선스, Copyright © Databricks, Inc.에 따라 제공되며 적용됩니다. 모든 권한이 예약되어 있습니다. 고객은 Databricks 허용 가능한 사용 정책을 포함하여 해당 모델 라이선스를 준수할 책임이 있습니다.

Meta Llama 3.1은 LLAMA 3.1 커뮤니티 라이선스, Copyright © Meta Platforms, Inc.에 따라 라이선스가 부여됩니다. All Rights Reserved. 고객은 해당 모델 라이선스를 준수할 책임이 있습니다.

함수 호출 사용

생성 AI 애플리케이션에서 함수 호출을 사용하려면 함수 parameters 와 을 description제공해야 합니다.

기본 동작 tool_choice 은 .입니다 "auto". 이를 통해 모델은 호출할 함수와 호출 여부를 결정할 수 있습니다.

사용 사례에 따라 기본 동작을 사용자 지정할 수 있습니다. 옵션은 다음과 같습니다.

  • tool_choice: "required"을 설정합니다. 이 시나리오에서 모델은 항상 하나 이상의 함수를 호출합니다. 모델은 호출할 함수 또는 함수를 선택합니다.
  • tool_choice: {"type": "function", "function": {"name": "my_function"}}을 설정합니다. 이 시나리오에서 모델은 특정 함수만 호출합니다.
  • 함수 호출을 사용하지 않도록 설정하고 모델에서 사용자 관련 메시지만 생성하도록 설정합니다 tool_choice: "none" .

다음은 OpenAI SDK 및 해당 tools 매개 변수를 사용하는 단일 턴 예제입니다. 추가 구문 세부 정보는 채팅 작업을 참조하세요.

Important

공개 미리 보기 중에 Databricks에 대한 함수 호출은 단일 턴 함수 호출에 최적화됩니다.

import os
import json
from openai import OpenAI

DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url=DATABRICKS_BASE_URL
  )

tools = [
  {
    "type": "function",
    "function": {
      "name": "get_current_weather",
      "description": "Get the current weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": [
              "celsius",
              "fahrenheit"
            ]
          }
        }
      }
    }
  }
]

messages = [{"role": "user", "content": "What is the current temperature of Chicago?"}]

response = client.chat.completions.create(
    model="databricks-meta-llama-3-70b-instruct",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))

JSON 스키마

파운데이션 모델 API는 OpenAI에서 허용하는 함수 정의를 광범위하게 지원합니다. 그러나 함수 호출 정의에 더 간단한 JSON 스키마를 사용하면 고품질 함수 호출 JSON 생성이 발생합니다. 더 높은 품질의 생성을 촉진하기 위해 Foundation Model API는 JSON 스키마 사양의 하위 집합만 지원합니다.

다음 함수 호출 정의 키는 지원되지 않습니다.

  • 를 사용하는 pattern정규식
  • 복합 중첩 또는 스키마 컴퍼지션 및 유효성 검사 사용: anyOf, oneOf, allOf, prefixItems또는 $ref.
  • 목록의 한 형식이 유효한 JSON 형식이고 다른 형식이 인 특수한 경우 [type, “null”] 를 제외한 형식 목록 "null"

또한 다음과 같은 제한 사항이 적용됩니다.

  • JSON 스키마에 지정된 최대 키 수는 .입니다 16.
  • 파운데이션 모델 API는 개체 및 배열에 대한 길이 또는 크기 제약 조건을 적용하지 않습니다.
    • 여기에는 , minPropertiesmaxLength. 같은 maxProperties키워드가 포함됩니다.
  • 중첩된 JSON 스키마는 품질이 저하됩니다. 가능한 경우 더 나은 결과를 위해 JSON 스키마를 평면화해 봅니다.

토큰 사용량

프롬프트 주입 및 기타 기술은 도구 호출의 품질을 향상시키는 데 사용됩니다. 이렇게 하면 모델에서 사용하는 입력 및 출력 토큰의 수에 영향을 미치므로 청구에 영향을 줍니다. 사용하는 도구가 많을수록 입력 토큰이 늘어나게 됩니다.

제한 사항

다음은 공개 미리 보기 중에 함수 호출에 대한 제한 사항입니다.

  • 프로비전된 처리량 엔드포인트에서 함수 호출은 Foundation Model API에서 지원되지 않습니다.
  • 현재 함수 호출 솔루션은 단일 턴 함수 호출에 최적화되어 있습니다. 다중 턴 함수 호출은 미리 보기 중에 지원되지만 개발 중입니다.
  • 병렬 함수 호출은 지원되지 않습니다.
  • 정의 tools 할 수 있는 최대 함수 수는 32개입니다.

Notebook 예제

자세한 함수 호출 예제는 다음 Notebook을 참조하세요.

함수 호출 예제 Notebook

전자 필기장 가져오기