Beranda / Catatan / AI / Agents
AI / Agents
beginner

OpenAI API Essentials

Panduan praktis OpenAI API — model, endpoint utama, dan cara memakainya di aplikasi nyata

13 Juli 2026
Diperbarui secara berkala

OpenAI API Essentials

> OpenAI API adalah salah satu entry point paling banyak dipakai untuk membangun produk berbasis LLM. Notebook ini membahas endpoint intinya, lineup model, dan pattern praktis — function calling, structured output, streaming — yang akan sering dipakai di aplikasi nyata.

Apa itu OpenAI API?

OpenAI API memberi akses programmatic ke model-model OpenAI — GPT untuk teks dan reasoning, embeddings untuk retrieval, serta model image dan audio untuk task multimodal. Alih-alih interface chat, yang didapat adalah HTTP API (dengan official SDK untuk Python, JavaScript, dan lainnya) yang dipanggil langsung dari kode aplikasi kita sendiri.

Biasanya dipakai untuk:

  • Conversational assistant dan chatbot
  • Ekstraksi data terstruktur dari teks tak terstruktur
  • Function/tool calling — supaya model bisa memicu action di sistem kita
  • Summarization, klasifikasi, terjemahan
  • Embeddings untuk search dan retrieval (RAG)
  • Code generation dan analysis
  • Building Block Inti

    1. Responses / Chat Completions API Endpoint utama untuk text generation. Kita kirim daftar message (system, user, assistant) dan mendapat response hasil generate model.

    from openai import OpenAI
    
    client = OpenAI()
    
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "You are a concise technical assistant."},
            {"role": "user", "content": "Explain what a vector database is in two sentences."},
        ],
    )
    
    print(response.choices[0].message.content)
    

    2. Function (Tool) Calling Model bisa meminta kode kita menjalankan function tertentu, dengan argument yang diisinya sendiri berdasarkan percakapan. Kita eksekusi function-nya, lalu kirim hasilnya kembali.

    tools = [{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a city",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    }]
    
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Cuaca di Bandung gimana?"}],
        tools=tools,
    )
    
    tool_call = response.choices[0].message.tool_calls[0]
    # tool_call.function.name == "get_weather"
    # tool_call.function.arguments == '{"city": "Bandung"}'
    # → jalankan get_weather("Bandung"), lalu kirim hasilnya sebagai follow-up message
    

    3. Structured Output Membatasi response model agar persis sesuai JSON schema, berguna untuk task ekstraksi di mana kode downstream butuh JSON yang dijamin valid.

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Extract: John Doe, 34, Jakarta"}],
        response_format={
            "type": "json_schema",
            "json_schema": {
                "name": "person",
                "schema": {
                    "type": "object",
                    "properties": {
                        "name": {"type": "string"},
                        "age": {"type": "integer"},
                        "city": {"type": "string"},
                    },
                    "required": ["name", "age", "city"],
                },
            },
        },
    )
    

    4. Embeddings Mengubah teks menjadi vector untuk semantic search, clustering, atau pipeline retrieval (lihat [[rag-pipelines-essentials]]).

    embedding = client.embeddings.create(
        model="text-embedding-3-small",
        input="How do I reset my password?",
    ).data[0].embedding
    

    5. Streaming Menerima token satu per satu saat digenerate, bukan menunggu response lengkap — penting untuk chat UI yang terasa responsif.

    stream = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Write a short poem about the sea."}],
        stream=True,
    )
    
    for chunk in stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="")
    

    Memilih Model

  • Task reasoning-heavy atau ambigu → flagship reasoning model (seri o) menukar latency demi reasoning multi-step yang lebih dalam
  • Chat general, tool use, task sehari-hari → keluarga gpt-4o menyeimbangkan kualitas, kecepatan, dan cost
  • Task volume tinggi, latency-sensitive, atau cost-sensitive → varian mini/lebih kecil
  • Search dan retrievaltext-embedding-3-small / -large untuk embeddings
  • Selalu cek nama model dan pricing terkini di dokumentasi resmi OpenAI — lineup-nya sering berubah.

    Use Case Umum

  • Customer support chat dengan tool calling ke sistem internal (order lookup, refund)
  • Pipeline ekstraksi data yang mengubah PDF/email menjadi record terstruktur
  • Semantic search terhadap knowledge base lewat embeddings
  • Agent multi-step yang menggabungkan chat, tool calling, dan structured output
  • Best Practices

  • Set system message yang jelas — ini menjaga tone, constraint, dan role jauh lebih konsisten dibanding mengulang instruksi tiap giliran
  • Utamakan structured output dibanding meminta model "return JSON" dalam bentuk plain text — ini menghilangkan satu kelas bug parsing sekaligus
  • Tangani rate limit dan error transient dengan retry serta exponential backoff
  • Jangan pernah percaya begitu saja argument dari function call — validasi dulu sebelum mengeksekusi apa pun yang punya side effect
  • Lacak token usage per request; cost bertambah dari input token maupun output token
  • Key Takeaways

  • Chat Completions/Responses API adalah primitive inti; function calling dan structured output memperluasnya jadi logic aplikasi nyata
  • Function calling memungkinkan model memicu kode kita — tapi kode kita tetap bertanggung jawab memvalidasi dan mengeksekusi dengan aman
  • Pemilihan model adalah tradeoff antara kapabilitas, latency, dan cost — pilih per task, bukan sekali untuk seluruh aplikasi
  • Streaming dan structured output adalah yang membedakan demo dari integrasi yang siap production
  • Resources

  • Dokumentasi OpenAI API: https://platform.openai.com/docs
  • OpenAI Cookbook (contoh praktis): https://cookbook.openai.com
  • Topik

    OpenAIGPTAPI IntegrationFunction CallingLLM

    Apakah Ini Membantu?

    Jika Anda memiliki pertanyaan atau saran untuk meningkatkan catatan ini, saya ingin mendengar dari Anda.