Lewati ke konten utama

API O3 OpenAI: Tutorial Langkah demi Langkah dengan Contoh

Pelajari cara menggunakan OpenAI O3 API untuk pemecahan masalah kompleks bertahap yang melibatkan input visual dan tekstual, serta mengelola biaya penalaran.
Diperbarui 28 Sep 2026  · 8 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Model o3 dari OpenAI mampu menyelesaikan masalah kompleks bertahap, memadukan input visual dan tekstual, serta menggunakan alat seperti Python, pencarian, atau inspeksi gambar untuk meningkatkan jawabannya.

Dalam tutorial ini, saya akan menjelaskan langkah demi langkah cara menggunakan o3 melalui API, apa yang membuat o3 berbeda dari model generalis seperti GPT-4o, dan cara mengelola biaya penalaran secara efektif.

Kami terus memperbarui pembaca tentang hal terbaru di AI melalui The Median, buletin gratis setiap Jumat yang merangkum kisah-kisah kunci minggu ini. Berlangganan dan tetap tajam hanya dalam beberapa menit per minggu:

Kapan Sebaiknya Menggunakan O3?

Model o3 dari OpenAI dirancang untuk tugas tingkat lanjut dan kompleks yang memerlukan penalaran mendalam dan otonomi. Model ini sangat efektif untuk pemecahan masalah yang rumit di bidang seperti pengembangan perangkat lunak, matematika, penelitian ilmiah, dan interpretasi data visual.

Kapabilitas agentik model ini memungkinkannya menggunakan alat secara mandiri seperti penelusuran web, Python, dan pembuatan gambar, menjadikannya ideal untuk tugas yang menuntut analisis bertahap dan pengambilan keputusan dinamis.

Pertimbangkan menggunakan model o3 melalui API ketika proyek Anda melibatkan tugas penalaran multimodal yang kompleks yang mendapatkan manfaat dari otonomi tinggi dan keterampilan analitis lanjut.

Mari lihat perbandingan singkat antara o3, o4-mini, dan GPT-4o:

o3 vs o4-mini vs gpt-4o

Sumber: OpenAI

Harga juga merupakan faktor penting yang perlu dipertimbangkan saat menggunakan API:

harga o3 vs o4 mini dan gpt-4o

Sumber: OpenAI

OpenAI O3 API: Cara Terhubung ke API OpenAI

Sebelum Anda dapat mulai menggunakan kapabilitas penalaran lanjutan o3, Anda perlu menyiapkan akses ke OpenAI API. Di bagian ini, saya akan memandu Anda melalui:

  • Menetapkan kunci API Anda secara aman
  • Melakukan panggilan API pertama ke model o3
  • Menyoroti perbedaan penyiapan kunci untuk model penalaran

Langkah 1: Dapatkan kredensial API

Untuk mengakses OpenAI API, Anda memerlukan kunci API yang valid, yang bisa diperoleh dari halaman OpenAI API Keys, dan pastikan penagihan Anda diaktifkan.

Catatan: Untuk menggunakan o3, Anda harus terlebih dahulu memverifikasi organisasi OpenAI Anda di sini. Verifikasi dapat memerlukan waktu hingga 15 menit untuk aktif.

Langkah 2: Impor pustaka openai

Kita mulai dengan memasang dan memperbarui pustaka openai untuk mengakses model O3 melalui API. Jalankan perintah berikut:

pip install --upgrade openai

Setelah terpasang, kita mengimpor kelas OpenAI dari pustaka openai:

from openai import OpenAI

Langkah 3: Inisialisasi objek klien

Untuk berinteraksi dengan API OpenAI, kita melakukan autentikasi dengan menetapkan kunci API rahasia kita, sehingga dapat membuat permintaan resmi ke model seperti o3.

client = OpenAI(api_key=YOUR_API_KEY)

Langkah 4: Lakukan panggilan API

Sekarang penyiapan sudah selesai, mari lakukan panggilan API pertama ke o3 dan lihat bagaimana ia menangani tugas penalaran bertahap sederhana melalui Responses API.

Contoh 1: Prompt sederhana tanpa alat

Mari pahami panggilan API o3 dengan contoh prompt sederhana.

response = client.responses.create(
    model="o3",
    input=[{"role": "user", "content": "What’s the difference between inductive and deductive reasoning?"}]
)
print(response.output_text)

Contoh ini mengirim pertanyaan bahasa alami langsung ke model o3 tanpa menggunakan alat atau parameter penalaran khusus.

  • model="o3" memberi tahu API untuk menggunakan model penalaran o3.
  • input=[{"role": "user", "content": "..."}] mendefinisikan satu pesan pengguna yang meminta penjelasan konseptual.
  • Secara internal, O3 menggunakan rantai penalaran tingkat menengah sebelum menghasilkan keluaran akhir.

keluaran o3 via API

Ini adalah token yang akan dihitung ke biaya akhir kita:

  • Token input: Prompt
  • Token penalaran: chain-of-thought internal o3
  • Token output: Keluaran akhir

Contoh 2: Pemecahan masalah kode dan matematika

Pada contoh ini, kita meminta o3 untuk menulis kode dan menjelaskan matematika di balik penyelesaian persamaan kuadrat. Ini adalah tugas dua bagian, tidak hanya memerlukan pengkodean tetapi juga penjelasan matematis yang terperinci.

prompt = "Write a Python function that solves quadratic equations and also explain the math behind it."
response = client.responses.create(
    model="o3",
    reasoning={"effort": "high"},
    input=[{"role": "user", "content": prompt}]
)
print(response.output_text)

Tugas ini memerlukan penalaran matematika bertahap, pertama menyelesaikan rumus kuadrat, lalu menjelaskan penurunannya. Parameter reasoning={"effort": "high"} memaksa o3 untuk "berpikir lebih keras," menghasilkan jejak penalaran yang lebih besar. Ini sangat cocok untuk tugas yang memerlukan kedalaman teknis atau solusi multi-tahap.

Catatan biaya: Upaya penalaran yang lebih tinggi berarti lebih banyak token penalaran, yang menghasilkan biaya keluaran lebih tinggi.

keluaran o3 via API

keluaran api o3

Pemecahan Masalah Kode + Matematika

keluaran api o3

Contoh 3: Tugas refaktorisasi kode

Pada contoh ini, kita memberikan tugas refaktorisasi kode kepada O3 beserta serangkaian instruksi.

prompt = """
Instructions:
- Given the React component below, change it so that nonfiction books have red
  text. 
- Return only the code in your reply
- Do not include any additional formatting, such as markdown code blocks
- For formatting, use four space tabs, and do not allow any lines of code to 
  exceed 80 columns
const books = [
  { title: 'Dune', category: 'fiction', id: 1 },
  { title: 'Frankenstein', category: 'fiction', id: 2 },
  { title: 'Moneyball', category: 'nonfiction', id: 3 },
];
export default function BookList() {
  const listItems = books.map(book =>
    <li>
      {book.title}
    </li>
  );
  return (
    <ul>{listItems}</ul>
  );
}
"""
response = client.responses.create(
    model="o3",
    reasoning={"effort": "medium", "summary": "detailed"},
    input=[
        {
            "role": "user",
            "content": prompt,
        }
    ]
)
print(response.output_text)

Pada kode di atas, kita memberikan O3 tugas pengeditan kode yang sangat terstruktur dengan aturan pemformatan yang terperinci.

  • Parameter reasoning={"effort": "medium"} menginstruksikannya untuk menalar dengan cermat namun efisien.
  • Parameter summary="detailed" meminta ringkasan internal penuh dari proses berpikir model. O3 akan menalar secara internal dan opsional mengembalikan jejak yang diringkas jika Anda memeriksa bidang summary nanti.

Tip: Tersedia beberapa pengaturan ringkasan yang dapat Anda gunakan, seperti "concise", "detailed", atau "auto."

keluaran api o3 Tugas Refaktorisasi Kode

Contoh 4: Penalaran visual

Mari gunakan foto konferensi ini dan minta o3 membuat jadwal berdasarkan minat kita.

Penalaran Visual (gambar input)

Langkah 4.1: Fungsi pembantu

Mari mulai dengan mengimpor pustaka yang diperlukan dan menulis fungsi pembantu:

import base64, mimetypes, pathlib
def to_data_url(path: str) -> str:
    mime = mimetypes.guess_type(path)[0] or "application/octet-stream"
    data = pathlib.Path(path).read_bytes()
    b64  = base64.b64encode(data).decode()
    return f"data:{mime};base64,{b64}"

Fungsi to_data_url() mengonversi file gambar lokal menjadi data URL yang dikodekan base64, yang diperlukan karena API OpenAI mengharapkan input gambar dalam format URL, bukan sebagai file mentah.

Fungsi to_data_url melakukan hal berikut:

  • Membaca file gambar (path) dari komputer Anda.
  • Menyimpulkan tipenya (misalnya, image/png).
  • Lalu mengodekan konten biner menjadi string base64.
  • Terakhir mengembalikan data URL

Langkah 4.2: Kirim teks dan gambar ke O3

Sekarang gambar kita sudah dikodekan, kita mengirimkan teks dan informasi gambar yang telah dikodekan ke O3.

prompt = (
    "Create a schedule using this blurry conference photo. "
    "Ensure 10-minute gaps between talks and include all talks related to LLMs."
)
image_path   = "IMAGE_PATH"
image_url    = to_data_url(image_path)        
response = client.chat.completions.create(
    model="o3",                                  
    messages=[
        {
            "role": "user",
            "content": [
                { "type": "text",      "text": prompt },
                { "type": "image_url", "image_url": { "url": image_url } }
            ],
        }
    ],
)
print(response.choices[0].message.content)

Berikut cara kerjanya:

  • Kita mulai dengan memanggil client.chat.completions.create(), di mana konten input berupa daftar yang berisi:
    • instruksi teks (permintaan penjadwalan pengguna),
    • dan data gambar (foto konferensi).
    • Model o3 memproses kedua input tersebut secara bersamaan selama chain-of-thought internalnya.
  • Terakhir, kita mencetak response.choices[0].message.content, yang berisi jadwal yang dihasilkan model setelah menalar atas instruksi teks dan data visual.

Pertimbangan biaya penting:

  • Input gambar dihitung sebagai token input.
  • Model menggunakan inspeksi visual di dalam loop penalaran.
  • Jika rantai penalaran panjang, kita harus mengelola biaya dengan cermat menggunakan parameter max_completion_tokens, yang akan kita bahas di bagian berikutnya.

Mari lihat hasilnya:

o3 api Penalaran Visual (Keluaran)

o3 api Penalaran Visual (Keluaran)

Mengelola Biaya dengan Token Penalaran

O3 menggunakan token penalaran selain token input/output biasa, yang berarti lebih banyak token daripada token input/output reguler dan karenanya biaya keluaran lebih tinggi. Mengikuti contoh sebelumnya, mari uraikan bagaimana token penalaran memengaruhi biaya.

print(response.usage)
CompletionUsage(completion_tokens=3029,prompt_tokens=1007, total_tokens=4036, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))

Jika Anda ingin mengendalikan biaya, terapkan parameter max_completion_tokens untuk membatasi total penggunaan:

limit_token_response = client.chat.completions.create(
    model="o3",                                  
    messages=[
        {
            "role": "user",
            "content": [
                { "type": "text",      "text": prompt },
                { "type": "image_url", "image_url": { "url": image_url } }
            ],
        }
    ],
    max_completion_tokens=3000,
)
print(limit_token_response.usage)
CompletionUsage(completion_tokens=2746, prompt_tokens=1007, total_tokens=3753, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))

Dari keluaran di atas, kita dapat melihat bahwa menetapkan nilai max_completion_tokens sangat penting dalam mengendalikan perilaku model. Dengan membatasi jumlah maksimum token yang dihasilkan, kita mencegah o3 menghasilkan keluaran yang terlalu panjang atau mengonsumsi token penalaran berlebihan, yang membantu mengoptimalkan biaya API secara keseluruhan. Ini sangat penting pada tugas kompleks di mana penalaran internal bisa mendominasi penggunaan token tanpa menghasilkan keluaran yang sebanding bagi pengguna.

Penting: Saat menggunakan o3 untuk tugas visual yang kompleks, selalu tetapkan max_completion_tokens cukup tinggi secara konservatif. Jika batas token terlalu rendah, model dapat menghabiskan semua token selama penalaran internal dan tidak mengembalikan keluaran yang terlihat.

Praktik Terbaik Prompting dengan O3

Model O3 berperilaku berbeda dibandingkan model generalis seperti GPT-4o atau Claude 3.5 Sonnet, karena o3 melakukan penalaran chain-of-thought yang mendalam secara internal. Model ini berkinerja terbaik dengan prompt yang lugas dan berorientasi tujuan, yaitu, menspesifikasikan langkah secara berlebihan dapat menurunkan kinerjanya.

Berikut beberapa praktik terbaik yang direkomendasikan OpenAI untuk melakukan prompting pada o3:

  • Buat prompt ringkas dan jelas: O3 optimal dengan instruksi langsung tanpa perlu penjelasan bertele-tele.
  • Hindari prompt chain-of-thought: Tidak perlu menyuruh O3 untuk "berpikir selangkah demi selangkah"—ia menalarnya secara internal.
  • Gunakan pembatas untuk kejelasan: Gunakan tanda kutip tiga, tag XML, atau pembatas lain untuk mengatur bagian-bagian input.
  • Batasi konteks tambahan: Jika menggunakan retrieval-augmented generation (RAG), sertakan hanya informasi yang paling relevan agar model tidak kewalahan.

Kesimpulan

Sepanjang blog ini, kita mempelajari cara terhubung ke model O3 OpenAI melalui API, mengelola biaya token penalaran, dan menyusun prompt yang efektif menggunakan praktik terbaik. Jika proyek Anda memerlukan kapabilitas penalaran tingkat lanjut, seperti matematika bertahap, refaktorisasi kode, atau pemahaman visual, O3 adalah pilihan terbaik.

Untuk mempelajari lebih lanjut cara bekerja dengan API, saya merekomendasikan blog berikut:


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

Saya adalah Google Developers Expert di ML (Gen AI), Kaggle 3x Expert, dan Women Techmakers Ambassador dengan pengalaman lebih dari 3 tahun di bidang teknologi. Saya ikut mendirikan startup health-tech pada 2020 dan sedang menempuh studi magister ilmu komputer di Georgia Tech dengan spesialisasi machine learning.

Topik
Kecerdasan Buatan
OpenAI

Belajar AI dengan kursus-kursus ini!

Kursus

Mengembangkan Sistem AI dengan OpenAI API

3 jam
22.9K
Manfaatkan OpenAI API untuk menyiapkan aplikasi AI Anda agar siap digunakan di produksi.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya