AI Engineering Academy · Ders

Sohbet Tamamlama Uç Noktası

Sistem, kullanıcı ve asistan rollerini içeren ileti dizisini anlayın, ilk isteminizi hazırlayın ve API'den dönen yanıt nesnesini yorumlayın.

2. ders / 413 adım

Sohbet Tamamlama Uç Noktası, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Mesaj Dizisi Mimarisi

Chat Completions uç noktası bir mesaj dizisi üzerinde çalışır: her biri bir role (system, user veya assistant) sahip dönüşlerin listesi. Model durum bilgisi tutmaz; bu nedenle geçmişi her seferinde göndermeniz gerekir.

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)

System Rolü: Davranışı Tanımlama

System mesajı en güçlü aracınızdır. Kullanıcı tek bir kelime yazmadan önce modelin kişiliğini, kurallarını ve biçimini belirler. Buraya zaman ayırın; her şeyi şekillendirir. Koda bakın.

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?'}
    ]
)

Birden Çok Turlu Sohbeti Yönetme

Bir sohbeti sürdürmek için her dönüşü mesaj dizisine append eder ve dizinin tamamını yeniden gönderirsiniz. Modelin hatırlıyor gibi görünmesinin nedeni budur; modele tüm geçmişi aktarırsınız.

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'

API Yanıtının Yapısı

Yanıt yalnızca metin değil, bir nesnedir. choices yanıtı içerir, finish_reason neden durduğunu belirtir ve usage belirteci sayısını gösterir; bu da maliyetinizi belirler. Bunları üretim ortamında günlüğe kaydedin.

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)

finish_reason Değerini Anlama

finish_reason, üretimin neden durduğunu belirtir. 'stop' tamamlandığı, 'length' ise max_tokens sınırına ulaşıp yanıtın ortasında kesildiği anlamına gelir. Her zaman kontrol edin; kesilme sessiz bir hatadır.

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

Doğru Modeli Seçme

İşinize uygun modeli seçin. gpt-4o zor akıl yürütme görevlerinde güçlüdür; gpt-4o-mini çok daha ucuzdur ve görevlerin çoğunu iyi şekilde yerine getirir. Daha büyük modelin daha iyi sonuç vereceğini varsaymadan önce karşılaştırmalı ölçüm yapın.

# 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

Mesajlardaki İçerik Türleri

Bir mesajın içeriği metinden ibaret olmak zorunda değildir. gpt-4o gibi görsel modellerde metin ve görselleri bir arada içeren bir liste gönderebilirsiniz; böylece grafikler veya ekran görüntüleri hakkında sorular sorabilirsiniz.

# 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'}
                }
            ]
        }
    ]
)

n Parametresi: Birden Çok Tamamlama

n parametresi tek bir istem için birden çok tamamlama döndürür. En iyisini seçmek veya güven ölçmek için kullanışlıdır: n seçeneğinin tümü aynı sonucu veriyorsa model emindir; sonuçlar çelişiyorsa dikkatli olun.

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)

Yanıtı Dize Olarak Ele Alma

Yanıtı metin olarak almak için yol her zaman response.choices[0].message.content şeklindedir. Bunu bir yardımcı işlevle sarın ve araç çağrılarında veya filtrelemelerde görülebilen None değerini kontrol edin.

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)

Ham İsteği ve Yanıtı İnceleme

Garip yanıtların hata ayıklamasını mı yapıyorsunuz? Ham isteği ve yanıtı inceleyin. OPENAI_LOG=debug ayarı, tüm gövdeyi terminalinize yazdırır; aktarım sırasında neler olduğunu görmenin en hızlı yoludur.

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

Basit Bir Sohbet Döngüsü Oluşturma

Artık basit bir sohbet döngüsü oluşturabilirsiniz: bir mesaj listesi tutun, her dönüşü ekleyin, tümünü gönderin ve tekrarlayın. Bu basit yapı, API üzerindeki her sohbet uygulamasının temelini oluşturur. Kodda gösterilmiştir.

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.')

Hızlı Kontrol

Bu dersteki Yapay Zekâ Mühendisliği kavramlarını ne kadar anladığınızı test edin.

Ders Özeti

Sohbetin temelini öğrendiniz: mesaj dizisi sohbeti yönetir; yanıt ise içeriği, finish_reason değerini ve belirteç sayılarını taşır. Sırada: parametreler.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Sohbet Tamamlama Uç Noktası” dersi ücretsiz mi?

Evet — “Sohbet Tamamlama Uç Noktası” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Sohbet Tamamlama Uç Noktası” dersinde ne öğreneceğim?

Sistem, kullanıcı ve asistan rollerini içeren ileti dizisini anlayın, ilk isteminizi hazırlayın ve API'den dönen yanıt nesnesini yorumlayın. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Sohbet Tamamlama Uç Noktası” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Python Ortamınızı Kurma
  2. Sohbet Tamamlama Uç Noktası
  3. Parametrelerle Model Davranışını Denetleme
  4. Hata İşleme ve İstek Hız Sınırları
← AI Engineering Academy Sayfasına Dön