Evde Ücretsiz Ajan Geliştirme: Açık Kaynak Araçlar ve Modeller
Yalnızca ücretsiz araçlar ve açık kaynaklı modeller kullanarak dizüstü bilgisayarında çalışan eksiksiz bir çok ajanlı sistem kurabilirsin. Kredi kartı yok, API hız limiti yok, satıcı bağımlılığı yok. Bedeli ne? Daha yavaş çıkarım ve biraz daha az yetenek. Ancak öğrenme, deneyim ve küçük ölçekli otomasyon için bu fazlasıyla yeterli.
Bu rehberin sonunda, kendi donanımında çalışan yerel bir araştırma ajanın olacak — web arama, dosya okuma, bilgi sentezi — tamamen ücretsiz.
Açık Kaynak Ajan Geliştirmenin Gerekçesi
Maliyet Gerçekliği
Claude API fiyatlandırması üretim iş yükleri için makul, ancak öğrenme ve deney yapmak hızla birikirk. Yerel çıkarım bu endişeyi tamamen ortadan kaldırır — sıfır marjinal maliyetle sonsuz yineleme.
Gizlilik ve Veri Kontrolü
Bazı iş yükleri bulut API’lerine gidemez. Hasta verileri, tescilli kod, hassas iş mantığı — bunların tümü makinende kalmasından yararlanır. Yerel modeller, hiçbir veri donanımını terk etmeden aynı akıllı davranışı sağlar.
Gerçeklik Kontrolü
7–13B parametreli açık kaynak modeller, karmaşık akıl yürütme, kod üretimi ve talimat takibinde sınır modellerinin belirgin biçimde gerisinde kalır. Doğruluğun önemli olduğu üretim için ticari API’ler hâlâ en iyi seçim. Öğrenme ve prototipleme için yerel modeller mükemmeldir.
Açık Kaynak LLM Seçimi
LLM Aileleri
- Llama (Meta): En yaygın desteklenen aile. Llama 3 özellikle yetenekli.
- Mistral: Mükemmel kalite/parametre oranı. Mistral-7B boyutunun üzerinde performans gösterir.
- Phi (Microsoft): Son derece verimli küçük modeller. Phi-3 Mini GPU olmadan çalışır.
- Qwen (Alibaba): Güçlü çok dilli performans.
Model Boyutu ve Donanım Gereksinimleri
| Model | Parametre | Kuantizasyon | VRAM | Hız | Kalite |
|---|---|---|---|---|---|
| Phi-3 Mini | 3,8B | 4-bit | 4GB | Çok Hızlı | İyi |
| Mistral-7B | 7B | 4-bit | 8GB | Hızlı | İyi |
| Llama-3-8B | 8B | 4-bit | 8GB | Hızlı | Çok İyi |
| Llama-3-13B | 13B | 4-bit | 10GB | Orta | Çok İyi |
| Mixtral-8x7B | 46,7B (MoE) | 4-bit | 24GB | Yavaş | Mükemmel |
Kuantizasyon: Neden Önemli
Kuantizasyon, daha az bellek kullanmak için model ağırlıklarını sıkıştırır. Tam hassasiyette 7B parametreli bir model ~28GB RAM gerektirir. Aynı model 4-bit kuantizasyonla ~4GB gerektirir — minimal kalite kaybıyla.
Donanıma göre başlangıç noktaları:
- Dizüstü (8–16GB RAM): 4-bit Phi-3 Mini veya Mistral-7B
- Orta GPU’lu masaüstü: GPU hızlandırmalı Mistral-7B veya Llama-3-8B
- Yüksek performanslı GPU’lu masaüstü: 4-bit Mixtral-8x7B veya Llama-3-70B
Yerel Çıkarım Kurulumu
Ollama: En Kolay Başlangıç Noktası
# macOS'ta kurbrew install ollama
# Linux'ta kurcurl -fsSL https://ollama.com/install.sh | sh
# Mistral-7B'yi indirollama pull mistral
# Daha yavaş donanım için daha hafif seçenekollama pull phi3
# Çıkarım sunucusunu başlatollama serveÇalıştığını doğrula:
curl http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt": "Bir cümlede yapay zeka ajanı nedir?", "stream": false}'LM Studio: GUI Alternatifi
LM Studio, modelleri indirip çalıştırmak için grafik arayüz sağlayan bir masaüstü uygulamasıdır. OpenAI uyumlu API uç noktası sunar.
Açık Kaynak Ajan Çerçeveleri
| Çerçeve | En İyi | Öğrenme Eğrisi |
|---|---|---|
| LangChain | Geniş araç desteği | Orta |
| LangGraph | Durum makinesi iş akışları | Orta-Yüksek |
| AutoGen | Çok ajanlı konuşmalar | Düşük |
| CrewAI | Rol tabanlı çok ajanlı sistemler | Düşük-Orta |
AutoGen veya LangChain ile başla. AutoGen prototipleme için daha hızlı; LangChain ajan döngüsü üzerinde daha fazla kontrol sağlar.
İlk Ajanını Kurma: Yerel Araştırma Asistanı
Ortam Kurulumu
python3 -m venv agent-envsource agent-env/bin/activatepip install langchain langchain-ollama langchain-community duckduckgo-searchTam Ajan
#!/usr/bin/env python3"""Ollama + LangChain kullanarak Yerel Araştırma AjanıÖn koşullar: - ollama serve (arka planda çalışıyor) - ollama pull mistral - pip install langchain langchain-ollama langchain-community duckduckgo-search"""
import jsonfrom langchain_core.tools import toolfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_ollama import ChatOllamafrom langchain.agents import AgentExecutor, create_react_agentfrom duckduckgo_search import DDGS
@tooldef search_web(query: str) -> str: """DuckDuckGo kullanarak web'de bilgi arar.""" try: with DDGS() as ddgs: results = list(ddgs.text(query, max_results=5)) if not results: return "Sonuç bulunamadı." return json.dumps( [{"title": r["title"], "snippet": r["body"], "url": r["href"]} for r in results], indent=2 ) except Exception as e: return f"Arama başarısız: {e}"
@tooldef read_file(filepath: str) -> str: """Yerel bir dosyayı okur ve içeriğini döndürür.""" try: with open(filepath, "r") as f: return f.read() except FileNotFoundError: return f"Dosya bulunamadı: {filepath}"
@tooldef calculate(expression: str) -> str: """Basit bir aritmetik ifadeyi güvenle değerlendirir.""" try: result = eval(expression, {"__builtins__": {}}, {}) return str(result) except Exception as e: return f"Hesaplama hatası: {e}"
llm = ChatOllama( model="mistral", base_url="http://localhost:11434", temperature=0.3,)
prompt = ChatPromptTemplate.from_messages([ ("system", """Sen bir araştırma asistanısın. Araçlarını kullanarak soruları yanıtla.
Mevcut araçlar: {tool_names}Araç açıklamaları: {tools}
Bu formatı tam olarak takip et:Thought: Ne bulmam gerekiyor?Action: araç_adıAction Input: araç için girdiObservation: araç sonucu... (gerektiği kadar tekrarla)Thought: Artık yeterli bilgim var.Final Answer: tam yanıtın"""), ("user", "{input}"), ("placeholder", "{agent_scratchpad}"),])
tools = [search_web, read_file, calculate]agent = create_react_agent(llm, tools, prompt)agent_executor = AgentExecutor( agent=agent, tools=tools, verbose=True, max_iterations=8, handle_parsing_errors=True,)
if __name__ == "__main__": result = agent_executor.invoke({ "input": "Şu anda en popüler üç açık kaynaklı LLM nedir? İsimlerini ve her birinin bir temel özelliğini ver." }) print(f"\nNİHAİ YANIT:\n{result['output']}")Çalıştırma
# Terminal 1: Ollama'yı başlatollama serve
# Terminal 2: Ajanı çalıştırpython research_agent.pyYetenekleri Genişletme: API Olmadan Araçlar
Yerel Veritabanı Erişimi
import sqlite3
@tooldef query_database(sql: str) -> str: """Yerel veritabanında salt okunur SQL sorgusu çalıştırır.""" try: conn = sqlite3.connect("data.db") cursor = conn.cursor() cursor.execute(sql) rows = cursor.fetchall() columns = [desc[0] for desc in cursor.description] conn.close() return json.dumps([dict(zip(columns, row)) for row in rows], indent=2) except Exception as e: return f"Veritabanı hatası: {e}"Gömme ile Yerel Belge Arama
pip install sentence-transformers chromadbfrom sentence_transformers import SentenceTransformerimport chromadb
model = SentenceTransformer("all-MiniLM-L6-v2")client = chromadb.Client()collection = client.create_collection("docs")
@tooldef search_docs(query: str) -> str: """Yerel belgeleri anlamsal benzerliğe göre arar.""" results = collection.query( query_embeddings=[model.encode(query).tolist()], n_results=3 ) return json.dumps(results["documents"][0], indent=2)Gerçek Dünya Kısıtlamaları ve Çözümleri
Gecikme
Her çıkarım adımı için 2–30 saniye bekle. Stratejiler:
- Daha az adımlı ajanlar tasarla; daha basit = daha hızlı
- Mümkün olduğunda araç çağrılarını toplu yap
Doğruluk Açıkları
Azaltma stratejileri:
- Daha kısa ve açık istemler — Beklenen formatı tam olarak belirt
- Karmaşık görevleri adımlara böl
- Araç çıktılarını ajana geri döndürmeden önce doğrula
- Araç kullanımı için 0,1–0,3 sıcaklık kullan
Dağıtım: Dizüstünden Sürekli Çalışmaya
Docker
FROM python:3.12-slimRUN pip install langchain langchain-ollama langchain-community duckduckgo-searchCOPY research_agent.py .ENV OLLAMA_HOST=host.docker.internal:11434CMD ["python3", "research_agent.py"]Systemd Servisi (Linux)
sudo systemctl enable ollamasudo systemctl start ollamaDaha Derine: Evde Çok Ajanlı Sistemler
def run_pipeline(question: str) -> str: research_result = researcher.invoke({"input": question}) final_output = writer.invoke({ "input": f"Bu araştırmaya dayanarak açık bir özet yaz:\n{research_result['output']}" }) return final_output["output"]Açık kaynak ajan geliştirme bugün pratik. Yol şu: çıkarım için Ollama, ajan döngüsü için LangChain veya AutoGen, arama için DuckDuckGo, ve geri kalanı için makinenin dosya sistemi.
Basit başla — yukarıdaki araştırma ajanı. Çalıştır. Sonra ikinci bir araç ekle. Sonra ikinci bir ajan.
İlgili Makaleler
- Ajantik Geliştirmeye Giriş
- Araç Kullanım Desenleri: Güvenilir Ajan-Araç Arayüzleri Oluşturma
- Çok Ajanlı Desenler: Orkestratörler, İşçiler ve Boru Hatları
- İlk MCP Sunucunuzu Oluşturma