Endepunktet for chat completions
Forstå meldingsmatrisen med rollene system, user og assistant, lag Deres første prompt, og tolk responsobjektet som returneres fra API-et.
Endepunktet for chat completions er en gratis leksjon i AI Engineering Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI Engineering Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI Engineering Academy inneholder totalt 4 leksjoner.
Arkitekturen til messages-arrayet
Chat Completions-endepunktet bruker et messages-array: en liste med innlegg, der hvert innlegg har en rolle (system, user eller assistant). Modellen er tilstandsløs, så De må sende historikken hver gang.
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)Systemrollen: Definere atferd
Systemmeldingen er det viktigste virkemiddelet. Den angir modellens persona, regler og format før brukeren skriver et eneste ord. Bruk tid på dette – det former alt. Se koden.
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?'}
]
)Håndtere samtaler med flere innlegg
For å holde en samtale i gang legger De til hvert innlegg i messages-arrayet og sender alt på nytt. Det er slik modellen ser ut til å huske – De gir den hele historikken.
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'Anatomien til API-svaret
Svaret er et objekt, ikke bare tekst. choices inneholder svaret, finish_reason angir hvorfor genereringen stoppet, og usage teller tokens – noe som utgjør kostnaden. Loggfør disse i produksjon.
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)Forstå finish_reason
finish_reason forteller hvorfor genereringen stoppet. «stop» betyr at den er ferdig; «length» betyr at den nådde max_tokens og ble avbrutt midt i svaret. Kontroller den alltid – avkorting er en skjult feil.
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.contentVelge riktig modell
Velg riktig modell for oppgaven. gpt-4o er kraftig for krevende resonnering; gpt-4o-mini er langt billigere og håndterer de fleste oppgaver godt. Kjør ytelsesmålinger før De antar at større alltid er bedre.
# 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 tokensInnholdstyper i meldinger
En meldings content kan være mer enn tekst. For synsmodeller som gpt-4o sender De en liste som kombinerer tekst og bilder – slik kan De stille spørsmål om diagrammer eller skjermbilder.
# 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-parameteren: Flere fullføringer
n-parameteren returnerer flere fullføringer for én forespørsel. Det er nyttig når De skal velge det beste svaret, eller for å vurdere sikkerhet: Hvis alle n svarene er enige, er modellen sikker; hvis de spriker, bør De være forsiktig.
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)Behandle svaret som en streng
For å hente svaret som tekst er stien alltid response.choices[0].message.content. Pakk den inn i en hjelpefunksjon – og håndter None, som forekommer ved verktøykall eller filtre.
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)Inspisere den rå forespørselen og svaret
Feilsøker De merkelige svar? Inspiser den rå forespørselen og svaret. Når De setter OPENAI_LOG=debug, skrives hele innholdet ut i terminalen – den raskeste måten å se hva som faktisk sendes.
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 responseBygge en minimal chat-sløyfe
Nå kan De bygge en minimal chat-sløyfe: behold en meldingsliste, legg til hvert innlegg, send alt, og gjenta. Dette enkle mønsteret driver alle chatteapper på API-et. Koden viser hvordan.
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.')Rask kontroll
Test forståelsen Deres av AI Engineering-konseptene fra denne leksjonen.
Oppsummering av leksjonen
De lærte kjernen i chat: messages-arrayet styrer samtalen, og svaret inneholder content, finish_reason og token-antall. Neste tema: parametere.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Endepunktet for chat completions» gratis?
Ja – hele teksten i «Endepunktet for chat completions» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI Engineering Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI Engineering Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Endepunktet for chat completions»?
Forstå meldingsmatrisen med rollene system, user og assistant, lag Deres første prompt, og tolk responsobjektet som returneres fra API-et. Du øver på AI Engineering Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI Engineering Academy?
Ingen tidligere erfaring er nødvendig. AI Engineering Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Endepunktet for chat completions»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI Engineering Academy-leksjonen?
Ja. Alle AI Engineering Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Konfigurere Python-miljøet
- Endepunktet for chat completions
- Styr modellens atferd med parametere
- Feilhåndtering og hastighetsgrenser