Bagikan melalui


Panggilan fungsi di Azure Databricks

Artikel ini menjelaskan panggilan fungsi dan cara menggunakannya sebagai bagian dari alur kerja aplikasi AI generatif Anda. Panggilan Fungsi Databricks kompatibel dengan OpenAI dan hanya tersedia selama penyajian model sebagai bagian dari API Foundation Model dan titik akhir yang melayani model eksternal.

Apa itu panggilan fungsi?

Pemanggilan fungsi menyediakan cara bagi Anda untuk mengontrol output LLM, sehingga menghasilkan respons terstruktur dengan lebih andal. Saat Anda menggunakan panggilan fungsi, Anda menjelaskan fungsi dalam panggilan API dengan menjelaskan argumen fungsi menggunakan skema JSON. LLM itu sendiri tidak memanggil fungsi-fungsi ini, tetapi sebaliknya membuat objek JSON yang dapat digunakan pengguna untuk memanggil fungsi dalam kode mereka.

Untuk panggilan fungsi pada Databricks, urutan dasar langkah-langkahnya adalah sebagai berikut:

  1. Panggil model menggunakan kueri yang dikirimkan dan sekumpulan fungsi yang ditentukan dalam parameter tools.
  2. Model memutuskan apakah akan memanggil fungsi yang ditentukan atau tidak. Ketika fungsi dipanggil, konten adalah objek JSON string yang mematuhi skema kustom Anda.
  3. Uraikan string ke JSON dalam kode Anda, dan panggil fungsi Anda dengan argumen yang disediakan jika ada.
  4. Panggil model lagi dengan menambahkan respons terstruktur sebagai pesan baru. Struktur respons ditentukan oleh fungsi yang sebelumnya Anda sediakan di tools. Dari sini, model meringkas hasil dan mengirim ringkasan tersebut kepada pengguna.

Kapan menggunakan panggilan fungsi

Berikut ini adalah contoh kasus penggunaan untuk panggilan fungsi:

  • Buat asisten yang dapat menjawab pertanyaan dengan memanggil API lain. Misalnya, Anda dapat menentukan fungsi seperti send_email(to: string, body: string) atau current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  • Tentukan dan gunakan panggilan API berdasarkan bahasa alami. Seperti mengambil pernyataan, "Siapa pelanggan teratas saya?" dan membuatnya menjadi panggilan API bernama, get_customers(min_revenue: int, created_before: string, limit: int) dan memanggil API tersebut.

Untuk tugas inferensi batch atau pemrosesan data, seperti mengonversi data yang tidak terstruktur menjadi data terstruktur. Databricks merekomendasikan penggunaan output terstruktur.

Model yang didukung

Tabel berikut mencantumkan model yang didukung dan fitur penyajian model mana yang membuat setiap model tersedia. Lihat Lisensi dan ketentuan pengembang model yang berlaku untuk model ini.

  • Untuk model yang disediakan oleh API Model Foundation, lihat Batas API Model Foundation untuk ketersediaan wilayah.
  • Untuk model yang disediakan oleh model eksternal, lihat ketersediaan wilayah untuk informasi tentang ketersediaan wilayah.

Penting

Mulai 11 Desember 2024, Meta-Llama-3.3-70B-Instruct menggantikan dukungan untuk Meta-Llama-3.1-70B-Instruct di endpoint berbasis token Foundation Model APIs.

Model Dibuat tersedia menggunakan fitur penyediaan model Catatan
Claude-3.7-Sonnet API Model Dasar Didukung pada endpoint bayar per token.
Meta-Llama-3.3-70B-Instruct API Model Dasar Didukung pada beban kerja berbasis token dan beban kerja dengan throughput yang telah ditentukan.
Meta-Llama-3.1-405B-Instruct API Model Dasar Didukung pada beban kerja berbasis token dan beban kerja dengan throughput yang telah ditentukan.
Meta-Llama-3.1-8B-Instruct API Model Dasar Didukung pada beban kerja berbasis token dan beban kerja dengan throughput yang telah ditentukan.
gpt-4o Model eksternal
gpt-4o-2024-08-06 Model eksternal
gpt-4o-2024-05-13 Model eksternal
gpt-4o-mini Model eksternal
claude-3-5-sonnet-terbaru Model eksternal Penyedia model antropik
claude-3-5-haiku-latest Model eksternal Penyedia model antropik
claude-3-5-opus-latest Model eksternal Penyedia model antropik
claude-3-5-sonnet-20241022 Model eksternal Penyedia model antropis. Model ini mendukung panggilan alat menggunakan Penggunaan Komputer (beta).
claude-3-5-haiku-20241022 Model eksternal Penyedia model antropik
claude-3-5-sonnet-20240620 Model eksternal Penyedia model antropik
claude-3-haiku-20240307 Model eksternal Penyedia model antropik
claude-3-opus-20240229 Model eksternal Penyedia model antropik
claude-3-sonnet-20240229 Model eksternal Penyedia model antropik
claude-3-5-sonnet-20241022-v2:0 Model eksternal Penyedia model Bedrock Anthropic. Model ini mendukung pemanggilan fungsi alat menggunakan Penggunaan Komputer (beta).
claude-3-5-haiku-20241022-v1:0 Model eksternal Penyedia model Bedrock Anthropic
claude-3-5-sonnet-20240620-v1:0 Model eksternal Penyedia model Bedrock Anthropic
claude-3-sonnet-20240229-v1:0 Model eksternal Penyedia model Bedrock Anthropic
claude-3-opus-20240229-v1:0 Model eksternal Penyedia model Bedrock Anthropic

Menggunakan panggilan fungsi

Untuk menggunakan panggilan fungsi dengan aplikasi AI generatif Anda, Anda harus menyediakan fungsi parameters dan description.

Perilaku default untuk tool_choice adalah "auto". Ini memungkinkan model memutuskan fungsi mana yang akan dipanggil dan apakah akan memanggilnya.

Anda dapat menyesuaikan perilaku default tergantung pada kasus penggunaan Anda. Berikut ini adalah opsi Anda:

  • Atur tool_choice: "required". Dalam skenario ini, model selalu memanggil satu atau beberapa fungsi. Model memilih fungsi atau fungsi mana yang akan dipanggil.
  • Atur tool_choice: {"type": "function", "function": {"name": "my_function"}}. Dalam skenario ini, model hanya memanggil fungsi tertentu.
  • Setel tool_choice: "none" untuk menonaktifkan panggilan fungsi dan meminta model hanya menghasilkan pesan untuk pengguna.

Berikut ini adalah contoh giliran tunggal menggunakan OpenAI SDK dan parameternya tools . Lihat Tugas Chat untuk detail sintaksis tambahan.

Penting

Selama Pratinjau Umum, pemanggilan fungsi pada Databricks dioptimalkan untuk pemanggilan fungsi satu per satu.

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))

Parameter ini juga mendukung Penggunaan Komputer (beta) untuk model Claude.

Skema JSON

API Model Foundation secara luas mendukung definisi fungsi yang diterima oleh OpenAI. Namun, menggunakan skema JSON yang lebih sederhana untuk definisi panggilan fungsi menghasilkan generasi JSON panggilan fungsi berkualitas lebih tinggi. Untuk mempromosikan pembuatan kualitas yang lebih tinggi, API Model Foundation hanya mendukung subset spesifikasi skema JSON .

Kunci definisi panggilan fungsi berikut tidak didukung:

  • Ekspresi reguler menggunakan pattern.
  • Komposisi dan validasi berlapis atau skema kompleks menggunakan: anyOf, oneOf, allOf, prefixItems, atau $ref.
  • Daftar jenis kecuali untuk kasus khusus [type, “null”] di mana satu jenis dalam daftar adalah jenis JSON yang valid dan yang lainnya "null"

Selain itu, batasan berikut berlaku:

  • Jumlah maksimum kunci yang ditentukan dalam skema JSON adalah 16.
  • API Model Foundation tidak memberlakukan batasan panjang atau ukuran untuk objek dan array.
    • Ini termasuk kata kunci seperti maxProperties, minProperties, dan maxLength.
  • Skema JSON yang sangat berlapis menghasilkan pembuatan kualitas yang lebih rendah. Jika memungkinkan, cobalah meratakan skema JSON untuk hasil yang lebih baik.

Penggunaan token

Injeksi prompt dan teknik lain digunakan untuk meningkatkan kualitas panggilan alat. Melakukannya berdampak pada jumlah token input dan output yang digunakan oleh model, yang pada gilirannya menghasilkan implikasi penagihan. Semakin banyak alat yang Anda gunakan, semakin banyak token input Anda meningkat.

Batasan

Berikut ini adalah batasan untuk pemanggilan fungsi selama Pratinjau Umum:

  • Solusi pemanggilan fungsi saat ini dioptimalkan untuk panggilan fungsi yang dilakukan dalam satu giliran. Fungsi pemanggilan berbasis multi-turn didukung selama masa pratinjau, tetapi masih dalam tahap pengembangan.
  • Panggilan fungsi paralel tidak didukung.
  • Jumlah maksimum fungsi yang dapat ditentukan dalam tools adalah 32 fungsi.
  • Untuk dukungan throughput yang disediakan, panggilan fungsi hanya didukung pada titik akhir baru. Anda tidak dapat menambahkan pemanggilan fungsi ke endpoint yang sudah dibuat sebelumnya.

Contoh buku catatan

Lihat buku catatan berikut untuk contoh panggilan fungsi terperinci

Buku catatan contoh panggilan fungsi

Ambil buku catatan