Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
- Panggil model menggunakan kueri yang dikirimkan dan sekumpulan fungsi yang ditentukan dalam parameter
tools
. - Model memutuskan apakah akan memanggil fungsi yang ditentukan atau tidak. Ketika fungsi dipanggil, konten adalah objek JSON string yang mematuhi skema kustom Anda.
- Uraikan string ke JSON dalam kode Anda, dan panggil fungsi Anda dengan argumen yang disediakan jika ada.
- 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)
ataucurrent_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
, danmaxLength
.
- Ini termasuk kata kunci seperti
- 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