ओल्लामा को पाइथन के साथ एकीकृत करना: REST API और पाइथन क्लाइंट उदाहरण

+ सोचने वाले LLMs का उपयोग करने के विशिष्ट उदाहरण

Page content

इस पोस्ट में, हम दो तरीकों का पता लगाएंगे जिससे आप अपने Python एप्लिकेशन को Ollama से कनेक्ट कर सकते हैं: 1. HTTP REST API के माध्यम से; 2. अधिकृत Ollama Python लाइब्रेरी के माध्यम से।

हम दोनों चैट और जेनरेट कॉल्स को कवर करेंगे, और फिर यह चर्चा करेंगे कि कैसे आप “थिंकिंग मॉडल्स” को प्रभावी ढंग से उपयोग कर सकते हैं।

ollama और python

Ollama ने तेजी से स्थानीय रूप से बड़े भाषा मॉडल्स (LLMs) चलाने का सबसे सुविधाजनक तरीका बन गया है। अपने सरल इंटरफेस और लोकप्रिय ओपन मॉडल्स जैसे Llama 3, Mistral, Qwen2.5, और यहां तक कि “थिंकिंग” वैरिएंट्स जैसे qwen3 के समर्थन के साथ, यह आसान है कि आप सीधे अपने Python प्रोजेक्ट्स में AI क्षमताएं एम्बेड कर सकते हैं — बिना बाहरी क्लाउड APIs पर निर्भर किए।


🧩 पूर्वापेक्षाएँ

आगे बढ़ने से पहले, सुनिश्चित करें कि आपके पास है:

  • Ollama स्थानीय रूप से इंस्टॉल और चल रहा है (ollama serve)
  • Python 3.9+
  • आवश्यक डिपेंडेंसीज़:
pip install requests ollama

इससे पुष्टि करें कि Ollama चल रहा है:

ollama list

आपको उपलब्ध मॉडल्स जैसे llama3, mistral, या qwen3 देखने चाहिए।


⚙️ विकल्प 1: Ollama के REST API का उपयोग करना

REST API तब आदर्श होता है जब आप अधिकतम नियंत्रण चाहते हैं या जब फ्रेमवर्क्स के साथ इंटीग्रेट करते हैं जो पहले से ही HTTP रिक्वेस्ट्स हैंडल करते हैं।

उदाहरण 1: चैट API

import requests
import json

url = "http://localhost:11434/api/chat"

payload = {
    "model": "llama3.1",
    "messages": [
        {"role": "system", "content": "You are a Python assistant."},
        {"role": "user", "content": "Write a function that reverses a 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="")

👉 Ollama REST API रिस्पॉन्स्स को लाइन-बाई-लाइन स्ट्रीम करता है (OpenAI के स्ट्रीमिंग API के समान)। आप कंटेंट को एकत्रित कर सकते हैं या चैटबॉट्स या CLI टूल्स के लिए रियल-टाइम में प्रदर्शित कर सकते हैं।


उदाहरण 2: जेनरेट API

अगर आपको चैट कॉन्टेक्स्ट या रोल्स की आवश्यकता नहीं है, तो आप सरल /api/generate एंडपॉइंट का उपयोग करें:

import requests

url = "http://localhost:11434/api/generate"
payload = {
    "model": "llama3.1",
    "prompt": "Explain recursion in one sentence."
}

response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
    if line:
        print(line.decode("utf-8"))

यह एंडपॉइंट एक-शॉट टेक्स्ट जेनरेशन टास्क्स के लिए उत्कृष्ट है — सारांश, कोड स्निपेट्स, आदि।


🐍 विकल्प 2: Ollama Python लाइब्रेरी का उपयोग करना

Ollama Python क्लाइंट उन डेवलपर्स के लिए एक साफ़ इंटरफेस प्रदान करता है जो पूरी तरह से Python में रहना पसंद करते हैं।

उदाहरण 1: चैट API

import ollama

response = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "system", "content": "You are a code assistant."},
        {"role": "user", "content": "Generate a Python script that lists all files in a directory."}
    ]
)

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

यह अंतिम संदेश को एक डिक्शनरी के रूप में रिटर्न करता है। अगर आप स्ट्रीमिंग चाहते हैं, तो आप चैट स्ट्रीम पर इटरेट कर सकते हैं:

stream = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "user", "content": "Write a haiku about recursion."}
    ],
    stream=True
)

for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

उदाहरण 2: जेनरेट API

import ollama

output = ollama.generate(
    model="llama3.1",
    prompt="Summarize the concept of decorators in Python."
)

print(output['response'])

या परिणाम स्ट्रीम करें:

stream = ollama.generate(
    model="llama3.1",
    prompt="List three pros of using Python for AI projects.",
    stream=True
)

for chunk in stream:
    print(chunk['response'], end='', flush=True)

🧠 “थिंकिंग” मॉडल्स के साथ काम करना

Ollama “थिंकिंग मॉडल्स” जैसे qwen3 का समर्थन करता है, जो अपने मध्यवर्ती रीज़निंग चरणों को दिखाने के लिए डिज़ाइन किए गए हैं। ये मॉडल्स संरचित आउटपुट उत्पन्न करते हैं, अक्सर इस प्रकार के फॉर्मेट में:

<think>
  Reasoning steps here...
</think>
Final answer here.

इससे उन्हें उपयोगी बनाता है:

  • मॉडल रीज़निंग का डिबगिंग
  • इंटरप्रेटेबिलिटी में रिसर्च
  • थॉट को आउटपुट से अलग करने वाले टूल्स का निर्माण

उदाहरण: एक थिंकिंग मॉडल का उपयोग करना

import ollama

response = ollama.chat(
    model="qwen3",
    messages=[
        {"role": "user", "content": "What is the capital of Australia?"}
    ]
)

content = response['message']['content']

# विकल्प रूप से "थिंकिंग" भाग निकालें
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)

print("🧠 Thought process:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Final answer:\n", answer.strip())

थिंकिंग मॉडल्स का उपयोग कब करें

उपयोग के मामले सिफारिश किया गया मॉडल क्यों
इंटरप्रेटेबिलिटी / डिबगिंग qwen3 रीज़निंग ट्रेस देखें
प्रदर्शन-संवेदनशील ऐप्स qwen3 नॉन-थिंकिंग मोड तेज़, कम वर्बोज़
शैक्षिक / स्पष्टीकरणात्मक qwen3 चरण-दर-चरण लॉजिक दिखाता है

✅ सारांश

कार्य REST API Python क्लाइंट
सरल टेक्स्ट जेनरेशन /api/generate ollama.generate()
संवादात्मक चैट /api/chat ollama.chat()
स्ट्रीमिंग समर्थन हाँ हाँ
थिंकिंग मॉडल्स के साथ काम करता है हाँ हाँ

Ollama का स्थानीय-प्रथम डिज़ाइन इसे सुरक्षित, ऑफ़लाइन, या गोपनीयता-संवेदनशील AI एप्लिकेशन्स के लिए आदर्श बनाता है। चाहे आप एक इंटरैक्टिव चैटबॉट बन रहे हों या एक बैकग्राउंड डेटा एन्चमेंट सर्विस, आप LLMs को अपने Python वर्कफ्लो में सीमलेस रूप से इंटीग्रेट कर सकते हैं — मॉडल्स, लेटेंसी, और डेटा पर पूर्ण नियंत्रण के साथ।

उपयोगी लिंक्स