Integracja Ollama z Pythonem: Przykłady REST API i klienta Pythona

+ Konkretne Przykłady Używania Myślących LLMów

Page content

W tym wpisie omówimy dwa sposoby połączenia swojej aplikacji Python z Ollama: 1. Poprzez HTTP REST API; 2. Poprzez oficjalną bibliotekę Pythona do Ollama.

Omówimy zarówno chat, jak i generate, a następnie porozmawiamy o tym, jak skutecznie korzystać z „modeli myślenia”.

ollama i python

Ollama staje się bardzo szybko jednym z najwygodniejszych sposobów uruchamiania dużych modeli językowych (LLM) lokalnie. Aby zobaczyć, jak Ollama porównuje się do vLLM, Docker Model Runner, LocalAI i dostawców chmurowych — w tym kiedy wybrać każdy z nich — zobacz Hostowanie LLM: Porównanie lokalnego, samodzielnie hostowanego i infrastruktury chmurowej. Z powodu prostego interfejsu i wsparcia dla popularnych otwartych modeli takich jak Llama 3, Mistral, Qwen2.5, a nawet „wariantów myślenia” takich jak qwen3, łatwo jest wgrać możliwości AI bezpośrednio do swoich projektów Pythona — bez konieczności korzystania z zewnętrznego API chmurowego.


🧩 Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz:

  • Ollama zainstalowany i uruchomiony lokalnie (ollama serve)
  • Python 3.9+
  • Wymagane zależności:
pip install requests ollama

Potwierdź, że Ollama działa, wykonując:

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ć treść lub wyświetlać ją w czasie rzeczywistym w przypadku botów rozmachowych lub narzędzi CLI.


Przykład 2: API Generate

Jeśli nie potrzebujesz kontekstu rozmowy ani 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

Klient Pythona Ollama oferuje czystszy interfejs dla programistów, którzy preferują pełną pracę 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 koncepcji dekoratorów w Pythonie."
)

print(output['response'])

Lub przesyłaj wynik:

stream = ollama.generate(
    model="llama3.1",
    prompt="Wymień trzy zalety korzystania z 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ą strukturalny output, często w formacie takim jak:

🧠

  Kroki rozumowania tutaj...
</think>

Ostateczna odpowiedź tutaj.

To czyni je przydatnymi do:

  • Debugowania rozumowania modelu
  • Badania interpretowalności
  • Budowania narzędzi, które oddzielają myśl 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"🧠(.*?)✅", content, re.DOTALL)
answer = re.sub(r"🧠.*?✅", "", content, flags=re.DOTALL)

print("🧠 Proces myślenia:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Ostateczna odpowiedź:\n", answer.strip())

Kiedy używać modeli myślenia

Przypadek użycia Zalecany model Dlaczego
Interpretowalność / Debugowanie qwen3 Widoczne śladowanie 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
Proste generowanie tekstu /api/generate ollama.generate()
Konwersacyjny chat /api/chat ollama.chat()
Obsługa strumienia Tak Tak
Działa z modelami myślenia Tak Tak

Lokalny design Ollama sprawia, że jest idealny do zastosowań AI bezpiecznych, offline lub wrażliwych na prywatność. Niezależnie od tego, czy budujesz interaktywnego chatbota, czy usługę w tle do wzbogacania danych, możesz bezproblemowo wgrać LLM do swojego przepływu pracy Pythona — z pełną kontrolą nad modelami, opóźnieniem i danymi. Dla szerszego porównania Ollama z inną lokalną i chmurową infrastrukturą LLM, sprawdź nasz Hostowanie LLM: Lokalne, samodzielnie hostowane i infrastruktura chmurowa – Porównanie.

Przydatne linki