آنچه در این مقاله میخوانید [پنهانسازی]
اگر دنبال آموزش Ollama هستید، مسیر سریع این است: برنامه را نصب کنید، یک مدل مناسب مثل llama3:8b را با دستور ollama pull بگیرید، با ollama run تست کنید و سپس از طریق REST API یا کتابخانه پایتون ollama در کد خود استفاده کنید. تمام این روند روی سیستم شخصی انجام میشود و نیازی به سرور ابری ندارد.
پیش نیازها و نکتههای کلیدی قبل از شروع
- سخت افزار: اجرای مدلهای 7B روی سیستمهای معمولی قابل انجام است. هرچه مدل بزرگتر باشد، رم و در صورت استفاده از GPU، حافظه گرافیکی بیشتری لازم دارید. اگر حافظه کافی ندارید، از مدلهای کوچکتر یا کوانتیزه استفاده کنید.
- سیستم عامل: ویندوز، مک و لینوکس پشتیبانی میشوند.
- شبکه و حریم خصوصی: Ollama به صورت پیش فرض روی
localhost:11434سرویس میدهد. دادهها از سیستم شما خارج نمیشوند مگر اینکه خودتان در کد مقصد خارجی تنظیم کنید. - هدف استفاده: گفتگومحور، کدنویسی، خلاصه سازی، یا جاسازی متن (Embedding)؟ انتخاب مدل را با توجه به کاربرد انجام دهید.
نصب Ollama روی ویندوز، مک و لینوکس
بهترین مرجع نصب، وبسایت رسمی Ollama است. اگر ترجیح میدهید از خط فرمان استفاده کنید، این روشهای متداول را ببینید:
ویندوز (PowerShell)
winget install Ollama.Ollama
# پس از نصب، سرویس معمولا خودکار اجرا میشود
# برای اطمینان:
ollama --version
macOS (Homebrew)
brew install ollama
# اجرا کردن سرویس
ollama serve
# پنجره را باز نگه دارید یا سرویس را به صورت background اجرا کنید
Linux
curl -fsSL https://ollama.com/install.sh | sh
# سپس:
ollama serve
برای بررسی اجرا بودن سرویس، این دستورها باید بدون خطا پاسخ دهند:
ollama --version
curl http://localhost:11434/api/tags
دانلود و اجرای اولین مدل
- لیست مدلها را بررسی کنید یا مستقیم یک مدل محبوب را بگیرید.
- مدل را Pull کنید تا دانلود و آماده شود.
- با
ollama runاجرا و تست کنید.
# نمونه: مدل عمومی برای گفتگو
ollama pull llama3:8b
# اجرا و تعامل تعاملی
ollama run llama3:8b
# برای خروج از محیط تعاملی:
# تایپ کنید: /bye یا Ctrl+C
چند دستور کاربردی دیگر:
# دیدن مدلهای موجود در سیستم
ollama list
# حذف یک مدل
ollama rm llama3:8b
اگر دنبال مدلهای مناسب کدنویسی هستید، نسخههای Instruct یا Coder از خانوادههایی مثل Llama یا Mistral انتخابهای رایجی هستند. برای آشنایی با زیستبوم مدلها و مخازن آنها، راهنمای Hugging Face چیست؟ پلتفرم مدل های هوش مصنوعی دید کلی خوبی میدهد.
معیار انتخاب مدل مناسب برای کامپیوتر شخصی
- اندازه مدل (Parameters): 7B معمولا نقطه شروع متعادل است. مدلهای بزرگتر دقت بالاتری میدهند اما منابع بیشتری میخواهند.
- کوانتیزه سازی (Quantization): نسخههای Q4 یا Q5 حافظه کمتری مصرف میکنند و روی سیستمهای معمولی کاربردیاند. اگر کیفیت برایتان مهمتر از سرعت است، سراغ کوانتیزه سبکتر یا مدل بزرگتر بروید.
- دامنه کاربرد: برای گفتگو، نسخههای instruct مناسبترند. برای کدنویسی، مدلهای coder یا code-instruct را ترجیح دهید. برای جاسازی متن، مدلهای embedding را انتخاب کنید.
- زبان و چندزبانه بودن: اگر پاسخ فارسی میخواهید، مدل چندزبانه انتخاب کنید یا در System Prompt از ابتدا فارسی بودن خروجی را تاکید کنید.
- محدودیت حافظه: اگر هنگام اجرا با خطای حافظه روبهرو شدید، مدل کوچکتر یا کوانتیزهتر انتخاب کنید.
اگر به دنبال یک مسیر یادگیری منسجم در ابزارها و مدلهای مختلف هستید، دوره آموزش جامع ابزارهای هوش مصنوعی (Ai Master) روند انتخاب و به کارگیری ابزارها را با تمرکز کاربردی پوشش میدهد.
استفاده از Ollama در پایتون: دو روش اصلی
میتوانید از REST API داخلی Ollama یا کتابخانه پایتون ollama استفاده کنید. هر دو روی http://localhost:11434 کار میکنند.
روش 1: REST API (ساده و شفاف)
برای یک درخواست یکجای غیر استریم، stream: false بگذارید تا پاسخ کامل را یکجا بگیرید.
import requests
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3:8b",
"messages": [
{"role": "system", "content": "You are a helpful assistant. پاسخها را به فارسی بده."},
{"role": "user", "content": "دو مزیت اجرای مدل به صورت محلی چیست؟"}
],
"stream": False
}
resp = requests.post(url, json=payload, timeout=180)
resp.raise_for_status()
data = resp.json()
print(data["message"]["content"])
اگر پاسخ مرحلهای و زنده میخواهید، از استریم استفاده کنید و هر خط JSON را پردازش کنید:
import requests, json
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3:8b",
"prompt": "در یک پاراگراف کوتاه، کاربرد خلاصه سازی متن را توضیح بده.",
"stream": True
}
with requests.post(url, json=payload, stream=True) as r:
r.raise_for_status()
for line in r.iter_lines():
if not line:
continue
chunk = json.loads(line.decode("utf-8"))
if "response" in chunk:
print(chunk["response"], end="", flush=True)
if chunk.get("done"):
break
print("\n-- done --")
اگر با خطای اتصال مواجه شدید، بررسی کنید سرویس در حال اجرا است: ollama serve یا از طریق اپ گرافیکی.
روش 2: کتابخانه پایتون ollama (کدنویسی تمیزتر)
کتابخانه رسمی پایتون برای کار با Ollama تجربهای سادهتر ارائه میدهد.
pip install ollama
import ollama
# گفتگوی ساده
res = ollama.chat(
model="llama3:8b",
messages=[
{"role": "system", "content": "پاسخها را کوتاه و فارسی بده."},
{"role": "user", "content": "Ollama چه کاربردی دارد؟"}
]
)
print(res["message"]["content"])
# تولید متن با پرامپت یکخطی
gen = ollama.generate(model="llama3:8b", prompt="سه مورد استفاده از LLM در نرمافزار را نام ببر.")
print(gen["response"])
برای جاسازی متن (در صورت پشتیبانی مدل انتخابی):
from ollama import Client
client = Client(host="http://localhost:11434")
emb = client.embeddings(model="nomic-embed-text", prompt="این یک متن نمونه برای embedding است.")
print(len(emb["embedding"])) # طول بردار embedding
یک مثال عملی: خلاصه سازی فایل متنی با Python و Ollama
هدف: یک فایل متنی را بخوانیم، در چند بخش به مدل بدهیم و خلاصه نهایی بگیریم.
import requests, textwrap, json
MODEL = "llama3:8b"
API = "http://localhost:11434/api/chat"
def chunk(text, size=2000):
for i in range(0, len(text), size):
yield text[i:i+size]
def summarize_section(text):
payload = {
"model": MODEL,
"messages": [
{"role": "system", "content": "تو یک ابزار خلاصه ساز هستی. خلاصه را به فارسی و نکتهوار بده."},
{"role": "user", "content": f"این بخش را خلاصه کن:\n\n{text}"}
],
"stream": False
}
r = requests.post(API, json=payload, timeout=180)
r.raise_for_status()
return r.json()["message"]["content"].strip()
if __name__ == "__main__":
with open("article.txt", "r", encoding="utf-8") as f:
content = f.read()
partial_summaries = [summarize_section(c) for c in chunk(content, 2500)]
joined = "\n".join(f"- {s}" for s in partial_summaries)
final_payload = {
"model": MODEL,
"messages": [
{"role": "system", "content": "خلاصه نهایی یکدست، کوتاه و فارسی باشد."},
{"role": "user", "content": f"اینها خلاصههای میانی هستند، آنها را یک خروجی نهایی منسجم کن:\n{joined}"}
],
"stream": False
}
final = requests.post(API, json=final_payload, timeout=180).json()
print("\nخلاصه نهایی:\n")
print(textwrap.fill(final["message"]["content"], 100))
در فایلهای بلند، تقسیم متن به بخشهای کوچکتر از سرریز حافظه و بافر جلوگیری میکند و کیفیت جمعبندی را بالا میبرد.
شخصی سازی با Modelfile (اختیاری اما کاربردی)
اگر میخواهید یک نسخه سفارشی با System Prompt و پارامترهای دلخواه داشته باشید، یک Modelfile بسازید:
# Modelfile
# فایل را با همین نام ذخیره کنید
FROM llama3:8b
PARAMETER temperature 0.7
PARAMETER num_ctx 8192
SYSTEM پاسخها را به فارسی، دقیق و مختصر ارائه بده.
# ساخت مدل سفارشی
ollama create my-llama-fa -f Modelfile
# اجرا
ollama run my-llama-fa
با افزایش num_ctx (طول پنجره متن)، حافظه بیشتری مصرف میشود. اگر با کندی یا خطا مواجه شدید، مقدار را پایین بیاورید.
بررسی نتیجه و اطمینان از عملکرد صحیح
- تست سریع: در ترمینال
ollama run llama3:8bرا اجرا و یک پرسش کوتاه مطرح کنید. - سلامت سرویس: پاسخ
curl http://localhost:11434/api/tagsباید JSON معتبر باشد. - تایید در پایتون: یک درخواست ساده REST با
stream: falseبفرستید و متن پاسخ را چاپ کنید.
خطاهای رایج و راه حلها
- پورت در حال استفاده: اگر
11434آزاد نیست، برنامه متناقض را ببندید یا سرویس را روی پورت دیگر اجرا کنید و در کلاینت همان پورت را تنظیم کنید. - کمبود حافظه: مدل کوچکتر یا نسخه کوانتیزهتر را انتخاب کنید. بستن برنامههای سنگین هم موثر است.
- GPU شناسایی نشده: درایور و Runtime مربوط (مثل CUDA) را بهروز نگه دارید. اگر GPU در دسترس نیست، اجرا روی CPU هم ممکن است اما کندتر خواهد بود.
- دانلود ناقص مدل:
ollama pullرا دوباره اجرا کنید. اتصال اینترنت و فضای دیسک را بررسی کنید. - تاخیر زیاد در اولین پاسخ: بار اول بارگذاری وزنها زمانبر است. اجرای بعدی معمولا سریعتر میشود.
نکات تکمیلی برای استفاده حرفهای
- Prompt Engineering: از System Prompt برای تعریف لحن، زبان و محدودیتها استفاده کنید تا پاسخها پایدارتر شوند.
- Caching: نتایج تکراری را در لایه اپلیکیشن کش کنید تا بار روی مدل کاهش یابد.
- ایمنی و بازبینی: خروجی مدل را قطعی در نظر نگیرید. برای کاربردهای حساس، بازبینی انسانی یا فیلترهای اعتبارسنجی قرار دهید.
- بهروزرسانی مدل: هر زمان نیاز بود، مدل جدیدی را
pullکنید و در محیط staging تاثیر آن بر کیفیت و منابع را بسنجید.
اگر به موضوع ایجنتها و مدلهای تازه علاقه دارید، معرفی Muse Wonder Full چیست؟ مدل متا برای استدلال و Agentها دید خوبی از روندهای جدید میدهد و در انتخاب نقشه راه کمک میکند.
گام بعدی چیست؟
یک مدل سبک 7B را نصب و اجرا کنید، یک اسکریپت پایتون کوتاه بنویسید و فرآیند پرسش و پاسخ یا خلاصه سازی را انتها به انتها بسنجید. وقتی جریان پایه پایدار شد، سراغ مدلهای تخصصی کدنویسی، تنظیم پارامترها و Modelfile بروید تا کیفیت و سرعت را متناسب با نیاز خودتان بهینه کنید.







