Integracja Ollama z Pythonem: Przykłady API REST i klienta w Pythonie
+ Konkretne Przykłady Używania Myślących LLMów
W tym wpisie omówimy dwa sposoby łączenia swojej aplikacji Python z Ollama: 1. Poprzez HTTP REST API; 2. Poprzez oficjalną bibliotekę Pythona dla Ollama.
Omówimy zarówno chat, jak i generate, a następnie porozmawiamy o tym, jak skutecznie korzystać z „modeli myślenia”.
Ollama staje się bardzo szybko jednym z najbardziej wygodnych sposobów uruchamiania dużych modeli językowych (LLM) lokalnie. Z powodu prostego interfejsu i wsparcia dla popularnych otwartych modeli takich jak Llama 3, Mistral, Qwen2.5, a nawet wersji „myślenia” takich jak qwen3, łatwo jest wgrać możliwości AI bezpośrednio do swoich projektów Pythona — bez korzystania z zewnętrznego API chmurowego.
🧩 Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz:
pip install requests ollama
Potwierdź, że Ollama działa, wykonując polecenie:
ollama list
Powinieneś zobaczyć dostępne modele takie jak llama3
, mistral
lub qwen3
.
⚙️ Opcja 1: Użycie REST API Ollama
REST API jest idealny, gdy chcesz mieć maksymalny kontrolę lub gdy integrujesz się z ramami, które już obsługują żądania HTTP.
Przykład 1: API Chat
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Jesteś asystentem Pythona."},
{"role": "user", "content": "Napisz funkcję, która odwraca ciąg znaków."}
]
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data.get("message", {}).get("content", ""), end="")
👉 REST API Ollama przesyła odpowiedzi linia po linii (podobnie jak API przesyłania OpenAI). Możesz gromadzić zawartość lub wyświetlać ją w czasie rzeczywistym dla chatbotów lub narzędzi CLI.
Przykład 2: API Generate
Jeśli nie potrzebujesz kontekstu rozmowy lub ról, użyj prostszego punktu końcowego /api/generate
:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Wyjaśnij rekurencję w jednym zdaniu."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Ten punkt końcowy jest świetny do jednorazowych zadań generowania tekstu — streszczeń, fragmentów kodu itp.
🐍 Opcja 2: Użycie biblioteki Pythona Ollama
Ollama Python client oferuje czystszy interfejs dla programistów, którzy preferują pozostać w pełni w Pythonie.
Przykład 1: API Chat
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Jesteś asystentem kodowym."},
{"role": "user", "content": "Wygeneruj skrypt Pythona, który wyświetla wszystkie pliki w katalogu."}
]
)
print(response['message']['content'])
To zwraca końcową wiadomość jako słownik. Jeśli chcesz przesyłanie, możesz iterować po strumieniu rozmowy:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Napisz haiku o rekurencji."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Przykład 2: API Generate
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Streszczenie pojęcia dekoratorów w Pythonie."
)
print(output['response'])
Lub przesyłaj wynik:
stream = ollama.generate(
model="llama3.1",
prompt="Wymień trzy zalety użycia Pythona w projektach AI.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Praca z „modelami myślenia”
Ollama obsługuje „modele myślenia” takie jak qwen3, zaprojektowane do pokazywania ich kroków rozumowania. Te modele generują strukturalne wyjście, często w formacie takim jak:
</think>
Kroki rozumowania tutaj...
To sprawia, że są przydatne do:
- Debugowania rozumowania modelu
- Badania interpretowalności
- Budowania narzędzi, które oddzielają myślenie od wyjścia
Przykład: Użycie modelu myślenia
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Jaka jest stolica Australii?"}
]
)
content = response['message']['content']
# Opcjonalnie wyodrębnij „część myślenia”
import re
thinking = re.findall(r"</think>
Kroki rozumowania tutaj...
Kiedy używać modeli myślenia
Przypadek użycia | Zalecany model | Dlaczego |
---|---|---|
Interpretowalność / Debugowanie | qwen3 |
Widoczne ślady rozumowania |
Aplikacje wrażliwe na wydajność | qwen3 tryb bez myślenia |
Szybsze, mniej rozbudowane |
Edukacyjne / Wyjaśniające | qwen3 |
Pokazuje krok po kroku logikę |
✅ Podsumowanie
Zadanie | REST API | Klient Pythona |
---|---|---|
Prosta generacja tekstu | /api/generate |
ollama.generate() |
Rozmowa chatowa | /api/chat |
ollama.chat() |
Obsługa przesyłania | Tak | Tak |
Działa z modelami myślenia | Tak | Tak |
Ollama’s lokalny design sprawia, że jest idealny do zastosowań AI zabezpieczonych, offline lub wrażliwych na prywatność. Niezależnie od tego, czy tworzysz interaktywnego chatbota, czy usługę w tle do wzbogacania danych, możesz bezproblemowo zintegrować LLM do swojego przepływu pracy Pythona — z pełną kontrolą nad modelami, opóźnieniami i danymi.
Przydatne linki
- https://pypi.org/project/ollama/
- Ollama cheatsheet
- Python Cheatsheet
- Zainstaluj i skonfiguruj Ollama
- Ograniczanie LLM za pomocą strukturalnego wyjścia: Ollama, Qwen3 & Python lub Go
- Porównanie strukturalnego wyjścia wśród popularnych dostawców LLM — OpenAI, Gemini, Anthropic, Mistral i AWS Bedrock
- Problemy z wyjściem strukturalnym w Ollama GPT-OSS
- Jak Ollama obsługuje żądania równoległe
- Test: alokacja pamięci i harmonogramowanie modeli w nowej wersji Ollama — v0.12.1