Mengintegrasikan Ollama dengan Python: Contoh REST API dan Klien Python
+ Contoh Spesifik Menggunakan LLM Berpikir
Dalam posting ini, kita akan menjelajahi dua cara untuk menghubungkan aplikasi Python Anda ke Ollama: 1. Melalui HTTP REST API; 2. Melalui perpustakaan Ollama Python resmi.
Kita akan membahas kedua jenis panggilan, yaitu chat dan generate, serta kemudian membahas bagaimana menggunakan “model berpikir” secara efektif.
Ollama telah dengan cepat menjadi salah satu cara paling nyaman untuk menjalankan model bahasa besar (LLMs) secara lokal. Dengan antarmuka yang sederhana dan dukungan untuk model terbuka populer seperti Llama 3, Mistral, Qwen2.5, bahkan varian “berpikir” seperti qwen3, mudah untuk menyematkan kemampuan AI langsung ke dalam proyek Python Anda — tanpa bergantung pada API cloud eksternal.
🧩 Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Ollama terinstal dan berjalan secara lokal (
ollama serve
) - Python 3.9+
- Ketergantungan yang diperlukan:
pip install requests ollama
Konfirmasi bahwa Ollama sedang berjalan dengan menjalankan:
ollama list
Anda seharusnya melihat model yang tersedia seperti llama3
, mistral
, atau qwen3
.
⚙️ Opsi 1: Menggunakan REST API Ollama
REST API sangat ideal ketika Anda ingin memiliki kontrol maksimal atau ketika mengintegrasikan dengan kerangka kerja yang sudah menangani permintaan HTTP.
Contoh 1: API Chat
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Anda adalah asisten Python."},
{"role": "user", "content": "Tulis fungsi yang membalikkan sebuah string."}
]
}
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 mengalirkan respons baris demi baris (mirip dengan API streaming OpenAI). Anda dapat mengumpulkan konten atau menampilkannya secara langsung untuk chatbot atau alat CLI.
Contoh 2: API Generate
Jika Anda tidak membutuhkan konteks chat atau peran, gunakan endpoint yang lebih sederhana /api/generate
:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Jelaskan rekursi dalam satu kalimat."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Endpoint ini sangat cocok untuk tugas pembuatan teks satu kali — ringkasan, cuplikan kode, dll.
🐍 Opsi 2: Menggunakan Perpustakaan Python Ollama
Perpustakaan Python Ollama menyediakan antarmuka yang lebih bersih bagi pengembang yang lebih suka tetap sepenuhnya dalam Python.
Contoh 1: API Chat
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Anda adalah asisten kode."},
{"role": "user", "content": "Buat skrip Python yang daftar semua file dalam direktori."}
]
)
print(response['message']['content'])
Ini mengembalikan pesan akhir sebagai dictionary. Jika Anda ingin streaming, Anda dapat mengiterasi aliran chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Tulis haiku tentang rekursi."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Contoh 2: API Generate
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Ringkas konsep dekorator dalam Python."
)
print(output['response'])
Atau alirkan hasilnya:
stream = ollama.generate(
model="llama3.1",
prompt="Sebutkan tiga keunggulan menggunakan Python untuk proyek AI.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Bekerja dengan Model “Berpikir”
Ollama mendukung “model berpikir” seperti qwen3, yang dirancang untuk menampilkan langkah-langkah penalaran mereka secara terpisah. Model-model ini menghasilkan output terstruktur, sering dalam format seperti:
🧠
Langkah-langkah penalaran di sini...
</think>
Jawaban akhir di sini.
Ini membuat mereka berguna untuk:
- Debugging penalaran model
- Penelitian interpretabilitas
- Membangun alat yang memisahkan pikiran dari output
Contoh: Menggunakan Model Berpikir
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Apa ibu kota Australia?"}
]
)
content = response['message']['content']
# Secara opsional ekstrak bagian "berpikir"
import re
thinking = re.findall(r"🧠(.*?)✅", content, re.DOTALL)
answer = re.sub(r"🧠.*?✅", "", content, flags=re.DOTALL)
print("🧠 Proses berpikir:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Jawaban akhir:\n", answer.strip())
Kapan Menggunakan Model Berpikir
Kasus Penggunaan | Model yang Direkomendasikan | Alasan |
---|---|---|
Interpretasi / Debugging | qwen3 |
Lihat jejak penalaran |
Aplikasi sensitif kinerja | qwen3 mode non-berpikir |
Lebih cepat, kurang rinci |
Edukasi / Penjelasan | qwen3 |
Menunjukkan logika langkah demi langkah |
✅ Ringkasan
Tugas | REST API | Klien Python |
---|---|---|
Pembuatan teks sederhana | /api/generate |
ollama.generate() |
Chat konversasional | /api/chat |
ollama.chat() |
Dukungan streaming | Ya | Ya |
Bekerja dengan model berpikir | Ya | Ya |
Desain Ollama yang berbasis lokal membuatnya ideal untuk aplikasi AI yang aman, offline, atau sensitif privasi. Baik Anda sedang membangun chatbot interaktif atau layanan pengayaan data latar belakang, Anda dapat mengintegrasikan LLM secara mulus ke dalam alur kerja Python Anda — dengan kontrol penuh atas model, latensi, dan data.
Tautan yang Berguna
- https://pypi.org/project/ollama/
- Ollama cheatsheet
- Python Cheatsheet
- Pasang dan konfigurasi Ollama
- Membatasi LLM dengan Output Terstruktur: Ollama, Qwen3 & Python atau Go
- Perbandingan Output Terstruktur di Berbagai Penyedia LLM Populer - OpenAI, Gemini, Anthropic, Mistral dan AWS Bedrock
- Masalah Output Terstruktur pada Ollama GPT-OSS
- Bagaimana Ollama Mengelola Permintaan Paralel
- Uji: Alokasi memori dan penjadwalan model dalam versi baru Ollama - v0.12.1