Sdílet prostřednictvím


Volání funkcí v Azure Databricks

Důležité

Tato funkce je ve verzi Public Preview a podporuje se v těchto verzích:

  • Rozhraní API základního modelu s platbou podle počtu tokenů
  • Zajištěná propustnost API základního modelu
  • Obsluha koncových bodů, které obsluhují externí modely

Tento článek popisuje volání funkcí a jeho použití jako součást pracovních postupů generující aplikace AI. Volání funkce Databricks je kompatibilní s OpenAI a je k dispozici pouze během poskytování modelu jako součást Foundation Model APIs a koncových bodů, které poskytují externí modely .

Co znamená volání funkce?

Volání funkcí poskytuje způsob, jak řídit výstup LLM, takže generují strukturované odpovědi spolehlivěji. Při použití volání funkce popisujete funkce ve volání rozhraní API popisováním argumentů funkce pomocí schématu JSON. SAMOTNÝ LLM tyto funkce nevolá, ale vytvoří objekt JSON, který uživatelé mohou použít k volání funkcí ve svém kódu.

Pro volání funkce v Databricks je základní posloupnost kroků následující:

  1. Volání modelu pomocí odeslaného dotazu a sady funkcí definovaných v parametru tools
  2. Model se rozhodne, jestli se mají nebo nevolat definované funkce. Při zavolání funkce je obsah objektem JSON řetězců, které odpovídají vašemu vlastnímu schématu.
  3. Parsujte řetězce do formátu JSON v kódu a volejte funkci s zadanými argumenty, pokud existují.
  4. Znovu zavolejte model tak, že připojíte strukturovanou odpověď jako novou zprávu. Struktura odpovědi je definována funkcemi, které jste zadali dříve v tools. Odsud model shrnuje výsledky a odesílá tento souhrn uživateli.

Kdy použít volání funkce

Následuje příklad případů použití pro volání funkce:

  • Vytvářejte asistenty, kteří můžou odpovídat na otázky voláním jiných rozhraní API. Můžete například definovat funkce jako send_email(to: string, body: string) nebo current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  • Definujte a používejte volání rozhraní API na základě přirozeného jazyka. Líbí se vám prohlášení "Kdo jsou mými hlavními zákazníky?". a vytvoří ho do volání rozhraní API s názvem get_customers(min_revenue: int, created_before: string, limit: int) a zavoláním daného rozhraní API.

Pro dávkové odvozování nebo úlohy zpracování dat, jako je převod nestrukturovaných dat na strukturovaná data. Databricks doporučuje používat strukturované výstupy.

Podporované modely

Následující tabulka uvádí podporované modely a funkce obsluhy modelů, které zpřístupňují jednotlivé modely.

  • U modelů dostupných rozhraními API pro základní modely najdete v tématu Omezení rozhraní API modelu foundation pro dostupnost oblastí.
  • U modelů dostupných externími modely najdete v tématu Dostupnost oblastí pro dostupnost oblastí.

Důležité

Od 11. prosince 2024 nahrazuje Meta-Llama-3.3-70B-Instruct podporu pro Meta-Llama-3.1-70B-Instruct v rozhraních Foundation Model APIs na koncových bodech s platbou za token.

Důležité

Meta Llama 3.3 má licenci na LLAMA 3.3 Community License, Copyright © Meta Platforms, Inc. Všechna práva vyhrazena. Zákazníci zodpovídají za zajištění dodržování podmínek této licence a Zásady přijatelného použití Llama 3.3.

Meta Llama 3.1 je licencovaný pod licencí LLAMA 3.1 Community License, Copyright © Meta Platforms, Inc. Všechna práva vyhrazena. Zákazníci zodpovídají za zajištění dodržování předpisů s příslušnými licencemi modelu.

Model Zpřístupněno pomocí funkce obsluhy modelů Notes
Meta-Llama-3.3-70B-Instruct Rozhraní API základního modelu Podporuje se u úloh s průběžnými platbami a zřízenou propustností.
Meta-Llama-3.1-405B-Instruct Rozhraní API základního modelu Podporuje se u úloh s průběžnými platbami a zřízenou propustností.
Meta-Llama-3.1-8B-Instruct Rozhraní API základního modelu Podporuje se pouze u úloh se zřízenou propustností.
gpt-4o Externí modely
gpt-4o-2024-08-06 Externí modely
gpt-4o-2024-05-13 Externí modely
gpt-4o-mini Externí modely
claude-3-5-sonnet-latest Externí modely Poskytovatel modelu Anthropic
claude-3-5-haiku-latest Externí modely Poskytovatel modelu Anthropic
claude-3-5-opus-nejnovější Externí modely Poskytovatel modelu Anthropic
claude-3-5-sonnet-20241022 Externí modely Poskytovatel modelu Anthropic. Tento model podporuje volání nástrojů pomocí Počítačové použití (beta).
claude-3-5-haiku-20241022 Externí modely Poskytovatel modelu Anthropic
claude-3-5-sonnet-20240620 Externí modely Poskytovatel modelu Anthropic
claude-3-haiku-20240307 Externí modely Poskytovatel modelu Anthropic
claude-3-opus-20240229 Externí modely Poskytovatel modelu Anthropic
claude-3-sonnet-20240229 Externí modely Poskytovatel modelu Anthropic
claude-3-5-sonnet-20241022-v2:0 Externí modely Poskytovatel modelu Bedrock Anthropic Tento model podporuje volání nástrojů pomocí Počítačové použití (beta).
claude-3-5-haiku-20241022-v1:0 Externí modely Poskytovatel modelů Bedrock Anthropic
claude-3-5-sonnet-20240620-v1:0 Externí modely Poskytovatel modelu Bedrock Anthropic
claude-3-sonnet-20240229-v1:0 Externí modely Poskytovatel modelu Bedrock Anthropic
claude-3-opus-20240229-v1:0 Externí modely Poskytovatel modelu Bedrock Anthropic

Použití volání funkce

Pokud chcete používat volání funkcí s aplikací generující umělé inteligence, musíte zadat funkci parameters a funkci description.

Výchozí chování tool_choice je "auto". Model tak rozhodne, které funkce se mají volat a jestli se mají volat.

Výchozí chování můžete přizpůsobit v závislosti na vašem případu použití. Toto jsou vaše možnosti:

  • Nastavte tool_choice: "required". V tomto scénáři model vždy volá jednu nebo více funkcí. Model vybere, kterou funkci nebo funkce se mají volat.
  • Nastavte tool_choice: {"type": "function", "function": {"name": "my_function"}}. V tomto scénáři model volá pouze konkrétní funkci.
  • Nastavte tool_choice: "none" tak, aby se zakázalo volání funkcí a model vygeneroval pouze zprávu zobrazenou uživatelem.

Následuje příklad jednoho turnu pomocí sady OpenAI SDK a jeho parametru tools . Další podrobnosti o syntaxi najdete v úloze chatu.

Důležité

Během verze Public Preview je volání funkce v Databricks optimalizované pro volání funkce s jedním turn.

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-3-70b-instruct",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

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

Tento parametr také podporuje Computer Use (beta) pro modely poskytované Anthropic a Amazon Bedrock pro Anthropic. Pro nástroje specifické pro Anthropic, včetně použití počítače, použijte následující syntaxi k volání nástroje:


"tools": [
  {
    "type": # Specify tool type here,
    "function": {
      # Required parameters for the tool type
    }
  }
]

Schéma JSON

Rozhraní API základního modelu široce podporují definice funkcí přijaté openAI. Použití jednoduššího schématu JSON pro definice volání funkcí ale vede k vytvoření kódu JSON s vyšší kvalitou volání funkce. Aby bylo možné zvýšit úroveň generování kvality, rozhraní API modelu Foundation podporují pouze podmnožinu specifikací schématu JSON .

Následující klíče definic volání funkce nejsou podporovány:

  • Regulární výrazy používající pattern.
  • Složité vnořené složení nebo ověřování schématu pomocí: anyOf, oneOf, allOf, prefixItemsnebo $ref.
  • Seznamy typů s výjimkou speciálních případů [type, “null”], kdy je jeden typ v seznamu platným typem JSON a druhý typ je "null"

Platí také následující omezení:

  • Maximální počet klíčů zadaných ve schématu JSON je 16.
  • Rozhraní API základního modelu nevynucují omezení délky nebo velikosti objektů a polí.
    • To zahrnuje klíčová slova jako maxProperties, minPropertiesa maxLength.
  • Silně vnořené schémata JSON vedou ke generování nižší kvality. Pokud je to možné, zkuste zploštět schéma JSON, aby se zlepšily výsledky.

Využití tokenů

Injektáž výzvy a další techniky se používají ke zvýšení kvality volání nástrojů. To má vliv na počet vstupních a výstupních tokenů spotřebovaných modelem, což zase vede k důsledkům fakturace. Čím více nástrojů použijete, tím více se zvýší počet vstupních tokenů.

Omezení

Toto jsou omezení pro volání funkcí během verze Public Preview:

  • Aktuální řešení volání funkcí je optimalizované pro volání funkce s jedním otáčením. Volání více funkcí je podporováno během verze Preview, ale probíhá ve vývoji.
  • Paralelní volání funkcí není podporováno.
  • Maximální počet funkcí, které lze definovat, tools je 32 funkcí.
  • Pro podporu zřízené propustnosti se volání funkcí podporuje jenom na nových koncových bodech. Do dříve vytvořených koncových bodů není možné přidat volání funkce.

Příklad poznámkového bloku

Podrobné příklady volání funkcí najdete v následujícím poznámkovém bloku.

Ukázkový poznámkový blok volání funkcí

Získej poznámkový blok