Chcesz zintegrować Claude API z Pythonem, ale nie wiesz od czego zacząć? W tym przewodniku przeprowadzę Cię przez cały proces — od założenia konta w Anthropic, przez instalację biblioteki, po wysyłanie pierwszych zapytań i obsługę zaawansowanych scenariuszy. Po lekturze będziesz mieć działający kod i solidne podstawy do budowania własnych aplikacji opartych na AI.
Czym jest Claude API i dlaczego warto używać go w Pythonie?
Claude API to interfejs programistyczny udostępniany przez Anthropic, który pozwala wywoływać modele językowe z rodziny Claude (Haiku, Sonnet, Opus) bezpośrednio z kodu. Python to naturalny wybór dla większości projektów AI — ma bogatą bibliotekę do data science, szeroki ekosystem narzędzi i oficjalną bibliotekę anthropic utrzymywaną przez samego producenta.
Kilka twardych faktów:
- Kontekstowe okno Claude 3.5 Sonnet wynosi 200 000 tokenów — to ok. 150 000 słów w jednym żądaniu.
- Cena wejściowa dla Claude 3.5 Haiku to $0.80 za milion tokenów (stan na 2025 r.), co czyni go atrakcyjnym do zadań produkcyjnych.
- Anthropic regularnie publikuje wyniki bezpieczeństwa modeli w ramach tzw. Model Cards — warto je znać, jeśli budujesz aplikacje dla klientów.
Modele dostępne przez API
| Model | Mocne strony | Koszt (wejście / wyjście) |
|---|---|---|
| Claude 3.5 Haiku | Szybkość, koszt | $0.80 / $4.00 za 1M tokenów |
| Claude 3.5 Sonnet | Balans jakość/cena | $3.00 / $15.00 za 1M tokenów |
| Claude 3 Opus | Najwyższa jakość | $15.00 / $75.00 za 1M tokenów |
Uwaga: Ceny mogą się zmieniać. Zawsze sprawdzaj aktualny cennik na anthropic.com/pricing.
Konfiguracja środowiska — instalacja i klucz API
Założenie konta i pobranie klucza
- Przejdź na console.anthropic.com i utwórz konto.
- W zakładce API Keys wygeneruj nowy klucz — zapisz go od razu, bo nie zobaczysz go ponownie.
- Doładuj konto kredytami (minimalna wpłata to $5) lub aktywuj plan płatny.
Bezpieczeństwo: Nigdy nie wklejaj klucza API bezpośrednio do kodu. Używaj zmiennych środowiskowych lub pliku
.env.
Instalacja biblioteki anthropic
Terminalpip install anthropic
Jeśli pracujesz w projekcie z wirtualnym środowiskiem (co zdecydowanie polecam):
Terminalpython -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows pip install anthropic python-dotenv
Ustawienie zmiennej środowiskowej
Utwórz plik .env w katalogu projektu:
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxx
W kodzie ładuj go tak:
Pythonfrom dotenv import load_dotenv import os load_dotenv() api_key = os.getenv("ANTHROPIC_API_KEY")
Pierwsze zapytanie — Hello, Claude!
Poniżej najprostszy działający przykład używania claude api python:
Pythonimport anthropic client = anthropic.Anthropic() # klucz pobiera automatycznie z ANTHROPIC_API_KEY message = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1024, messages=[ {"role": "user", "content": "Wyjaśnij, czym jest rekurencja w programowaniu."} ] ) print(message.content[0].text)
Co zwraca API?
Obiekt message ma kilka kluczowych pól:
message.content— lista bloków odpowiedzi (typtextlubtool_use)message.usage.input_tokens— liczba tokenów wejściowych (płatne)message.usage.output_tokens— liczba tokenów wyjściowych (płatne)message.stop_reason— powód zakończenia (end_turn,max_tokens,tool_use)
Pythonprint(f"Użyto tokenów: {message.usage.input_tokens} in / {message.usage.output_tokens} out")
Zaawansowane techniki — jak używać Claude API w Pythonie efektywnie
System prompt i kontrola zachowania modelu
System prompt to instrukcja, którą wysyłasz przed rozmową — definiuje rolę modelu, ton i ograniczenia. To jeden z najpotężniejszych mechanizmów w programowaniu z Claude w Pythonie.
Pythonmessage = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=2048, system="Jesteś ekspertem od Pythona. Odpowiadaj zwięźle, zawsze podawaj przykłady kodu.", messages=[ {"role": "user", "content": "Jak działa list comprehension?"} ] )
Multi-turn conversation — zarządzanie historią rozmowy
Claude API jest bezstanowe — każde żądanie musi zawierać pełną historię rozmowy. Musisz samodzielnie zarządzać kontekstem:
Pythonhistory = [] def chat(user_message: str) -> str: history.append({"role": "user", "content": user_message}) response = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1024, system="Jesteś pomocnym asystentem programisty.", messages=history ) assistant_reply = response.content[0].text history.append({"role": "assistant", "content": assistant_reply}) return assistant_reply # Przykład użycia print(chat("Czym jest dekorator w Pythonie?")) print(chat("Podaj mi przykład z własnym dekoratorem mierzącym czas wykonania."))
Streaming — odpowiedzi w czasie rzeczywistym
Dla długich odpowiedzi lub aplikacji chatbotowych streaming znacząco poprawia UX — użytkownik widzi tekst pojawiający się token po tokenie, zamiast czekać na całą odpowiedź.
Pythonwith client.messages.stream( model="claude-3-5-sonnet-20241022", max_tokens=1024, messages=[{"role": "user", "content": "Napisz funkcję sortowania bąbelkowego w Pythonie z komentarzami."}] ) as stream: for text in stream.text_stream: print(text, end="", flush=True)
Praktyczna wskazówka: Streaming jest szczególnie przydatny w aplikacjach webowych (np. FastAPI + WebSocket lub Server-Sent Events). Użytkownicy postrzegają streaming jako ok. 40% szybszy — nawet jeśli całkowity czas generowania jest taki sam.
Vision — analiza obrazów
Claude 3.x obsługuje obrazy jako dane wejściowe. Możesz wysłać obraz jako base64 lub URL:
Pythonimport base64 with open("diagram.png", "rb") as f: image_data = base64.standard_b64encode(f.read()).decode("utf-8") message = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1024, messages=[ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": image_data, }, }, {"type": "text", "text": "Opisz, co widać na tym diagramie architektury."} ], } ], )
Tool Use (Function Calling) — Claude jako agent
Tool Use to mechanizm, który pozwala Claude'owi wywoływać zewnętrzne funkcje — pobierać dane z API, wykonywać obliczenia, przeszukiwać bazy danych. To fundament budowania agentów AI.
Pythontools = [ { "name": "get_weather", "description": "Pobiera aktualną pogodę dla podanego miasta.", "input_schema": { "type": "object", "properties": { "city": { "type": "string", "description": "Nazwa miasta, np. Warszawa" } }, "required": ["city"] } } ] response = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1024, tools=tools, messages=[{"role": "user", "content": "Jaka jest teraz pogoda w Krakowie?"}] ) # Sprawdzamy, czy Claude chce użyć narzędzia if response.stop_reason == "tool_use": tool_use = next(b for b in response.content if b.type == "tool_use") print(f"Claude wywołuje: {tool_use.name} z parametrami: {tool_use.input}")
Obsługa błędów i dobre praktyki produkcyjne
Typowe błędy i jak je obsługiwać
Pythonfrom anthropic import ( Anthropic, APIConnectionError, RateLimitError, APIStatusError, ) import time client = Anthropic() def safe_request(prompt: str, retries: int = 3) -> str: for attempt in range(retries): try: message = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1024, messages=[{"role": "user", "content": prompt}] ) return message.content[0].text except RateLimitError: wait_time = 2 ** attempt # exponential backoff: 1s, 2s, 4s print(f"Rate limit — czekam {wait_time}s...") time.sleep(wait_time) except APIConnectionError as e: print(f"Problem z połączeniem: {e}") raise except APIStatusError as e: print(f"Błąd API {e.status_code}: {e.message}") raise raise RuntimeError("Przekroczono limit prób")
Optymalizacja kosztów
- Używaj cache'owania promptów (
prompt_caching) dla powtarzalnych system promptów — Anthropic oferuje 90% zniżki na tokeny z cache'a. - Wybieraj model do zadania — Claude 3.5 Haiku jest 4× tańszy niż Sonnet przy podobnej jakości dla prostych zadań (klasyfikacja, ekstrakcja danych).
- Monitoruj użycie przez dashboard na console.anthropic.com lub implementuj własne logowanie
usagez każdej odpowiedzi.
Asynchroniczność z asyncio
W aplikacjach webowych lub przy równoległym przetwarzaniu wiele zapytań opłaca się używać klienta asynchronicznego:
Pythonimport asyncio import anthropic async def async_query(prompt: str) -> str: async with anthropic.AsyncAnthropic() as client: message = await client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=512, messages=[{"role": "user", "content": prompt}] ) return message.content[0].text async def main(): prompts = [ "Napisz funkcję do walidacji emaila.", "Wyjaśnij różnicę między list a tuple.", "Co to jest GIL w Pythonie?" ] results = await asyncio.gather(*[async_query(p) for p in prompts]) for r in results: print(r[:100], "...\n") asyncio.run(main())
Praktyczny projekt: generator dokumentacji kodu
Poniżej kompletny, gotowy do uruchomienia skrypt — czyta plik .py i generuje dokumentację Markdown. Świetny punkt startowy do nauki programowania z Claude w Pythonie:
Pythonimport anthropic import sys from pathlib import Path def generate_docs(file_path: str) -> str: code = Path(file_path).read_text(encoding="utf-8") client = anthropic.Anthropic() message = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=4096, system=( "Jesteś ekspertem od dokumentacji Pythona. " "Na podstawie podanego kodu wygeneruj dokumentację w formacie Markdown: " "krótki opis modułu, tabela funkcji/klas z opisami, przykład użycia." ), messages=[ {"role": "user", "content": f"Wygeneruj dokumentację dla tego kodu:\n\n```python\n{code}\n```"} ] ) return message.content[0].text if __name__ == "__main__": if len(sys.argv) != 2: print("Użycie: python doc_generator.py <plik.py>") sys.exit(1) docs = generate_docs(sys.argv[1]) output_file = sys.argv[1].replace(".py", "_docs.md") Path(output_file).write_text(docs, encoding="utf-8") print(f"Dokumentacja zapisana w: {output_file}")
Uruchomienie: python doc_generator.py moj_skrypt.py
Chcesz iść głębiej? Wypróbuj kurs Claude Code na VITA
Jeśli ten claude api tutorial python wciągnął Cię na tyle, że chcesz zbudować coś więcej — własne narzędzia CLI, agenty automatyzujące pracę, skrypty integrujące Claude z terminalem — sprawdź kurs Claude Code: Programowanie z AI w Terminalu dostępny na platformie VITA. Kurs pokazuje, jak pracować z Claude Code (narzędziem CLI Anthropic) w prawdziwych projektach: od konfiguracji, przez pisanie i refaktoryzację kodu, po automatyzację złożonych zadań developerskich.
Najlepsze? Możesz zacząć już dziś za darmo. VITA oferuje 3 dni pełnego dostępu do wszystkich kursów bez żadnych opłat — bez kodów rabatowych, bez podstępów, anulujesz kiedy chcesz. Jeden trial daje Ci dostęp do całego katalogu, w tym do kursów z AI, automatyzacji i programowania.
👉 Zacznij bezpłatny 3-dniowy trial na vita.edu.pl/abonament
Podsumowanie — co wiesz już po tym przewodniku?
Przeszedłeś drogę od zera do działającego kodu produkcyjnego. Oto szybka checklista tego, co omówiliśmy:
- ✅ Jak założyć konto Anthropic i bezpiecznie zarządzać kluczem API
- ✅ Instalacja i konfiguracja biblioteki
anthropicw Pythonie - ✅ Pierwsze zapytanie, odczytywanie odpowiedzi i liczenie tokenów
- ✅ System prompt, multi-turn conversation i zarządzanie historią
- ✅ Streaming odpowiedzi w czasie rzeczywistym
- ✅ Analiza obrazów (Vision) i Tool Use (Function Calling)
- ✅ Obsługa błędów, retry z exponential backoff i async
- ✅ Optymalizacja kosztów z prompt caching i doborem modelu
Oficjalna dokumentacja Anthropic dostępna jest pod adresem docs.anthropic.com — warto ją mieć zawsze otwartą w drugiej karcie. Biblioteka anthropic dla Pythona jest open-source i dostępna na GitHub, gdzie możesz śledzić changelog i zgłaszać issues.