GPT-6.1 Sol are now live on CometAPI →
ai-model/Riset CometAPI

Cara Membangun Agen AI dengan Grok 4.7: Python, Tool Calling, dan Fallback Multi-Model

Bangun sebuah agen AI Grok 4.7 di Python dengan pemanggilan alat, eksekusi berbatas, dan fallback yang dikelola aplikasi lintas GPT, Claude, Gemini, dan DeepSeek

CometAPI
Bobby SpencerTim riset model AI dan API
Diperbarui Oct 4, 2026 11 menit baca
Cara Membangun Agen AI dengan Grok 4.7: Python, Tool Calling, dan Fallback Multi-Model
Gunakan pola ini

Lakukan API call pertama.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Jika Anda ingin membangun satu aplikasi AI dengan GPT, Claude, Gemini, DeepSeek, dan Grok, gunakan API terpadu untuk jalur permintaan umum dan simpan kebijakan perutean di dalam aplikasi Anda. CometAPI menyediakan base URL yang kompatibel dengan OpenAI dan katalog model bersama, sehingga layanan Python dapat memanggil berbagai ID model melalui satu klien. Kode Anda tetap menentukan model mana yang berjalan, alat mana yang diizinkan, dan kapan fallback aman.

Tutorial ini membangun agen Grok 4.7 yang dapat meminta dua alat bisnis hanya-baca, menolak alat yang tidak dikenal dan argumen yang salah bentuk sebelum eksekusi, serta beralih ke model lain yang telah diuji kontrak hanya setelah kegagalan sementara tertentu. Tujuannya bukan sistem otonom ajaib. Ini adalah loop kecil yang dapat diperiksa, diuji, dan dioperasikan di produksi.

Apa yang Akan Anda Bangun

Agen memiliki lima bagian eksplisit:

  1. One CometAPI client. OpenAI Python SDK menggunakan base URL CometAPI seperti ditunjukkan pada pengaturan di bawah.
  2. Grok 4.7 sebagai model utama. ID model CometAPI saat ini adalah grok-4.7.
  3. Registri alat. Model boleh mengusulkan panggilan fungsi, tetapi hanya kode aplikasi yang dapat mengeksekusi fungsi yang ada di allowlist.
  4. Loop agen berbatas. Loop berhenti setelah jumlah giliran model yang tetap alih-alih berjalan tanpa batas.
  5. Kebijakan fallback berurutan. ID model GPT, Claude, Gemini, atau DeepSeek yang kompatibel dicoba hanya setelah kegagalan model/API yang dapat diulang tertentu.

Grok 4.7 mendukung function calling, dan CometAPI saat ini mendokumentasikan rute /v1/chat/completions dan /v1/responses untuk model tersebut. Tutorial ini menggunakan Chat Completions karena tools yang kompatibel dengan OpenAI, panggilan alat oleh asisten, dan pesan hasil tool yang cocok memetakan langsung ke loop Python yang ringkas dan dapat diperiksa. Kompatibilitas transport tidak membuktikan kesetaraan fitur di setiap model, jadi setiap fallback yang dikonfigurasi harus lulus tes kontrak yang sama sebelum masuk produksi.

Keadaan Penalaran dalam Agen Grok 4.7 Multi-Giliran

Grok 4.7 menerima low, medium, high, atau xhigh upaya penalaran, dengan high sebagai default. Pada xAI Responses API, setiap respons Grok 4.7 menyertakan reasoning.encrypted_content; loop multi-giliran yang dikelola klien sebaiknya mengirimkan kembali item penalaran yang dikembalikan tanpa perubahan pada permintaan berikutnya. Loop panjang juga dapat menggunakan context compaction: pertahankan item kompak yang dikembalikan sebagai state opak dan tambahkan giliran baru setelahnya. Karena ini adalah field respons spesifik penyedia yang stateful, verifikasi bahwa rute CometAPI yang dipilih mengembalikannya end-to-end sebelum menjadikannya dependensi produksi.

Arsitektur Agen: Model Mengusulkan, Aplikasi Anda Memutuskan

Alur pemanggilan alat yang aman sederhana:

Permintaan pengguna → respons model → validasi panggilan alat → eksekusi alat yang diizinkan → lampirkan hasil alat → respons model

Model tidak pernah menerima kredensial database dan tidak pernah mengeksekusi Python secara langsung. Model menghasilkan permintaan terstruktur seperti “panggil get_order_status dengan ID pesanan ini.” Aplikasi Anda memeriksa nama alat, mengurai argumen, menerapkan otorisasi dan aturan bisnis, menjalankan fungsi, dan mengembalikan hasil terserialisasi.

Pemisahan ini lebih penting daripada pilihan model. Model fallback harus mewarisi batas alat yang sama—bukan yang lebih luas—dan hasil alat harus diperlakukan sebagai data tidak tepercaya ketika berisi konten eksternal.

Cara Membangun Agen AI Grok 4.7 dengan Python

Langkah 1: Konfigurasikan OpenAI Python SDK untuk CometAPI

Instal OpenAI SDK:

pip install openai

Setel konfigurasi melalui variabel lingkungan:

export COMETAPI_KEY="your-cometapi-key"
export PRIMARY_MODEL="grok-4.7"
export FALLBACK_MODEL_1="your-compatible-gpt-model-id"
export FALLBACK_MODEL_2="your-compatible-claude-model-id"
export FALLBACK_MODEL_3="your-compatible-gemini-model-id"
export FALLBACK_MODEL_4="your-compatible-deepseek-model-id"

Tutorial ini menggunakan Chat Completions karena panggilan alat asisten yang eksplisit dan pesan hasil alat yang cocok membuat alur kontrol mudah diperiksa dalam contoh Python yang ringkas. Untuk loop stateful yang lebih panjang, evaluasi Responses API seperti dijelaskan di atas. Juga, jangan menyalin ID model lama dari sebuah blog ke produksi: ambil katalog publik CometAPI GET /api/models saat deployment atau startup, kemudian konfirmasikan kapabilitas dan harga di direktori model.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1",
    max_retries=0,
    timeout=30.0,
)

Timeout eksplisit dan retry SDK yang dinonaktifkan adalah keputusan yang disengaja. Aplikasi akan mengklasifikasikan kegagalan dan memutuskan apakah akan mengulang permintaan atau pindah ke model berikutnya. Retry tersembunyi membuat latensi, efek samping yang terduplikasi, dan perilaku fallback lebih sulit dipahami.

Langkah 2: Definisikan Alat yang Sempit dan Hanya-Baca Terlebih Dahulu

Mulailah dengan alat yang membaca data alih-alih mengubahnya. Definisi berikut memungkinkan agen memeriksa pesanan dan melihat inventaris. Implementasinya mengembalikan data demo; ganti dengan panggilan terautentikasi ke layanan Anda sendiri.

import json

TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "get_order_status",
            "description": "Read the current status of one order.",
            "parameters": {
                "type": "object",
                "properties": {
                    "order_id": {"type": "string"}
                },
                "required": ["order_id"],
                "additionalProperties": False,
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "check_inventory",
            "description": "Read available inventory for one SKU.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sku": {"type": "string"}
                },
                "required": ["sku"],
                "additionalProperties": False,
            },
        },
    },
]

def get_order_status(order_id: str) -> dict:
    # Replace this demo with an authenticated, read-only service call.
    return {"order_id": order_id, "status": "in_transit"}

def check_inventory(sku: str) -> dict:
    # Replace this demo with an authenticated, read-only service call.
    return {"sku": sku, "available_units": 12}

TOOL_REGISTRY = {
    "get_order_status": get_order_status,
    "check_inventory": check_inventory,
}

Skema JSON meningkatkan bentuk permintaan, tetapi itu bukan otorisasi. Validasi panjang dan format argumen, konfirmasikan bahwa pengguna saat ini boleh mengakses pesanan atau SKU yang diminta, dan batasi ukuran setiap hasil alat sebelum mengembalikannya ke model.

Langkah 3: Tambahkan Kebijakan Fallback Multi-Model yang Sempit

Fallback seharusnya memulihkan dari kegagalan rute sementara, bukan menyembunyikan permintaan yang rusak. Panduan fallback resmi CometAPI merekomendasikan pindah ke rute yang dikonfigurasi berikutnya untuk kesalahan koneksi, timeout, HTTP 408, HTTP 429, dan respons 5xx sementara. Kredensial tidak valid, parameter yang tidak didukung, dan permintaan tidak valid harus gagal segera.

from openai import APIConnectionError, APIStatusError, APITimeoutError

def configured_models() -> list[str]:
    names = [
        os.getenv("PRIMARY_MODEL", "grok-4.7"),
        os.getenv("FALLBACK_MODEL_1"),
        os.getenv("FALLBACK_MODEL_2"),
        os.getenv("FALLBACK_MODEL_3"),
        os.getenv("FALLBACK_MODEL_4"),
    ]
    return [name for name in names if name]

def is_retryable(error: Exception) -> bool:
    if isinstance(error, (APIConnectionError, APITimeoutError)):
        return True
    if isinstance(error, APIStatusError):
        return error.status_code in {408, 429} or error.status_code >= 500
    return False

def complete_with_fallback(messages: list[dict], tools: list[dict]):
    models = configured_models()
    last_error = None

    for index, model in enumerate(models):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages,
                tools=tools,
                tool_choice="auto",
            )
            return response, model
        except Exception as error:
            last_error = error
            final_route = index == len(models) - 1
            if final_route or not is_retryable(error):
                raise

    raise RuntimeError("No configured model completed the request") from last_error

Daftar model adalah konfigurasi, bukan peringkat kualitas. Pilih fallback yang mendukung skema alat, peran pesan, modalitas input, kebutuhan konteks, dan perilaku respons yang sama seperti yang dibutuhkan agen ini. Catat rute yang dipilih dan kegagalan yang menyebabkan setiap transisi.

Langkah 4: Jalankan Loop Agen Grok 4.7 yang Berbatas

Loop di bawah ini mengirim percakapan, mengeksekusi setiap panggilan alat yang diizinkan, menambahkan hasil dengan tool_call_id yang cocok, dan meminta model terpilih untuk menyelesaikan jawaban.

def execute_tool_call(tool_call) -> str:
    name = tool_call.function.name

    if name not in TOOL_REGISTRY:
        return json.dumps({"error": f"Tool not allowed: {name}"})

    try:
        arguments = json.loads(tool_call.function.arguments)
        result = TOOL_REGISTRY[name](**arguments)
        return json.dumps(result)
    except (json.JSONDecodeError, TypeError, ValueError) as error:
        return json.dumps({"error": f"Invalid tool arguments: {error}"})

def run_agent(user_text: str, max_turns: int = 4) -> dict:
    messages = [
        {
            "role": "system",
            "content": (
                "You are a support agent. Use tools only when needed. "
                "Never invent order or inventory data."
            ),
        },
        {"role": "user", "content": user_text},
    ]
    route_log = []

    for turn in range(max_turns):
        response, model = complete_with_fallback(messages, TOOLS)
        route_log.append({"turn": turn + 1, "model": model})

        assistant = response.choices[0].message
        messages.append(assistant.model_dump(exclude_none=True))

        if not assistant.tool_calls:
            return {
                "answer": assistant.content,
                "routes": route_log,
                "usage": response.usage.model_dump() if response.usage else None,
            }

        for tool_call in assistant.tool_calls:
            messages.append(
                {
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": execute_tool_call(tool_call),
                }
            )

    raise RuntimeError("Agent stopped after reaching max_turns")

result = run_agent("Where is order A-104, and is SKU BLUE-42 in stock?")
print(result["answer"])
print(result["routes"])

Kode mendukung beberapa panggilan alat dalam satu respons model karena menambahkan hasil untuk setiap panggilan yang dikembalikan. Jika sebuah alat mengubah state—mengirim email, melakukan pemesanan, atau mengeluarkan refund—tambahkan kunci idempoten dan langkah konfirmasi manusia. Jangan pernah memulai ulang seluruh giliran agen secara membabi buta setelah timeout jika efek samping mungkin sudah terjadi.

Bagaimana GPT, Claude, Gemini, dan DeepSeek Cocok di Aplikasi yang Sama

CometAPI dapat mengurangi duplikasi di lapisan koneksi: satu akun, satu base URL yang kompatibel dengan OpenAI untuk jalur umum, dan ID model dipilih oleh kode aplikasi. Itu membuat GPT, Claude, Gemini, DeepSeek, dan Grok menjadi kandidat di belakang satu antarmuka internal.

Itu tidak menjadikan model dapat saling dipertukarkan. Sebelum menambahkan fallback, verifikasi:

  • ID model saat ini dikembalikan oleh katalog CometAPI;
  • rute mendukung skema alat dan peran pesan yang diperlukan;
  • argumen panggilan alat dan perilaku panggilan ganda cocok dengan kontrak agen;
  • jendela konteks dan modalitas input sesuai dengan permintaan;
  • respons dapat divalidasi sebelum mencapai pengguna;
  • latensi dan biaya tetap dalam anggaran produk.

Fitur native penyedia mungkin memerlukan endpoint native atau adaptor terpisah. Biarkan pengecualian tersebut eksplisit daripada memaksa setiap kapabilitas melalui antarmuka bersama.

Fallback Multi-Model Grok 4.7 Bukan Hal yang Sama dengan Multi-Agent

Rangkaian fallback multi-model memilih model lain ketika rute gagal. Sistem multi-agent memberikan tanggung jawab berbeda kepada agen terpisah—misalnya, perencana, peneliti, dan peninjau. Kedua pola memecahkan masalah yang berbeda.

Jika Anda memperluas agen Grok 4.7 ini menjadi alur kerja multi-agent, berikan setiap pekerja peran sempit, allowlist alat terpisah, anggaran berbatas, dan handoff terstruktur. Jangan biarkan setiap agen memanggil setiap alat atau meneruskan transkrip tanpa batas. Mulailah dengan satu agen sampai data evaluasi membuktikan bahwa pemisahan peran meningkatkan hasil.

Guardrail Produksi untuk Agen Grok 4.7

Validasi Sebelum Eksekusi Alat

Periksa nama alat, skema argumen, kepemilikan tenant, izin pengguna, dan rate limit di kode aplikasi. Perlakukan deskripsi alat sebagai panduan untuk model, bukan sebagai kontrol keamanan.

Pisahkan Alat Baca dari Alat Tulis

Alat hanya-baca sering dapat berjalan otomatis setelah otorisasi. Alat tulis harus memerlukan pemeriksaan yang lebih kuat, idempotensi, dan konfirmasi untuk tindakan yang berdampak.

Batasi Setiap Loop

Tetapkan batas giliran model, panggilan alat, waktu dinding, ukuran prompt, dan anggaran token. Kembalikan error terkontrol atau jalur eskalasi ketika batas tercapai.

Catat Jejak Keputusan

Log tugas yang diminta, versi kebijakan, ID model yang dipilih, alasan fallback, nama alat, latensi alat, hasil validasi, penggunaan token, dan status akhir. Jangan log rahasia atau konten pelanggan yang tidak perlu.

Gunakan Tes Kontrak, Bukan Asumsi

Jalankan fixture yang sama terhadap setiap model yang dikonfigurasi. Suite minimum yang berguna mencakup jawaban normal, satu panggilan alat, beberapa panggilan alat, argumen yang salah bentuk, alat tidak dikenal, timeout alat, 429 pada model utama, dan kunci API tidak valid yang tidak boleh memicu fallback.

Daftar Periksa Deployment

  • Ambil ID model saat ini dan verifikasi rute Grok 4.7 sebelum deployment.
  • Simpan kunci CometAPI di secret manager, jangan di kode sumber atau prompt.
  • Mulai dengan alat hanya-baca dan skema JSON eksplisit.
  • Terapkan autentikasi dan otorisasi tenant sebelum setiap panggilan alat.
  • Izinkan fallback hanya untuk error sementara yang diklasifikasikan.
  • Uji setiap fallback terhadap kontrak pemanggilan alat yang sama.
  • Tambahkan idempotensi dan konfirmasi sebelum mengaktifkan alat tulis.
  • Tetapkan batas loop, latensi, konteks, dan biaya.
  • Ukur keberhasilan tugas, bukan hanya ketersediaan API.

Mengapa Membangun Agen Ini Melalui CometAPI?

CometAPI berguna di sini karena integrasi umum tetap kecil. OpenAI Python SDK mengarah ke satu base URL, Grok 4.7 dipilih oleh ID model, dan model kompatibel dari penyedia lain dapat ditempatkan di belakang kebijakan rute milik aplikasi yang sama.

Itu memberi tim ruang untuk mengevaluasi GPT, Claude, Gemini, dan DeepSeek tanpa menyebarkan kode koneksi spesifik penyedia ke seluruh produk. Ini juga mempertahankan batas penting: CometAPI menyediakan akses, sementara aplikasi Anda memiliki pemeriksaan kapabilitas, eksekusi alat, kebijakan fallback, evaluasi, dan perilaku yang menghadap pengguna.

Tinjau halaman model Grok 4.7 saat ini, konfigurasikan klien dari CometAPI quickstart, dan ambil ID model terbaru sebelum memilih fallback produksi.

FAQ

API apa yang sebaiknya saya gunakan untuk aplikasi dengan GPT, Claude, Gemini, dan DeepSeek?

Untuk jalur chat dan pemanggilan alat umum, API terpadu yang kompatibel dengan OpenAI seperti CometAPI dapat mengurangi pekerjaan integrasi. Simpan pemilihan model dan kebijakan fallback di aplikasi Anda, dan gunakan adaptor native penyedia ketika fitur yang diperlukan tidak cocok dengan kontrak bersama.

Apakah Grok 4.7 dapat memanggil fungsi Python secara langsung?

Grok 4.7 dapat mengembalikan permintaan pemanggilan fungsi terstruktur. Aplikasi Python Anda mengurai permintaan, memvalidasinya, mengeksekusi fungsi yang diizinkan, dan mengirim hasilnya kembali ke model. Model itu sendiri tidak mengeksekusi Python lokal.

Haruskah setiap error memicu model yang berbeda?

Tidak. Gunakan fallback untuk kegagalan koneksi tertentu, timeout, 408, 429, dan respons 5xx sementara. Permintaan tidak valid, kegagalan autentikasi, dan parameter yang tidak didukung harus diperbaiki alih-alih dikirim ke model lain.

Apakah saya bisa menggunakan satu skema alat untuk setiap model?

Hanya setelah pengujian. Transport bersama tidak menjamin perilaku alat yang identik, kualitas argumen, perilaku panggilan paralel, atau penegakan skema. Tambahkan model ke rantai hanya setelah model tersebut lulus tes kontrak agen.

Apakah sistem fallback multi-model adalah sistem multi-agent?

Tidak. Fallback mengubah model yang digunakan untuk permintaan setelah rute gagal. Arsitektur multi-agent memberikan tugas berbeda kepada agen terpisah. Bangun keduanya sebagai lapisan yang berbeda dengan tes dan kontrol terpisah.

Sumber

Lanjut belajar

Hubungkan artikel ini ke keputusan berikutnya.

Lihat semua topik
Dipublikasikan pada Oct 4, 2026
Terakhir diperbarui Oct 4, 2026
0 tampilan
Ditinjau untuk kejelasan, atribusi sumber, dan terminologi API terkini.

Baca Selengkapnya