Pemanggilan Fungsi(Function Calling)
Pemanggilan Fungsi memungkinkan model memilih dan memanggil fungsi alat yang telah Anda definisikan secara otomatis sesuai kebutuhan pengguna, untuk menjalankan pencarian data, panggilan API, eksekusi tugas, dan kemampuan lainnya.
Konsep Dasar#
Alur lengkap Pemanggilan Fungsi:
- Definisikan alat — jelaskan fungsi dan parameter yang tersedia di dalam permintaan
- Keputusan model — model menentukan apakah perlu memanggil alat
- Kembalikan panggilan — model mengembalikan nama fungsi dan parameter
- Jalankan fungsi — Anda menjalankan fungsi dan memperoleh hasil
- Lanjutkan percakapan — kirim hasil kembali ke model untuk menghasilkan jawaban akhir
Protokol OpenAI#
Python
from openai import OpenAI
import json
client = OpenAI(
base_url="https://as.apinoma.com/v1",
api_key="<APINOMA_API_KEY_ANDA>"
)
# 1. Definisikan alat
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Mengambil informasi cuaca real-time untuk kota tertentu",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Nama kota, misalnya: Jakarta, Surabaya"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Satuan suhu"
}
},
"required": ["city"]
}
}
}]
# 2. Kirim permintaan
messages = [{"role": "user", "content": "Bagaimana cuaca di Jakarta hari ini?"}]
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
# 3. Tangani panggilan alat
if message.tool_calls:
for tool_call in message.tool_calls:
args = json.loads(tool_call.function.arguments)
# 4. Jalankan fungsi Anda
result = get_weather(args["city"]) # Implementasi Anda sendiri
# 5. Kirim hasil kembali ke model
messages.append(message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result)
})
# Ambil respons akhir
final = client.chat.completions.create(
model="openai/gpt-4o",
messages=messages,
tools=tools
)
print(final.choices[0].message.content)TypeScript
Protokol Anthropic#
Anthropic menggunakan parameter `tools`, dengan format yang sedikit berbeda:
import anthropic
client = anthropic.Anthropic(
base_url="https://as.apinoma.com/anthropic",
api_key="<APINOMA_API_KEY_ANDA>"
)
response = client.messages.create(
model="anthropic/claude-sonnet-4.6",
max_tokens=1024,
tools=[{
"name": "get_weather",
"description": "Mengambil informasi cuaca real-time untuk kota tertentu",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Nama kota"}
},
"required": ["city"]
}
}],
messages=[{"role": "user", "content": "Bagaimana cuaca di Jakarta hari ini?"}]
)
# Tangani blok konten tool_use
for block in response.content:
if block.type == "tool_use":
print(f"Memanggil alat: {block.name}, parameter: {block.input}")Pemanggilan Fungsi Paralel#
Model dapat mengembalikan beberapa panggilan alat dalam satu respons; Anda sebaiknya menjalankannya secara paralel:
# Model dapat meminta beberapa panggilan alat sekaligus
if message.tool_calls:
# Jalankan semua panggilan alat secara paralel
import asyncio
async def execute_tools(tool_calls):
tasks = []
for tc in tool_calls:
args = json.loads(tc.function.arguments)
tasks.append(execute_function(tc.function.name, args))
return await asyncio.gather(*tasks)Parameter tool_choice#
Nilai
Keterangan
`"auto"`
Model otomatis memutuskan apakah akan memanggil alat (default)
`"none"`
Larang pemanggilan alat
`"required"`
Paksa pemanggilan alat
`{"type": "function", "function": {"name": "xxx"}}`
Paksa pemanggilan alat tertentu
Model yang Didukung#
Model berikut mendukung Function Calling:
- OpenAI: `gpt-4o`、`gpt-4o-mini`、`o1`、`o3-mini`
- Anthropic: `claude-opus-4`、`claude-sonnet-4`、`claude-3-5-haiku`
- Google: `gemini-pro-compatible-pro-preview`、`gemini-pro-compatible-flash-lite-preview`、`gemini-3-pro-preview`
- Model Tiongkok: `deepseek-chat`, `qwen-max`, `glm-4`
Terakhir diperbarui pada 23 Juni 2026