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

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

Page content

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 i python

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:

  • 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 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