AI Engineering Academy · Pelajaran

Titik Akhir Penyelesaian Obrolan

Pahami larik pesan dengan peran sistem, pengguna, dan asisten, buat perintah pertama Anda, serta tafsirkan objek respons yang dikembalikan oleh API.

Pelajaran 2 dari 413 langkah

Titik Akhir Penyelesaian Obrolan adalah pelajaran AI Engineering Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.

Arsitektur Larik Pesan

Titik akhir Chat Completions berjalan menggunakan larik pesan: daftar giliran, masing-masing dengan peran (system, user, atau assistant). Model tidak menyimpan status, jadi Anda harus mengirimkan riwayat setiap kali.

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[
        {'role': 'system', 'content': 'You are a concise Python tutor.'},
        {'role': 'user', 'content': 'What is a list comprehension?'}
    ]
)

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

Peran System: Mendefinisikan Perilaku

Pesan system adalah pengungkit terbesar Anda. Pesan ini menetapkan persona, aturan, dan format model sebelum pengguna mengetik satu kata pun. Luangkan waktu untuk menyusunnya—pesan ini memengaruhi semuanya. Lihat kodenya.

system_prompt = '''You are a customer support agent for TechShop.
You help customers with: order tracking, returns, and product questions.
You do NOT discuss pricing changes or competitor products.
Always respond in 2-3 sentences maximum.
If you cannot help, say: 'Let me connect you with a human agent.'
'''

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[
        {'role': 'system', 'content': system_prompt},
        {'role': 'user', 'content': 'Where is my order #12345?'}
    ]
)

Mengelola Percakapan dengan Banyak Giliran

Agar percakapan terus berlangsung, Anda append setiap giliran ke larik pesan lalu mengirimkan semuanya kembali. Begitulah model terlihat seolah-olah mengingat—Anda memasok seluruh riwayat kepadanya.

history = [
    {'role': 'system', 'content': 'You are a helpful assistant.'}
]

def chat(user_message):
    history.append({'role': 'user', 'content': user_message})
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=history
    )
    assistant_reply = response.choices[0].message.content
    history.append({'role': 'assistant', 'content': assistant_reply})
    return assistant_reply

print(chat('My name is Alice.'))
print(chat('What is my name?'))  # model remembers 'Alice'

Anatomi Respons API

Respons adalah objek, bukan sekadar teks. choices menyimpan balasan, finish_reason menjelaskan alasannya berhenti, dan usage menghitung token—yang menentukan biaya Anda. Catat semua ini di lingkungan produksi.

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Say hello in one word.'}]
)

# Accessing response fields
print('Content:', response.choices[0].message.content)
print('Finish reason:', response.choices[0].finish_reason)  # 'stop'
print('Model:', response.model)  # exact version like gpt-4o-mini-2024-07-18
print('Prompt tokens:', response.usage.prompt_tokens)
print('Completion tokens:', response.usage.completion_tokens)
print('Total tokens:', response.usage.total_tokens)

Memahami finish_reason

finish_reason memberi tahu alasan pembuatan teks berhenti. 'stop' berarti selesai; 'length' berarti teks mencapai max_tokens dan terpotong di tengah jawaban. Selalu periksa nilainya—pemotongan adalah kesalahan tersembunyi.

def safe_completion(messages, max_tokens=500):
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=messages,
        max_tokens=max_tokens
    )
    choice = response.choices[0]
    
    if choice.finish_reason == 'length':
        print(f'WARNING: Response was truncated at {max_tokens} tokens!')
    elif choice.finish_reason == 'content_filter':
        print('WARNING: Response blocked by content filter!')
        return None
    
    return choice.message.content

Memilih Model yang Tepat

Pilih model yang sesuai untuk tugasnya. gpt-4o adalah pilihan andal untuk penalaran sulit; gpt-4o-mini jauh lebih murah dan menangani sebagian besar tugas dengan baik. Lakukan tolok ukur sebelum menganggap model yang lebih besar pasti lebih unggul.

# Model comparison guidance
models = {
    'gpt-4o': {
        'use_for': 'Complex reasoning, code generation, nuanced analysis',
        'input_cost_per_1M': 2.50,  # USD
        'output_cost_per_1M': 10.00
    },
    'gpt-4o-mini': {
        'use_for': 'Classification, extraction, summarization, Q&A',
        'input_cost_per_1M': 0.15,
        'output_cost_per_1M': 0.60
    }
}
# gpt-4o is ~17x more expensive on input tokens

Jenis Konten dalam Pesan

content sebuah pesan dapat berupa lebih dari sekadar teks. Untuk model visi seperti gpt-4o, Anda mengirimkan daftar yang mencampurkan teks dan gambar—sehingga Anda dapat mengajukan pertanyaan tentang bagan atau tangkapan layar.

# Sending an image to a vision-capable model
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'user',
            'content': [
                {
                    'type': 'text',
                    'text': 'What is in this image? Describe in one sentence.'
                },
                {
                    'type': 'image_url',
                    'image_url': {'url': 'https://example.com/photo.jpg'}
                }
            ]
        }
    ]
)

Parameter n: Beberapa Penyelesaian

Parameter n mengembalikan beberapa penyelesaian untuk satu prompt. Ini berguna untuk memilih yang terbaik atau mengukur keyakinan: jika semua n hasil setuju, model kemungkinan yakin; jika saling bertentangan, berhati-hatilah.

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Name the capital of Germany.'}],
    n=3,  # generate 3 independent completions
    temperature=0.5
)

for i, choice in enumerate(response.choices):
    print(f'Completion {i+1}: {choice.message.content}')

# Check if all completions agree (confidence signal)
answers = [c.message.content.strip() for c in response.choices]
print('All agree:', len(set(answers)) == 1)

Menangani Respons sebagai String

Untuk mengambil balasan sebagai teks, jalurnya selalu response.choices[0].message.content. Bungkus dalam fungsi pembantu—dan tangani None, yang dapat terjadi pada pemanggilan alat atau filter.

def get_completion(prompt, system='You are a helpful assistant.', model='gpt-4o-mini'):
    '''Simple helper that returns the response text as a string.'''
    response = client.chat.completions.create(
        model=model,
        messages=[
            {'role': 'system', 'content': system},
            {'role': 'user', 'content': prompt}
        ]
    )
    content = response.choices[0].message.content
    if content is None:
        raise ValueError(f'No content in response. Finish reason: {response.choices[0].finish_reason}')
    return content

result = get_completion('Explain recursion in one sentence.')
print(result)

Memeriksa Permintaan dan Respons Mentah

Sedang menelusuri balasan yang aneh? Periksa permintaan dan respons mentah. Dengan menetapkan OPENAI_LOG=debug, seluruh isi pesan dicetak ke terminal Anda—cara tercepat untuk melihat data yang dikirim melalui jaringan.

import json
import httpx

# Enable debug logging (shows full request/response)
import os
os.environ['OPENAI_LOG'] = 'debug'

# Or use a custom logging client:
class LoggingClient(httpx.Client):
    def send(self, request, *args, **kwargs):
        print('REQUEST:', request.method, request.url)
        print('BODY:', json.loads(request.content))
        response = super().send(request, *args, **kwargs)
        print('STATUS:', response.status_code)
        return response

Membangun Perulangan Percakapan Minimal

Sekarang Anda dapat membangun perulangan percakapan minimal: simpan daftar pesan, tambahkan setiap giliran, kirimkan semuanya, lalu ulangi. Pola sederhana ini menjadi dasar setiap aplikasi percakapan pada API. Kodenya menunjukkan caranya.

import openai

client = openai.OpenAI()

SYSTEM_PROMPT = 'You are a helpful assistant. Be concise.'

def simple_chat_loop():
    messages = [{'role': 'system', 'content': SYSTEM_PROMPT}]
    print('Chat started. Type "quit" to exit.')

    while True:
        user_input = input('You: ').strip()
        if user_input.lower() == 'quit':
            break
        if not user_input:
            continue

        messages.append({'role': 'user', 'content': user_input})

        response = client.chat.completions.create(
            model='gpt-4o-mini',
            messages=messages,
            max_tokens=500
        )

        assistant_reply = response.choices[0].message.content
        messages.append({'role': 'assistant', 'content': assistant_reply})
        print(f'Assistant: {assistant_reply}\n')

print('Example chat loop defined. Run simple_chat_loop() to start.')

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Rekayasa AI dari pelajaran ini.

Rangkuman Pelajaran

Anda telah mempelajari inti percakapan: larik pesan mengendalikan percakapan, sedangkan respons membawa content, finish_reason, dan jumlah token. Berikutnya: parameter.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Titik Akhir Penyelesaian Obrolan” gratis?

Ya — teks lengkap “Titik Akhir Penyelesaian Obrolan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Engineering Academy, upgrade ke CoddyKit PRO. Kursus AI Engineering Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Titik Akhir Penyelesaian Obrolan”?

Pahami larik pesan dengan peran sistem, pengguna, dan asisten, buat perintah pertama Anda, serta tafsirkan objek respons yang dikembalikan oleh API. Kamu berlatih AI Engineering Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Engineering Academy?

Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Titik Akhir Penyelesaian Obrolan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Engineering Academy ini?

Ya. Setiap pelajaran AI Engineering Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menyiapkan Lingkungan Python Anda
  2. Titik Akhir Penyelesaian Obrolan
  3. Mengendalikan Perilaku Model dengan Parameter
  4. Penanganan Kesalahan dan Batas Laju
← Kembali ke AI Engineering Academy