Format penggunaan alat ini sudah ketinggalan zaman

Kami sangat menyarankan Anda untuk beralih sesegera mungkin ke struktur penggunaan alat yang telah kami tingkatkan, yang lebih andal dan memungkinkan kinerja berkualitas lebih tinggi, terutama untuk tugas penggunaan alat yang lebih kompleks.

Format penggunaan alat ini tidak dioptimalkan untuk Claude 3 dan dapat menghasilkan kinerja yang lebih buruk dibandingkan dengan format penggunaan alat terbaru kami.

Catatan: Format penggunaan alat baru belum tersedia di Vertex AI atau Amazon Bedrock, tetapi akan segera hadir di platform tersebut.


Cara kerja penggunaan alat warisan

Dengan penggunaan alat warisan, fungsi didefinisikan dalam prompt itu sendiri. Ketika Anda memberikan Claude deskripsi alat dan fungsi yang dapat digunakannya, Claude dapat secara cerdas memutuskan kapan dan bagaimana menggunakan alat tersebut untuk membantu menjawab pertanyaan dan menyelesaikan tugas.

Misalnya, katakanlah Anda memberikan Claude (dalam prompt) sebuah fungsi bernama get_weather(location) yang mengambil cuaca saat ini untuk lokasi tertentu. Jika pengguna kemudian bertanya “Bagaimana cuaca di London sekarang?”, Claude akan mengenali bahwa ia dapat menggunakan fungsi get_weather yang Anda berikan untuk mencari jawabannya.

Di balik layar, ini adalah proses multi-langkah:

  1. Definisi fungsi dan pertanyaan pengguna keduanya diteruskan ke Claude dalam satu prompt
    • Claude tidak hanya membutuhkan alat & deskripsinya untuk berhasil memutuskan apakah akan menggunakan alat tersebut, tetapi kemungkinan juga membutuhkan contoh situasi di mana alat tersebut harus digunakan, tergantung pada kompleksitas kasus penggunaan dan alat.
  2. Claude menilai pertanyaan pengguna dan memutuskan fungsi mana yang akan dipanggil dan dengan argumen apa
  3. Claude membangun panggilan fungsi yang diformat dengan benar
  4. Panggilan fungsi disela melalui kode klien dengan stop_sequence yang jelas, dan fungsi sebenarnya dieksekusi di sisi klien
  5. Hasil fungsi diteruskan kembali ke Claude
  6. Claude menggunakan hasil fungsi untuk merumuskan respons akhirnya kepada pengguna

Teknik ini memungkinkan Claude untuk memanfaatkan pengetahuan dan kemampuan eksternal sambil tetap mempertahankan antarmuka percakapan.


Mendefinisikan fungsi

Fungsi didefinisikan dengan memberikan Claude deskripsi fungsi yang dibungkus dalam tag XML. Deskripsi harus mencakup:

  • Nama fungsi
  • Penjelasan teks biasa tentang apa yang dilakukan fungsi
  • Parameter yang diharapkan, tipe, dan deskripsinya
  • Nilai dan tipe pengembalian
  • Pengecualian apa pun yang dapat diangkat

Berikut adalah contoh definisi fungsi:

XML
<tool_description>
<tool_name>get_weather</tool_name>
<description>
Mengambil cuaca saat ini untuk lokasi yang ditentukan.
Mengembalikan kamus dengan dua bidang:
- temperature: float, suhu saat ini dalam Fahrenheit
- conditions: string, deskripsi singkat tentang kondisi cuaca saat ini
Memunculkan ValueError jika lokasi yang diberikan tidak dapat ditemukan.
</description>
<parameters>
<parameter>
<name>location</name>
<type>string</type>
<description>Kota dan negara bagian, misalnya San Francisco, CA</description>
</parameter>
</parameters>
</tool_description>

Beberapa tips untuk menulis deskripsi fungsi yang baik:

  • Jelas dan ringkas, tetapi berikan detail yang cukup agar Claude memahami kapan fungsi harus digunakan
  • Tentukan tipe parameter dan nilai pengembalian
  • Sebutkan pengecualian relevan apa pun yang dapat diangkat
  • Gunakan deskripsi teks biasa, bukan sintaks kode

Format penggunaan alat warisan

Agar Claude dapat memanggil fungsi, ia harus mengeluarkan blok XML yang diformat dengan sangat spesifik. Formatnya terlihat seperti ini:

XML
<function_calls>
<invoke>
<tool_name>function_name</tool_name>
<parameters>
<param1>value1</param1>
<param2>value2</param2>
</parameters>
</invoke>
</function_calls>

Blok <function_calls> dapat berisi beberapa blok <invoke> jika Claude memanggil lebih dari satu fungsi pada saat yang sama. Setiap <invoke> berisi nama fungsi yang dipanggil dan parameter yang diteruskan.

Anda harus meneruskan </function_calls> ke panggilan API Anda sebagai stop_sequence untuk memastikan bahwa Claude berhenti menghasilkan teks setelah memanggil fungsi.

Setelah blok <function_calls>, dan dengan asumsi Anda memiliki urutan stop yang tepat, Claude akan berhenti menghasilkan dan menunggu hasil fungsi diteruskan kembali dalam blok <function_results> yang terlihat seperti ini:

XML
<function_results>
<result>
<tool_name>function_name</tool_name>
<stdout>
hasil fungsi di sini
</stdout>
</result>
</function_results>

Hasil fungsi harus ditempatkan di dalam tag <stdout>. Jika fungsi memunculkan pengecualian, itu harus dikembalikan seperti:

XML
<function_results>
<error>
pesan kesalahan di sini
</error>
</function_results>

Hasil fungsi lengkap harus diteruskan kembali ke Claude sebagai pesan yang melanjutkan percakapan dari sebelumnya. Setelah menerima hasil fungsi, Claude akan melanjutkan pembuatan untuk memasukkan hasil ke dalam responsnya.


Contoh prompt penggunaan alat warisan

Berikut adalah contoh lengkap prompt yang memberikan Claude dua fungsi dan pertanyaan yang memerlukan penggunaannya:

Konten
SistemDalam lingkungan ini Anda memiliki akses ke seperangkat alat yang dapat Anda gunakan untuk menjawab pertanyaan pengguna.

Anda dapat memanggilnya seperti ini:
<function_calls>
<invoke>
<tool_name>$TOOL_NAME</tool_name>
<parameters>
<$PARAMETER_NAME>$PARAMETER_VALUE</$PARAMETER_NAME>

</parameters>
</invoke>
</function_calls>

Berikut adalah alat yang tersedia:
<tools>
<tool_description>
<tool_name>get_current_stock_price
</tool_name><description>Mendapatkan harga saham saat ini untuk sebuah perusahaan. Mengembalikan float: Harga saham saat ini.
Memunculkan ValueError: jika simbol input tidak valid/tidak dikenal.</description>
<parameters>
<parameter>
<name>symbol</name>
<type>string</type>
<description>Simbol saham perusahaan untuk mendapatkan harganya.</description>
</parameter>
</parameters>
</tool_description>

<tool_description>
<tool_name>get_ticker_symbol</tool_name>
<description>Mendapatkan simbol ticker saham untuk perusahaan yang dicari berdasarkan nama. Mengembalikan str: Simbol ticker untuk saham perusahaan. Memunculkan TickerNotFound: jika tidak ada simbol ticker yang cocok ditemukan.
</description>
<parameters>
<parameter>
<name>company_name</name>
<type>string</type>
<description>Nama perusahaan.</description>
</parameter>
</parameters>
</tool_description></tools>
PenggunaBerapa harga saham General Motors saat ini?

Berikut adalah bagaimana Claude akan merespons:

Konten
Asisten<scratchpad>
Untuk menjawab pertanyaan ini, saya perlu:

1. Mendapatkan simbol ticker untuk General Motors menggunakan fungsi get_ticker_symbol().
2. Menggunakan simbol ticker yang dikembalikan untuk mendapatkan harga saham saat ini menggunakan fungsi get_current_stock_price().</scratchpad>

<function_calls>
<invoke>
<tool_name>get_ticker_symbol</tool_name>
<parameters>
<company_name>General Motors</company_name>
</parameters>
</invoke>
</function_calls>

Claude pertama-tama memanggil get_ticker_symbol untuk mengambil simbol ticker untuk General Motors. Kita dapat mengenali bahwa Claude ingin memanggil fungsi melalui urutan stop </function calls>. Kita mengekstrak data yang relevan dari antara tag XML yang relevan dan menjalankan fungsi atas nama Claude. Kemudian kita meneruskan hasilnya kembali ke Claude dalam tag <function_results>.

Konten
Pengguna<function_results>
<result>
<tool_name>get_ticker_symbol</tool_name>
<stdout>
GM
</stdout>
</result>
</function_results>

Sekarang setelah mengetahui simbol ticker, Claude kemudian akan memutuskan bahwa ia harus memanggil get_current_stock_price dan mendapatkan harga saat ini.

Konten
Asisten<function_calls>
<invoke>
<tool_name>get_current_stock_price</tool_name>
<parameters>
<symbol>GM</symbol>
</parameters>
</invoke>
</function_calls>

Kami juga meneruskan kembali hasil ini.

Konten
Pengguna<function_results>
<result>
<tool_name>get_current_stock_price</tool_name>
<stdout>
38.50
</stdout>
</result>
</function_results>

Dengan seluruh rantai percakapan ini memberikan Claude semua detail yang dibutuhkannya, Claude akan dapat memberikan jawaban kepada pengguna sebagai output akhirnya.

Konten
<answer>
Harga saham General Motors saat ini adalah $38,50.
</answer>

FAQ penggunaan alat warisan

Berapa banyak alat yang dapat saya teruskan ke Claude dalam interaksi tertentu?

Anda dapat mendefinisikan sejumlah alat dan fungsi untuk digunakan Claude, meskipun saat ini kami merekomendasikan agar Anda tidak melebihi 3-5 untuk struktur penggunaan alat warisan ini, tergantung pada kompleksitas kasus penggunaan Anda dan fungsi yang dimaksud.

Apakah Claude memiliki alat bawaan yang diketahuinya?

Tidak. Alat apa pun yang ingin Anda gunakan Claude, Anda harus mendefinisikannya sendiri dalam prompt penggunaan alat. Claude tidak memiliki daftar fungsi & definisi yang telah ditentukan sebelumnya yang bekerja paling baik.

Kapan format penggunaan alat baru akan hadir di Vertex AI atau Amazon Bedrock?

Dalam waktu dekat!