0Pricing
Learn AI with Python · Lekcja

OpenAI API: chat.completions i przesyłanie strumieniowe

Klient OpenAI, lista messages, role system/user/assistant, przesyłanie strumieniowe za pomocą stream=True.

OpenAI API: chat.completions i przesyłanie strumieniowe to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Poznajemy OpenAI Python SDK

Pakiet openai dla języka Python to oficjalny sposób komunikowania się z modelami OpenAI, takimi jak GPT-4o. Po zainstalowaniu go za pomocą pip install openai otrzymuje się pojedynczą klasę klienta OpenAI, która obsługuje uwierzytelnianie, ponowienia prób i konstruowanie żądań.

Każde wywołanie przechodzi przez tego klienta, dlatego standardowym rozwiązaniem jest utworzenie go raz i ponowne używanie.

pip install openai

from openai import OpenAI

Tworzenie klienta

Proszę utworzyć instancję klienta za pomocą OpenAI(). Domyślnie odczytuje on klucz ze zmiennej środowiskowej OPENAI_API_KEY, dzięki czemu sekrety nie trafiają do kodu źródłowego.

Klucz można również przekazać jawnie, ale w aplikacjach produkcyjnych zalecane jest korzystanie ze zmiennych środowiskowych.

from openai import OpenAI

# Reads OPENAI_API_KEY from the environment
client = OpenAI()

# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")

Lista messages

Modele czatu są sterowane przez listę wiadomości. Każda wiadomość jest słownikiem zawierającym role i content. Trzy podstawowe role to system (instrukcje), user (człowiek) i assistant (model).

Ta lista stanowi pełny kontekst rozmowy, który model otrzymuje przy każdym wywołaniu.

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the capital of France?"}
]

Pierwsza odpowiedź

Należy wywołać client.chat.completions.create(), podając model oraz własne messages. Tekst odpowiedzi znajduje się w response.choices[0].message.content.

API zwraca listę odpowiedzi, ale w typowym użyciu odczytuje się pierwszą z nich.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages
)

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

Sterowanie wynikiem za pomocą parametrów

Na odpowiedź wpływają dwa parametry: temperature (0 oznacza wynik deterministyczny, a wyższa wartość — większą kreatywność) oraz max_tokens (ogranicza długość odpowiedzi). Niższe wartości temperatury sprawdzają się w zadaniach wymagających faktów, a wyższe — podczas burzy mózgów.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    temperature=0.2,
    max_tokens=300
)

Dlaczego warto strumieniować odpowiedzi?

Bez strumieniowania trzeba czekać na całą odpowiedź, zanim pojawi się jakikolwiek tekst. Dzięki strumieniowaniu tokeny docierają w miarę ich generowania, więc interfejs może wyświetlać tekst w czasie rzeczywistym, tak jak robi to ChatGPT.

Strumieniowanie włącza się za pomocą stream=True, co zmienia zwracaną wartość z pojedynczego obiektu na iterator.

Włączanie strumieniowania

Należy przekazać stream=True do create(). Zamiast ukończonej odpowiedzi otrzymuje się generator, który zwraca fragmenty w miarę generowania ich przez model.

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    stream=True
)

Iterowanie po fragmentach

Należy iterować po strumieniu. Każdy fragment zawiera częściowy tekst w chunk.choices[0].delta.content. W początkowych i końcowych fragmentach może znajdować się tam wartość None, dlatego przed wyświetleniem należy to sprawdzić.

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta is not None:
        print(delta, end="", flush=True)

Zrozumienie różnicy między delta a message

W zwykłej odpowiedzi odczytuje się message.content (całą odpowiedź). W strumieniu odczytuje się delta.content (tylko nowy fragment). Słowo delta oznacza „zmianę” od czasu otrzymania poprzedniego fragmentu.

Połączenie wszystkich delt pozwala odtworzyć pełną wiadomość.

full_text = ""
for chunk in stream:
    piece = chunk.choices[0].delta.content or ""
    full_text += piece
print("\nFinal:", full_text)

Rozmowy wieloetapowe

Aby kontynuować rozmowę, należy dopisać odpowiedź asystenta z powrotem do messages, a następnie dodać kolejną wiadomość użytkownika. Model nie zachowuje stanu, dlatego to Państwo muszą utrzymywać historię.

messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})

follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)

Sprawdzanie użycia tokenów

Odpowiedzi bez strumieniowania zawierają obiekt usage z polami prompt_tokens, completion_tokens i total_tokens. Dzięki niemu można śledzić i planować koszt korzystania z API, ponieważ rozliczenia odbywają się za token.

print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)

Szybki test

Sprawdź swoją wiedzę na temat strumieniowania.

Podsumowanie: Chat Completions i strumieniowanie

Nauczyli się Państwo utworzyć klienta OpenAI, zbudować listę messages z rolami systemu, użytkownika i asystenta oraz wywołać chat.completions.create(). Zwykłe odpowiedzi odczytuje się z choices[0].message.content.

Po ustawieniu stream=True można iterować po fragmentach i odczytywać delta.content, aby uzyskać dane w czasie rzeczywistym, utrzymywać historię przez dopisywanie odpowiedzi oraz śledzić koszt za pomocą obiektu usage.

Często zadawane pytania

Czy lekcja „OpenAI API: chat.completions i przesyłanie strumieniowe” jest bezpłatna?

Tak — pełny tekst „OpenAI API: chat.completions i przesyłanie strumieniowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „OpenAI API: chat.completions i przesyłanie strumieniowe”?

Klient OpenAI, lista messages, role system/user/assistant, przesyłanie strumieniowe za pomocą stream=True. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „OpenAI API: chat.completions i przesyłanie strumieniowe”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. OpenAI API: chat.completions i przesyłanie strumieniowe
  2. Anthropic Claude API w Pythonie
  3. Wywoływanie funkcji i używanie narzędzi z LLM
  4. Projektowanie promptów dla produkcyjnych aplikacji LLM
← Powrót do Learn AI with Python