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

Kode
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:

Kode
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:

Kode
# 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