Lewati ke konten utama

Ollama Python Library: Memulai LLM Secara Lokal

Kuasai Ollama Python SDK untuk pengembangan LLM lokal. Pelajari cara menghasilkan teks, menangani chat multi-putaran, menggunakan model visi, dan membangun aplikasi AI dengan aman.
Diperbarui 17 Apr 2026  · 7 mnt baca

API LLM berbasis cloud memang kuat, tetapi ada kompromi: harga berbasis penggunaan, batas laju, dan ketidakpastian berkelanjutan tentang di mana data Anda diproses. Bagi pengembang yang bekerja dengan data sensitif atau bereksperimen secara intensif, kendala ini cepat menjadi hambatan.

Di sinilah pendekatan local-first menonjol. Perpustakaan Python Ollama menghilangkan hambatan itu dengan memungkinkan Anda menjalankan large language model secara lokal sambil berinteraksi dengannya menggunakan kode Python yang bersih dan native. Ini memberi Anda kendali penuh atas kinerja, biaya, dan privasi.

Dalam artikel ini, saya akan memandu Anda melalui API perpustakaan Python Ollama secara lengkap, mulai dari pembuatan teks sederhana dengan generate() hingga pemanggilan tool dan model visi.

Saya juga menyarankan Anda melihat tutorial Ollama terbaru kami lainnya:

Prasyarat Menjalankan Ollama dengan Python

Sebelum memulai, pastikan perangkat Anda sudah menyiapkan hal-hal berikut:

  • Python 3.8 atau lebih baru

  • Ollama diunduh dari situs web-nya, diinstal, dan berjalan (ollama serve)

  • Setidaknya satu model sudah ditarik (misalnya, ollama pull llama3.2)

situs web ollama

Prasyarat ini penting karena SDK Python hanyalah klien; inferensi sebenarnya terjadi di runtime Ollama. Jika runtime tidak tersedia atau tidak ada model yang sesuai, pemanggilan akan gagal.

Anda juga dapat mempertimbangkan menggunakan Docker dengan Ollama untuk konsistensi versi.

Apa Itu Perpustakaan Python Ollama?

perpustakaan python ollama

Perpustakaan Python Ollama adalah SDK resmi yang membungkus REST API Ollama menjadi antarmuka yang sederhana dan Pythonic. Dengan kata lain, ini mengubah permintaan HTTP tingkat rendah dan payload JSON menjadi fungsi-fungsi Python tingkat tinggi sehingga Anda bisa fokus pada tujuan alih-alih detail transport.

Seiring aplikasi Anda berkembang, abstraksi ini menghilangkan pembuatan permintaan berulang, menstandarkan cara respons ditangani, dan memusatkan penanganan error di satu tempat.

Sebagai perbandingan, permintaan mentah mungkin terlihat seperti ini:

import requests

response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": "llama3.2",
        "prompt": "Explain recursion"
    }
)

Ini berfungsi, tetapi cepat menjadi bertele-tele dan rawan error. Dengan SDK, tugas yang sama menjadi:

import ollama

response = ollama.generate(
    model='llama3.2',
    prompt='Explain recursion'
)

Cara perpustakaan berkomunikasi dengan server Ollama

Di balik layar, setiap pemanggilan SDK menjadi permintaan HTTP ke server Ollama di http://localhost:11434. Skrip Python Anda bertindak sebagai klien, sementara runtime Ollama bertindak sebagai server yang meng-host dan mengeksekusi model.

Pemisahan ini penting karena memungkinkan model berjalan sebagai layanan khusus, membuat manajemen sumber daya (CPU/GPU) lebih efisien dan memungkinkan banyak aplikasi berbagi instance model yang sama.

Jika Anda perlu terhubung ke mesin lain, Anda bisa mengonfigurasi klien khusus:

from ollama import Client

client = Client(host='http://remote-server:11434')
response = client.generate(model='llama3.2', prompt='Hello')

Menginstal dan mengonfigurasi perpustakaan

Instalasi sederhana dan hanya memerlukan dependensi minimal:

pip install ollama

Setelah instalasi, sebaiknya verifikasi konektivitas dengan mencantumkan model yang tersedia. 

Ini membantu Anda memastikan bahwa lingkungan Python, SDK, dan runtime Ollama semuanya terhubung dengan benar.

Untuk melakukannya, jalankan perintah berikut:

import ollama

print(ollama.list())

Menghasilkan Teks Menggunakan generate()

Fungsi generate() dirancang untuk tugas tanpa status, artinya setiap permintaan ditangani secara independen tanpa memori interaksi sebelumnya. Ini ideal untuk tugas seperti peringkasan, penulisan ulang, atau pembuatan kode.

Karena tidak ada konteks yang dipertahankan, kualitas keluaran sepenuhnya bergantung pada seberapa jelas prompt ditulis.

Pembuatan teks dasar

Contoh berikut menunjukkan alur kerja paling sederhana: kirim prompt, terima respons, dan ekstrak teks yang dihasilkan.

import ollama

response = ollama.generate(
    model='llama3.2',
    prompt='Write a Python docstring for a function that calculates factorial'
)

print(response['response'])

Respons juga menyertakan metadata seperti waktu eksekusi dan jumlah token, yang berguna saat mengoptimalkan kinerja.

Menyesuaikan keluaran dengan parameter

Perilaku generasi dapat disesuaikan menggunakan parameter sampling, yang mengontrol bagaimana model memilih token.

Nilai temperature yang lebih rendah menghasilkan keluaran yang lebih deterministik, sementara nilai yang lebih tinggi memperkenalkan lebih banyak variasi. Anda dapat menggunakan parameter seperti top_p dan num_predict untuk menyempurnakan keragaman dan panjang keluaran.

Berikut beberapa parameter penting yang bisa Anda gunakan: 

Parameter

Apa yang Dikontrol

Dampaknya pada Keluaran

Kapan Digunakan

temperature

Keacakan pemilihan token

Lebih rendah = lebih dapat diprediksi, lebih tinggi = lebih kreatif/acak

Gunakan rendah (0,1–0,3) untuk tugas faktual, lebih tinggi (0,7–1,0) untuk penulisan kreatif

top_p

Nucleus sampling (batas massa probabilitas)

Model hanya mempertimbangkan token dalam probabilitas kumulatif teratas p

Gunakan untuk membatasi keluaran yang aneh sambil tetap menjaga keragaman

top_k

Membatasi jumlah kandidat token

Model memilih hanya dari k token paling mungkin

Berguna untuk kontrol yang lebih ketat pada keluaran terstruktur

num_predict

Maksimum token yang dihasilkan

Mengontrol panjang respons

Tingkatkan untuk penjelasan panjang, kurangi untuk jawaban ringkas

Berikut contoh penggunaan parameter top_p, temperature, dan num_predict:

response = ollama.generate(
    model='llama3.2',
    prompt='Explain machine learning in one paragraph',
    options={
        'temperature': 0.2,
        'top_p': 0.9,
        'num_predict': 100
    }
)

Membangun Percakapan Menggunakan chat()

Berbeda dengan generate(), API chat() mendukung interaksi berstatus dengan bekerja pada serangkaian pesan. Ini memungkinkan model mempertahankan konteks di beberapa putaran.

Setiap pesan menyertakan peran, seperti user, assistant, atau system, yang membantu menyusun percakapan.

Permintaan chat satu putaran

Bahkan interaksi satu putaran pun menggunakan format pesan, yang menjadi dasar untuk percakapan yang lebih kompleks.

response = ollama.chat(
    model='llama3.2',
    messages=[
        {'role': 'user', 'content': 'Explain Python decorators'}
    ]
)

print(response['message']['content'])

Mempertahankan konteks multi-putaran

Untuk mempertahankan konteks, Anda secara eksplisit menyimpan dan mengirim ulang seluruh riwayat percakapan pada setiap permintaan. Ini memberi Anda kendali penuh atas apa yang diingat model.

messages = [
    {'role': 'user', 'content': 'What is recursion?'}
]

response = ollama.chat(model='llama3.2', messages=messages)
messages.append(response['message'])

messages.append({'role': 'user', 'content': 'Give an example in Python'})
response = ollama.chat(model='llama3.2', messages=messages)

Menggunakan system prompt untuk membentuk perilaku

System prompt digunakan untuk mendefinisikan perilaku model di awal, seperti nada, batasan, atau peran.

messages = [
    {'role': 'system', 'content': 'You are a strict Python code reviewer.'},
    {'role': 'user', 'content': 'Review this code: def add(a,b): return a+b'}
]

Dukungan Streaming dan Async di Perpustakaan Python Ollama

Untuk aplikasi interaktif, daya tanggap sama pentingnya dengan ketepatan. Ollama mendukung eksekusi streaming dan asynchronous untuk meningkatkan kinerja dan pengalaman pengguna.

Streaming respons secara real time

Streaming memungkinkan Anda memproses keluaran secara bertahap saat dihasilkan, alih-alih menunggu seluruh respons.

for chunk in ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'Write a story'}],
    stream=True
):
    print(chunk['message']['content'], end='', flush=True)

Menggunakan AsyncClient untuk aplikasi async

Eksekusi asynchronous memungkinkan aplikasi Anda menangani banyak permintaan secara bersamaan tanpa memblokir. Anda perlu menggunakan pustaka asyncio Python untuk menerapkannya.

Mari lihat contoh di bawah ini:

import asyncio
from ollama import AsyncClient

async def main():
    client = AsyncClient()
    async for chunk in await client.chat(
        model='llama3.2',
        messages=[{'role': 'user', 'content': 'Explain async programming'}],
        stream=True
    ):
        print(chunk['message']['content'], end='')

asyncio.run(main())

Mengelola Model Ollama dari Python

SDK Ollama juga menyediakan tool untuk mengelola model secara terprogram, yang sangat berguna di lingkungan otomatis.

Mendaftar dan memeriksa model lokal

Anda dapat mengambil daftar model yang tersedia dan memeriksa propertinya, seperti ukuran dan konfigurasinya.

models = ollama.list()
print(models)

info = ollama.show('llama3.2')
print(info)

Menarik dan menghapus model secara terprogram

Model dapat diunduh atau dihapus langsung dari Python, sehingga memudahkan pengelolaan dependensi secara dinamis.

ollama.pull('llama3.2')
ollama.delete('llama3.2')

Menghasilkan dan Menggunakan Embedding dengan Perpustakaan Python Ollama

Embedding merepresentasikan teks sebagai vektor numerik yang menangkap makna semantik. Ini memungkinkan Anda membandingkan teks berdasarkan kesamaan alih-alih kata yang persis sama.

Membuat embedding teks

Contoh berikut mengonversi teks menjadi representasi vektor yang dapat digunakan untuk pencarian atau pengelompokan.

response = ollama.embed(
    model='nomic-embed-text',
    input='Ollama is a local LLM runtime'
)

embedding = response['embeddings'][0]

Membangun pencarian kemiripan dasar

Setelah embedding dibuat, kemiripan dapat diukur menggunakan cosine similarity, yang membandingkan sudut antarputar.

Berikut contoh sederhana fungsi pencarian:

import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Pemanggilan Tool dan Keluaran Terstruktur di Perpustakaan Python Ollama

Untuk membangun aplikasi yang lebih maju, model sering perlu berinteraksi dengan fungsi eksternal atau mengembalikan data terstruktur.

Menerapkan pemanggilan tool dengan fungsi Python

Pemanggilan tool memungkinkan model memanggil fungsi Python yang sudah ditentukan berdasarkan maksud pengguna.

Mari buat fungsi yang menggunakan tool semacam itu:

def get_weather(city: str) -> str:
    """Get current weather for a city"""
    return f"Weather in {city} is sunny"
response = ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'What is the weather in Paris?'}],
    tools=[get_weather]
)

Mendapatkan respons JSON terstruktur

Keluaran terstruktur memastikan bahwa respons dikembalikan dalam format yang konsisten dan dapat dibaca mesin seperti JSON.

response = ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'Review: Great product, 5 stars!'}],
    format='json'
)

Lanjutan: Model Visi dan Ollama Cloud di Python

Ollama mendukung model multimodal dan inferensi berbasis cloud untuk kasus penggunaan yang lebih maju.

Mengirim gambar ke model visi

Model visi dapat memproses teks dan gambar, memungkinkan tugas seperti deskripsi gambar dan analisis visual.

response = ollama.chat(
    model='llama3.2-vision',
    messages=[{
        'role': 'user',
        'content': 'Describe this image',
        'images': ['image.jpg']
    }]
)

Menjalankan model cloud dari Python

Untuk model yang lebih besar yang tidak dapat dijalankan secara lokal, Ollama Cloud menyediakan inferensi ter-host.

ollama signin
ollama.chat(model='deepseek-v3.1:671b-cloud', messages=[...])
from ollama import Client

client = Client(
    host='https://ollama.com',
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

Penanganan Error untuk Jebakan Umum Python Ollama

Saat membangun aplikasi nyata, menangani error secara eksplisit membantu mencegah kegagalan diam-diam dan meningkatkan keandalan.

Menangani pengecualian ResponseError

SDK Ollama menimbulkan pengecualian terstruktur untuk error sisi server, memungkinkan Anda memeriksa apa yang salah.

import ollama

try:
    ollama.generate(model='unknown', prompt='test')
except ollama.ResponseError as e:
    print(e.status_code, e.error)

Mendebug masalah koneksi dan model

Masalah umum termasuk server tidak berjalan, model tidak ada, memori tidak cukup, atau batas konteks terlampaui.

  • Server tidak berjalan: Mulai dengan ollama serve

  • Model tidak ditemukan: Jalankan ollama pull

  • Kehabisan memori: Gunakan model yang lebih kecil atau kuantisasi

  • Masalah konteks: Sesuaikan num_ctx

num_ctx mengontrol jumlah maksimum token yang dapat “dilihat” model sekaligus, termasuk:

  • prompt Anda
  • instruksi sistem
  • riwayat percakapan
  • dokumen yang diambil (RAG)
  • dan token yang dihasilkan model sendiri 

Mengelola parameter ini akan membantu mencegah LLM memangkas konten sebelumnya (biasanya dari awal) atau diam-diam kehilangan instruksi atau data penting.

Penutup

Perpustakaan Python Ollama menyediakan antarmuka lengkap untuk bekerja dengan LLM lokal dan cloud, dari pembuatan teks sederhana hingga kapabilitas lanjutan seperti embedding, pemanggilan tool, dan input multimodal. LLM menjadi layanan lokal yang dapat Anda skrip, uji, dan skala seperti komponen lain dalam tumpukan Anda.

Berdasarkan pengalaman saya menggunakan Ollama, saya merasa bahwa ini adalah opsi yang baik tanpa harus menggunakan LLM cloud. Misalnya, saya bisa menggunakan model open source dengan lebih leluasa. Jika Anda juga mencari lebih banyak opsi untuk berganti-ganti model, Ollama adalah gerbang yang baik untuk mengakses semua itu.

Jika Anda ingin memperdalam keterampilan, saya merekomendasikan mengikuti kursus Developing LLM Applications with LangChain kami atau mengejar sertifikasi Associate AI Engineer for Developers.

Ollama Python Library FAQs

Apakah saya memerlukan GPU yang kuat untuk menggunakan Ollama dengan Python?

Tidak selalu. Ollama dapat berjalan di CPU, tetapi kinerjanya akan lebih lambat dibandingkan menggunakan GPU. Banyak model yang lebih kecil atau terkuantisasi dirancang untuk berjalan efisien di laptop standar. Jika Anda baru memulai atau bereksperimen, CPU biasanya sudah cukup. Untuk beban kerja yang lebih berat atau model yang lebih besar, GPU akan meningkatkan kecepatan dan respons secara signifikan.

Apa perbedaan antara menjalankan model secara lokal dan menggunakan Ollama Cloud?

Menjalankan model secara lokal berarti semuanya terjadi di mesin Anda sendiri, yang memberi Anda kendali penuh atas privasi data dan menghilangkan biaya penggunaan. Sementara itu, Ollama Cloud memungkinkan Anda mengakses model yang jauh lebih besar yang mungkin tidak didukung oleh perangkat keras lokal Anda.

Kapan saya harus menggunakan generate() vs chat()?

Gunakan generate() untuk tugas sederhana dan sekali jalan seperti meringkas teks atau membuat kode. Ini langsung dan tidak memerlukan pengelolaan riwayat percakapan. Gunakan chat() saat Anda memerlukan konteks di beberapa interaksi, seperti saat membangun chatbot atau asisten.

Apa itu embedding, dan mengapa berguna?

Embedding mengonversi teks menjadi vektor numerik yang merepresentasikan makna. Ini memungkinkan Anda membandingkan berbagai potongan teks berdasarkan kesamaan alih-alih kata yang persis sama. Embedding umum digunakan dalam sistem pencarian, mesin rekomendasi, dan retrieval-augmented generation (RAG).

Bagaimana cara menangani error saat menggunakan perpustakaan Python Ollama?

Sebagian besar error berasal dari masalah sederhana, seperti server Ollama tidak berjalan atau model tidak tersedia secara lokal. Perpustakaan menghasilkan pengecualian terstruktur seperti ResponseError, yang dapat Anda tangkap menggunakan blok try/except.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.

Topik

Kursus Rekayasa AI

Program

Insinyur Kecerdasan Buatan (AI) untuk Pengembang

26 Hr
Pelajari cara mengintegrasikan kecerdasan buatan (AI) ke dalam aplikasi perangkat lunak menggunakan antarmuka pemrograman aplikasi (API) dan perpustakaan sumber terbuka. Mulailah perjalanan Anda untuk menjadi seorang Insinyur Kecerdasan Buatan (AI) hari ini!
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow