Bagikan melalui


Panggilan fungsi di Azure Databricks

Penting

Fitur ini ada di Pratinjau Umum dan hanya didukung pada API Model Foundation bayar per token atau titik akhir throughput yang disediakan.

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 model yang berfungsi sebagai bagian dari API Model Foundation.

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 tools parameter .
  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.
  • Konversikan data yang tidak terstruktur menjadi data terstruktur. Seperti mengidentifikasi dan mengklasifikasikan umpan balik ulasan produk sebagai negatif, positif, atau netral.

Model yang didukung

Penting

DBRX disediakan di bawah dan tunduk pada Lisensi Model Terbuka Databricks, Hak Cipta © Databricks, Inc. Hak cipta dilindungi undang-undang. Pelanggan bertanggung jawab untuk memastikan kepatuhan terhadap lisensi model yang berlaku, termasuk kebijakan Penggunaan yang Dapat Diterima Databricks.

Meta Llama 3.1 dilisensikan berdasarkan LISENSI KOMUNITAS LLAMA 3.1, Platform Meta Hak Cipta ©, Inc. Hak Cipta Dilindungi Undang-Undang. Pelanggan bertanggung jawab untuk memastikan kepatuhan terhadap lisensi model yang berlaku.

Pemanggilan fungsi pada Databricks mendukung model API Model Foundation berikut pada beban kerja bayar per token dan throughput yang disediakan:

Lihat Batas API Model Fondasi untuk ketersediaan wilayah.

Panggilan fungsi pada Databricks hanya mendukung hal berikut pada beban kerja throughput yang disediakan:

Menggunakan pemanggilan 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:

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

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

Penting

Selama Pratinjau Umum, panggilan fungsi pada Databricks dioptimalkan untuk panggilan fungsi giliran tunggal.

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

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

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 fungsi kualitas yang lebih tinggi memanggil generasi JSON. 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, allOfprefixItems, atau $ref.
  • Daftar jenis kecuali untuk kasus [type, “null”] khusus di mana satu jenis dalam daftar adalah jenis JSON yang valid dan yang lainnya adalah "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 akan 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 panggilan fungsi selama Pratinjau Umum:

  • Solusi panggilan fungsi saat ini dioptimalkan untuk panggilan fungsi giliran tunggal. Panggilan fungsi multi-giliran didukung selama pratinjau, tetapi sedang dalam pengembangan.
    • DBRX Instruct dan Meta Llama 3.1 8B Menginstruksikan model tidak mendukung panggilan fungsi multi-giliran.
  • 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 panggilan fungsi ke titik akhir yang dibuat sebelumnya.

Contoh buku catatan

Lihat buku catatan berikut untuk contoh panggilan fungsi terperinci

Buku catatan contoh panggilan fungsi

Dapatkan buku catatan