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.
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.contentMemilih 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 tokensJenis 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 responseMembangun 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.
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
- Menyiapkan Lingkungan Python Anda
- Titik Akhir Penyelesaian Obrolan
- Mengendalikan Perilaku Model dengan Parameter
- Penanganan Kesalahan dan Batas Laju