Ana içeriğe atla

Ollama Python Kütüphanesi: LLM’leri Yerelde Kullanmaya Başlama

Yerel LLM geliştirme için Ollama Python SDK’sında ustalaşın. Metin üretmeyi, çok turlu sohbetleri yönetmeyi, görsel modelleri kullanmayı ve güvenli yapay zeka uygulamaları oluşturmayı öğrenin.
Güncel 17 Nis 2026  · 7 dk. oku

Bulut LLM API’leri güçlüdür, ancak bazı ödünlerle gelir: kullanım başına fiyatlandırma, oran sınırlamaları ve verilerinizin nerede işlendiğine dair sürekli belirsizlik. Hassas verilerle çalışan veya yoğun şekilde deney yapan geliştiriciler için bu kısıtlar hızla sürtünmeye dönüşebilir.

İşte bu noktada yerel-öncelikli yaklaşımlar öne çıkar. Ollama Python kütüphanesi, büyük dil modellerini yerelde çalıştırmanıza ve onlarla temiz, Python’a özgü kodla etkileşime girmenize olanak tanıyarak bu sürtünmeyi ortadan kaldırır. Bu da performans, maliyet ve gizlilik üzerinde tam denetim sağlar.

Bu yazıda, generate() ile basit metin üretiminden araç çağırma ve görsel modellere kadar Ollama Python kütüphanesi API’sini baştan sona anlatacağım.

Ayrıca diğer güncel Ollama eğitimlerimize de göz atmanızı öneririm:

Python ile Ollama’yı Çalıştırmak için Önkoşullar

Başlamadan önce cihazınızda aşağıdaki kurulumların olduğundan emin olun:

  • Python 3.8 veya üzeri

  • Ollama’nın web sitesinden indirilmiş, kurulmuş ve çalışıyor olması (ollama serve)

  • En az bir modelin çekilmiş olması (ör. ollama pull llama3.2)

ollama website

Bu önkoşullar önemlidir çünkü Python SDK’sı yalnızca bir istemcidir; gerçek çıkarım Ollama çalışma zamanında gerçekleşir. Çalışma zamanı kullanılamazsa veya uygun bir model yoksa çağrılar başarısız olur.

Sürüm tutarlılığı için Docker ile Ollama kullanmayı da düşünebilirsiniz.

Ollama Python Kütüphanesi Nedir?

ollama python library

Ollama Python kütüphanesi, Ollama REST API’sini basit ve Pythonik bir arayüze saran resmi SDK’dır. Başka bir deyişle, düşük seviyeli HTTP isteklerini ve JSON yüklerini yüksek seviyeli Python fonksiyonlarına dönüştürür; böylece aktarım ayrıntılarından çok amaca odaklanabilirsiniz.

Uygulamanız büyüdükçe bu soyutlama, tekrarlayan istek oluşturmayı ortadan kaldırır, yanıtların nasıl ele alındığını standartlaştırır ve hata yönetimini tek bir yerde merkezileştirir.

Karşılaştırma için, ham bir istek şöyle görünebilir:

import requests

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

Bu çalışır, ancak hızla uzayıp hata yapmaya açık hale gelir. SDK ile aynı görev şöyle olur:

import ollama

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

Kütüphanenin Ollama sunucusuyla nasıl iletişim kurduğu

Arka planda, her SDK çağrısı http://localhost:11434 adresindeki Ollama sunucusuna bir HTTP isteğine dönüşür. Python betiğiniz bir istemci gibi davranırken, Ollama çalışma zamanı modelleri barındıran ve yürüten bir sunucu gibi davranır.

Bu ayrım önemlidir çünkü modelin adanmış bir hizmet olarak çalışmasına olanak tanır; kaynak yönetimini (CPU/GPU) daha verimli kılar ve birden çok uygulamanın aynı model örneğini paylaşmasını sağlar.

Farklı bir makineye bağlanmanız gerekirse özel bir istemci yapılandırabilirsiniz:

from ollama import Client

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

Kütüphaneyi kurma ve yapılandırma

Kurulum basittir ve minimum bağımlılık gerektirir:

pip install ollama

Kurulumdan sonra, mevcut modelleri listeleyerek bağlantıyı doğrulamak iyi bir uygulamadır. 

Bu, Python ortamınızın, SDK’nın ve Ollama çalışma zamanının doğru şekilde bağlandığını doğrulamanıza yardımcı olur.

Bunu yapmak için aşağıdakini çalıştırın:

import ollama

print(ollama.list())

generate() Kullanarak Metin Üretme

generate() fonksiyonu, her isteğin önceki etkileşimleri hatırlamadan bağımsız işlendiği durumsuz görevler için tasarlanmıştır. Bu, özetleme, yeniden yazma veya kod üretimi gibi görevler için idealdir.

Bağlam tutulmadığından, çıktı kalitesi tamamen istemin ne kadar net yazıldığına bağlıdır.

Temel metin üretimi

Aşağıdaki örnek en basit iş akışını gösterir: bir istem gönderin, bir yanıt alın ve üretilen metni çıkarın.

import ollama

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

print(response['response'])

Yanıt ayrıca performans optimizasyonunda yararlı olan yürütme süresi ve token sayıları gibi üst veriler de içerir.

Parametrelerle çıktıyı özelleştirme

Üretim davranışı, modelin token seçimini nasıl yaptığına etki eden örnekleme parametreleri ile ayarlanabilir.

Daha düşük temperature değerleri daha belirleyici çıktılar üretirken, daha yüksek değerler daha fazla çeşitlilik katar. Çıktı çeşitliliğini ve uzunluğunu daha da iyileştirmek için top_p ve num_predict gibi parametreleri kullanabilirsiniz.

Kullanabileceğiniz bazı önemli parametreler şunlardır: 

Parametre

Ne Kontrol Eder

Çıktıyı Nasıl Etkiler

Ne Zaman Kullanılır

temperature

Token seçiminin rastgeleliği

Düşük = daha öngörülebilir, yüksek = daha yaratıcı/rastgele

Olgusal görevler için düşük (0.1–0.3), yaratıcı yazım için yüksek (0.7–1.0) kullanın

top_p

Çekirdek örnekleme (olasılık kütlesi eşiği)

Model, üst kümülatif olasılık p içindeki tokenları dikkate alır

Bir miktar çeşitlilik korurken tuhaf çıktıları sınırlamak için kullanın

top_k

Aday token sayısını sınırlar

Model yalnızca en olası ilk k token arasından seçer

Yapılandırılmış çıktılarda daha sıkı kontrol için yararlıdır

num_predict

Üretilecek azami token sayısı

Yanıtın uzunluğunu kontrol eder

Uzun açıklamalar için artırın, özlü yanıtlar için düşürün

İşte top_p, temperature ve num_predict parametrelerinin kullanımına bir örnek:

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

chat() Kullanarak Sohbetler Oluşturma

generate()’ın aksine, chat() API’si bir mesaj dizisiyle çalışarak durumlu etkileşimleri destekler. Bu, modelin birden fazla tur boyunca bağlamı korumasına olanak tanır.

Her mesaj, konuşmayı yapılandırmaya yardımcı olan user, assistant veya system gibi bir role sahiptir.

Tek turluk sohbet istekleri

Tek turluk bir etkileşim bile, daha karmaşık sohbetler için temel oluşturan mesaj biçimini kullanır.

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

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

Çok turlu bağlamı koruma

Bağlamı korumak için, her istekte konuşma geçmişinin tamamını açıkça saklar ve yeniden gönderirsiniz. Bu, modelin neyi hatırladığı üzerinde size tam kontrol sağlar.

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)

Davranışı şekillendirmek için system istemlerini kullanma

Bir system istemi, modelin ton, kısıtlar veya rol gibi davranışını en baştan tanımlamak için kullanılır.

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

Ollama Python Kütüphanesinde Akış ve Async Desteği

Etkileşimli uygulamalar için yanıt verebilirlik, doğruluk kadar önemlidir. Ollama, performansı ve kullanıcı deneyimini iyileştirmek için hem akış hem de eşzamanlı olmayan yürütmeyi destekler.

Gerçek zamanlı akış yanıtları

Akış, tam yanıtı beklemek yerine çıktıyı üretilirken kademeli olarak işlemenize olanak tanır.

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

Async uygulamalar için AsyncClient kullanma

Eşzamanlı olmayan yürütme, uygulamanızın engellenmeden aynı anda birden fazla isteği işlemesine olanak tanır. Bunu uygulamak için asyncio Python kütüphanesini kullanmanız gerekir.

Aşağıda bir örneğe bakalım:

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())

Python’dan Ollama Modellerini Yönetme

Ollama SDK’sı, özellikle otomatikleştirilmiş ortamlarda yararlı olan, modelleri programlı olarak yönetmek için araçlar da sağlar.

Yerel modelleri listeleme ve inceleme

Kullanılabilir modellerin listesini alabilir ve boyut ile yapılandırma gibi özelliklerini inceleyebilirsiniz.

models = ollama.list()
print(models)

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

Modelleri programatik olarak çekme ve silme

Modeller Python’dan doğrudan indirilebilir veya kaldırılabilir; bu da bağımlılıkları dinamik olarak yönetmeyi kolaylaştırır.

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

Ollama Python Kütüphanesi ile Gömme Vektörleri Oluşturma ve Kullanma

Gömme vektörleri, metni anlamsal anlamı yakalayan sayısal vektörler olarak temsil eder. Bu, metinleri birebir ifadeden ziyade benzerliğe göre karşılaştırmanıza olanak tanır.

Metin gömme vektörleri oluşturma

Aşağıdaki örnek, arama veya kümeleme için kullanılabilecek bir vektör temsiline metni dönüştürür.

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

embedding = response['embeddings'][0]

Basit bir benzerlik araması kurma

Gömme vektörleri üretildikten sonra, benzerlik vektörler arasındaki açıyı karşılaştıran kosinüs benzerliği ile ölçülebilir.

İşte arama fonksiyonunun basit bir örneği:

import numpy as np

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

Ollama Python Kütüphanesinde Araç Çağırma ve Yapılandırılmış Çıktı

Daha gelişmiş uygulamalar oluşturmak için, modellerin sıklıkla harici fonksiyonlarla etkileşime geçmesi veya JSON gibi yapılandırılmış veriler döndürmesi gerekir.

Python fonksiyonlarıyla araç çağırma uygulama

Araç çağırma, modelin kullanıcı niyetine göre önceden tanımlı Python fonksiyonlarını çağırmasına olanak tanır.

Böyle araçları kullanan bir fonksiyon oluşturalım:

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]
)

Yapılandırılmış JSON yanıtları alma

Yapılandırılmış çıktılar, yanıtların JSON gibi tutarlı ve makine tarafından okunabilir bir biçimde döndürülmesini sağlar.

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

İleri Düzey: Python’da Görsel Modeller ve Ollama Cloud

Ollama, daha gelişmiş kullanım senaryoları için çoklu modlu modelleri ve bulut tabanlı çıkarımı destekler.

Görsel modellere görüntü gönderme

Görsel modeller hem metni hem de görüntüleri işleyebilir; bu da görüntü açıklaması ve görsel analiz gibi görevleri mümkün kılar.

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

Python’dan bulut modellerini çalıştırma

Yerelde çalıştırılamayan daha büyük modeller için Ollama Cloud barındırılan çıkarım sunar.

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'}
)

En Yaygın Ollama Python Tuzaklarında Hata Yönetimi

Gerçek uygulamalar geliştirirken hataları açıkça ele almak, sessiz hataların önüne geçer ve güvenilirliği artırır.

ResponseError istisnalarını ele alma

Ollama SDK’sı, sunucu tarafı hatalar için yapılandırılmış istisnalar yükseltir; bu da neyin yanlış gittiğini incelemenize olanak tanır.

import ollama

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

Bağlantı ve model sorunlarını hata ayıklama

Yaygın sorunlar arasında sunucunun çalışmaması, eksik modeller, yetersiz bellek veya bağlam sınırlarının aşılması yer alır.

  • Sunucu çalışmıyor: ollama serve ile başlatın

  • Model bulunamadı: ollama pull çalıştırın

  • Bellek yetersiz: Daha küçük modeller kullanın veya niceleme yapın

  • Bağlam sorunları: num_ctx değerini ayarlayın

num_ctx, modelin aynı anda “görebileceği” azami token sayısını kontrol eder; şunlar dahil:

  • isteminiz
  • system talimatları
  • sohbet geçmişi
  • alınan belgeler (RAG)
  • ve modelin kendi ürettiği tokenlar 

Bu parametreyi yönetmek, LLM’in önceki içeriği (genellikle baştan) kesmesini veya önemli talimatları ya da verileri sessizce kaybetmesini önlemeye yardımcı olur.

Son Düşünceler

Ollama Python kütüphanesi, basit metin üretiminden gömme vektörleri, araç çağırma ve çoklu modlu girdiler gibi gelişmiş yeteneklere kadar yerel ve bulut LLM’lerle çalışmak için eksiksiz bir arayüz sunar. LLM’ler, yığınınızdaki diğer bileşenler gibi betik yazabileceğiniz, test edebileceğiniz ve ölçekleyebileceğiniz yerel bir hizmete dönüşür.

Kendi Ollama deneyimimde, bulut LLM’leri kullanmak zorunda kalmadan iyi bir seçenek olduğunu hissettim. Örneğin, açık kaynak modelleri daha özgürce kullanabiliyorum. Siz de modeller arasında daha fazla seçenekle geçiş yapmak istiyorsanız, Ollama bunların tümüne erişmek için iyi bir kapı aralıyor.

Yeteneklerinizi derinleştirmek istiyorsanız, Developing LLM Applications with LangChain kursumuzu almanızı veya Associate AI Engineer for Developers sertifikasını takip etmenizi öneririm.

Ollama Python Kütüphanesi Hakkında SSS

Ollama’yı Python ile kullanmak için güçlü bir GPU’ya ihtiyacım var mı?

Gerekli değil. Ollama bir CPU üzerinde de çalışabilir, ancak performans bir GPU kullanmaya kıyasla daha yavaş olacaktır. Daha küçük veya niceleme uygulanmış birçok model standart dizüstü bilgisayarlarda verimli çalışacak şekilde tasarlanmıştır. Yeni başlıyorsanız veya denemeler yapıyorsanız, CPU genellikle yeterlidir. Daha ağır iş yükleri veya daha büyük modeller için GPU hız ve yanıt verebilirliği önemli ölçüde artırır.

Modelleri yerelde çalıştırmak ile Ollama Cloud’u kullanmak arasındaki fark nedir?

Modelleri yerelde çalıştırmak her şeyin kendi makinenizde gerçekleştiği anlamına gelir; bu da veri gizliliği üzerinde tam denetim sağlar ve kullanım maliyetlerini ortadan kaldırır. Öte yandan Ollama Cloud, yerel donanımınızın desteklemeyebileceği çok daha büyük modellere erişim sağlar.

generate() ile chat()’i ne zaman kullanmalıyım?

Metni özetlemek veya kod üretmek gibi basit, tek seferlik görevler için generate() kullanın. Kullanımı kolaydır ve sohbet geçmişi yönetimi gerektirmez. Bir sohbet botu veya asistan gibi birden fazla etkileşim boyunca bağlama ihtiyaç duyduğunuzda chat() kullanın.

Gömme vektörleri nedir ve neden faydalıdır?

Gömme vektörleri metni anlamı temsil eden sayısal vektörlere dönüştürür. Bu, farklı metin parçalarını birebir ifade yerine benzerliğe göre karşılaştırmanıza olanak tanır. Genellikle arama sistemlerinde, öneri motorlarında ve geri getirme destekli üretimde (RAG) kullanılır.

Ollama Python kütüphanesini kullanırken hataları nasıl ele alırım?

Hataların çoğu, Ollama sunucusunun çalışmaması veya bir modelin yerelde bulunmaması gibi basit sorunlardan kaynaklanır. Kütüphane, try/except bloklarıyla yakalayabileceğiniz ResponseError gibi yapılandırılmış istisnalar yükseltir.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.

Konular

Yapay Zeka Mühendisliği Kursları

Program

Geliştiriciler için Yardımcı Yapay Zeka Mühendisi

26 sa
API'leri ve açık kaynak kütüphanelerini kullanarak yapay zekayı yazılım uygulamalarına nasıl entegre edeceğinizi öğrenin. Yapay Zeka Mühendisi olma yolculuğunuza bugün başlayın!
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

Devamını GörDevamını Gör