Takip et

Opencode ile Yerel LLM’lerde Ajans Geliştirme: Kapsamlı Rehber

Yapay zeka dünyasında çığır açan gelişmelerle birlikte, gizlilik, maliyet ve esneklik endişeleri, bulut tabanlı Büyük Dil Modelleri’nin (LLM) ötesine geçme ihtiyacını doğurdu. İşte tam bu noktada, yerel LLM’ler ve otonom “ajans” geliştirme kavramı devreye giriyor. Bu rehber, Opencode çerçevesini kullanarak kendi yerel yapay zeka ajanslarınızı nasıl oluşturacağınızı adım adım açıklayacak ve bu alandaki potansiyeli gözler önüne serecek.

Günümüz dijital çağında, yapay zeka (YZ) tabanlı çözümler hayatımızın ayrılmaz bir parçası haline gelmiş durumda. Ancak, çoğu kuruluş ve geliştirici, gelişmiş YZ yetenekleri için OpenAI, Google veya Anthropic gibi devlerin bulut tabanlı Büyük Dil Modellerine (LLM’ler) bağımlı kalıyor. Bu bağımlılık beraberinde ciddi endişeler getiriyor: veri gizliliği, yüksek API maliyetleri, gecikme sorunları ve platform kilitlenmesi riski. Özellikle hassas verilerle çalışan veya kısıtlı bütçeye sahip projeler için bu durum sürdürülebilir olmaktan uzaktır.

Peki ya YZ’nin gücünü kendi altyapınızda, kendi kurallarınızla ve kendi verileriniz üzerinde tam kontrolle kullanabilseydiniz? İşte yerel Büyük Dil Modelleri (Local LLM’ler) tam da bu vaadi sunuyor. Kendi sunucularınızda, hatta güçlü masaüstü bilgisayarlarınızda çalışabilen bu modeller, gizlilik endişelerini ortadan kaldırır, maliyetleri düşürür ve internet bağlantısı olmadan bile çalışabilme özgürlüğü sunar. Bu, özellikle veri güvenliğinin kritik olduğu finans, sağlık veya devlet sektörleri için devrim niteliğinde bir adımdır.

Ancak, sadece bir LLM’i yerel olarak çalıştırmak yeterli değildir. Gerçek potansiyel, bu modelleri belirli görevleri otonom olarak yerine getirebilecek “ajanlar” haline getirmekte yatar. Ajans tabanlı geliştirme (Agentic Development), yapay zekanın sadece bir çıktı üretmekle kalmayıp, bir dizi aracı kullanarak karmaşık problemleri çözmek, planlar oluşturmak, hatalarından ders çıkarmak ve hedeflerine ulaşmak için aktif olarak çalışmasını sağlar. Bir ajans, basit bir sohbet botundan çok daha fazlasıdır; kendi kararlarını verebilen, ortamıyla etkileşim kurabilen ve sürekli öğrenen bir varlıktır. Örneğin, bir ajans internetten bilgi toplayabilir, kod yazabilir, veritabanlarını sorgulayabilir veya e-posta gönderebilir.

İşte Opencode çerçevesi, bu iki güçlü kavramı bir araya getiriyor: Yerel LLM’lerin sunduğu esneklik ve gizliliği, ajans tabanlı geliştirmenin otonom yetenekleriyle birleştiriyor. Opencode, geliştiricilere, kendi özel ihtiyaçlarına göre uyarlanmış, güvenli ve maliyet etkin yapay zeka çözümleri oluşturma gücü veriyor. Bu makalede, Opencode ile sıfırdan başlayarak, kendi yapay zeka ajanslarınızı nasıl tasarlayacağınızı, geliştireceğinizi ve dağıtacağınızı adım adım keşfedeceğiz. Artık YZ’yi sadece tüketen değil, aynı zamanda üreten ve yönlendiren bir aktör olma zamanı geldi.

Temel Kavramları Anlamak: Yerel LLM’ler ve Ajans Tabanlı Yapay Zeka Nedir?

Opencode ile ajans geliştirmeye başlamadan önce, temel taşları olan yerel Büyük Dil Modelleri (LLM’ler) ve ajans tabanlı yapay zeka kavramlarını sağlam bir şekilde anlamamız gerekiyor. Bu iki konsept, modern yapay zeka uygulamalarının omurgasını oluşturuyor ve birlikte çalışarak şaşırtıcı yetenekler sunabiliyor.

Yerel Büyük Dil Modelleri (LLM’ler) Nasıl Çalışır?

Büyük Dil Modelleri (LLM’ler), muazzam miktardaki metin verisi üzerinde eğitilmiş derin öğrenme modelleridir. Metinleri anlamak, üretmek, özetlemek, çevirmek ve soruları yanıtlamak gibi bir dizi dil tabanlı görevi yerine getirebilirler. Genellikle bu modeller, bulut sunucularında, NVIDIA’nın GPU’ları gibi yüksek performanslı donanımlar üzerinde çalışır ve API’ler aracılığıyla erişilebilirler.

Ancak, “yerel LLM” terimi, bu modellerin kendi bilgisayarınızda veya sunucunuzda çalıştırılması anlamına gelir. Bu, özellikle gizlilik ve veri güvenliği açısından büyük avantajlar sunar, çünkü verileriniz ağ dışına çıkmaz. Ayrıca, API ücretlerinden kurtulur ve internet bağlantısı olmadan da çalışabilirsiniz. Yerel LLM’lerin çalışması için genellikle daha düşük hassasiyetli (örneğin, 8-bit veya 4-bit) quantize edilmiş versiyonları kullanılır. Bu, modelin boyutunu küçültür ve daha az bellek tüketmesini sağlar, böylece ortalama bir donanımda bile çalışabilir hale gelirler.

Popüler yerel LLM çerçeveleri arasında Ollama, LM Studio ve Llama.cpp bulunmaktadır. Bu araçlar, Llama 3, Mistral, Phi-3 gibi çeşitli açık kaynaklı modelleri kolayca indirmenize ve çalıştırmanıza olanak tanır. Genellikle GGUF formatındaki modeller tercih edilir, çünkü bu format CPU ve GPU üzerinde verimli bir şekilde çalışacak şekilde optimize edilmiştir. Yerel LLM’leri kullanmanın temel zorluğu, yeterli RAM ve özellikle bir grafik işlem birimi (GPU) gerektirmesidir, ancak çoğu modern bilgisayar temel modelleri çalıştırabilir.

Uzman İpucu: Yerel LLM’lerin performansını artırmak için modelin Q (quantization) seviyesini dikkatlice seçin. Daha düşük Q değerleri (örn. Q4_K_M) daha hızlı çalışır ancak biraz doğruluk kaybına neden olabilirken, daha yüksek Q değerleri (örn. Q8_0) daha doğru ancak daha yavaş olabilir. Başlangıçta Q4 veya Q5 denemeler yapmak iyi bir stratejidir.

Ajans Tabanlı Geliştirme Yaklaşımı Ne Anlama Geliyor?

Ajans tabanlı geliştirme, yapay zeka sistemlerini, belirli hedeflere ulaşmak için kendi başlarına hareket edebilen, karar verebilen ve araçları kullanabilen otonom varlıklar (ajanlar) olarak tasarlama felsefesidir. Geleneksel YZ uygulamaları genellikle kullanıcıdan bir girdi alır ve doğrudan bir çıktı üretir. Oysa bir ajans, bir hedef verildiğinde, bu hedefe ulaşmak için aşağıdaki adımları içerebilen bir düşünme, planlama ve uygulama döngüsüne girer:

  1. Hedef Anlama ve Ayrıştırma: Ajans, verilen ana hedefi daha küçük, yönetilebilir alt görevlere böler.
  2. Planlama: Hangi adımların atılacağını ve hangi araçların kullanılacağını belirler.
  3. Araç Kullanımı: Görevleri yerine getirmek için özel olarak tasarlanmış işlevleri (örneğin, internet araması yapmak, dosya okumak, kod çalıştırmak) çağırır.
  4. Gözlem ve Geri Bildirim: Araçların çıktısını değerlendirir, planın işe yarayıp yaramadığını kontrol eder.
  5. Öğrenme ve Adaptasyon: Başarısızlık durumunda planını revize eder veya yeni stratejiler dener.
  6. Bellek Yönetimi: Geçmiş etkileşimleri ve bilgileri hatırlar, böylece bağlamı korur ve daha tutarlı yanıtlar üretir.

Bu yaklaşım, yapay zekanın çok daha karmaşık ve dinamik problemleri çözmesine olanak tanır. Örneğin, bir kullanıcıdan “İstanbul’daki en iyi 5 İtalyan restoranını bul ve rezervasyon yaptır” gibi bir istek aldığında, ajans:

  • Bir internet arama aracı kullanarak “İstanbul en iyi İtalyan restoranları” sorgusunu yapar.
  • Elde ettiği sonuçları filtreler ve en iyi 5’ini belirler.
  • Her restoranın rezervasyon yöntemini araştırır (web sitesi, telefon).
  • Kullanıcının tercihlerine göre rezervasyon aracını kullanarak rezervasyon yapmaya çalışır.
  • Tüm adımları başarıyla tamamladığında kullanıcıya nihai bilgiyi sunar.

Bu süreç, basit bir sohbet botunun tek seferlik bir yanıtından çok daha fazlasını gerektirir ve gerçek anlamda akıllı, otonom sistemler oluşturmanın temelini oluşturur. Opencode, bu ajans geliştirme sürecini basitleştiren ve yerel LLM’lerle entegrasyonu kolaylaştıran bir köprü görevi görür.

Opencode Çerçevesi ile Ajans Geliştirme Nasıl Başlar?

Şimdi sıra geldi Opencode’un pratik yönüne. Opencode, yerel LLM’ler üzerinde güçlü ve esnek yapay zeka ajanları oluşturmayı kolaylaştıran, açık kaynaklı bir geliştirme çerçevesidir. Temel amacı, ajans tabanlı YZ sistemlerinin karmaşıklığını soyutlamak ve geliştiricilerin, temel altyapı detaylarıyla boğuşmadan iş mantığına odaklanmasını sağlamaktır. Bu bölümde, Opencode’un temel kurulumundan başlayarak basit bir ajan oluşturma sürecini adım adım inceleyeceğiz.

Öncelikle, Opencode’u sistemimize kurmamız gerekiyor. Genellikle Python tabanlı bir çerçeve olan Opencode, pip aracılığıyla kolayca kurulabilir. Terminalinizi açın ve aşağıdaki komutu çalıştırın:


pip install opencode

Kurulum tamamlandıktan sonra, Opencode'un yerel LLM'lerle iletişim kurabilmesi için bir LLM çalıştırma ortamına ihtiyacımız var. Bu makalede Ollama'yı varsayacağız, çünkü kullanımı kolaydır ve çeşitli modelleri destekler. Ollama'yı resmi web sitesinden indirip kurduktan sonra, ihtiyacımız olan bir modeli (örneğin, Llama 3) indirip çalıştırmalıyız:


ollama pull llama3
ollama run llama3

Bu komut, Llama 3 modelini indirir ve yerel bir sunucu üzerinde çalıştırmaya başlar. Artık Opencode ajanlarımız bu yerel LLM ile etkileşim kurabilir.

Şimdi basit bir Opencode ajanı oluşturalım. Bu ajanın görevi, kendisine verilen bir konuyu özetlemek ve anahtar kelimeleri çıkarmak olsun. Öncelikle, Opencode'un temel bileşenlerini kullanarak bir ajan sınıfı tanımlayacağız.


from opencode.agent import Agent
from opencode.llm import OllamaLLM
from opencode.tools import Tool

# 1. Yerel LLM'i Tanımlama
# Ollama'da çalışan Llama 3 modelini kullanacağız
local_llm = OllamaLLM(model="llama3", base_url="http://localhost:11434")

# 2. Ajans için Araçlar Tanımlama (Şimdilik yok, ama sonra ekleyeceğiz)
# Bir örnek araç tanımlayalım:
class KeywordExtractorTool(Tool):
    def __init__(self):
        super().__init__(name="keyword_extractor", description="Verilen metinden anahtar kelimeleri çıkarır.")

    def run(self, text: str) -> str:
        # Gerçek dünyada burada gelişmiş bir NLP kütüphanesi kullanılabilir.
        # Basit bir örnek için, metindeki ilk 5 benzersiz kelimeyi alalım.
        words = list(set(word.lower() for word in text.split() if len(word) > 3))
        return ", ".join(words[:5])

# 3. Ajans Tanımlama
class SummarizerAgent(Agent):
    def __init__(self):
        super().__init__(
            name="OzetlemeVeAnahtarKelimeAjani",
            description="Verilen metni özetler ve anahtar kelimelerini belirler.",
            llm=local_llm,
            tools=[KeywordExtractorTool()], # Tanımladığımız aracı ajansa ekledik
            system_prompt="""Sen bir metin özetleme ve anahtar kelime çıkarma uzmanısın. Kullanıcıdan aldığın metni önce özetle, ardından KeywordExtractorTool aracını kullanarak anahtar kelimeleri çıkar. Özet ve anahtar kelimeleri ayrı ayrı sun."""
        )

# 4. Ajansı Çalıştırma
if __name__ == "__main__":
    summarizer_agent = SummarizerAgent()
    
    input_text = """Büyük Dil Modelleri (LLM'ler) son yıllarda yapay zeka alanında devrim niteliğinde bir etki yarattı. Metin oluşturma, anlama, çeviri ve özetleme gibi birçok karmaşık görevi yüksek doğrulukla yerine getirebiliyorlar. Ancak bu modellerin bulut tabanlı sürümleri, özellikle veri gizliliği ve maliyet konularında bazı endişeleri beraberinde getiriyor. Bu nedenle, yerel LLM'ler geliştiriciler ve şirketler için giderek daha cazip hale gelmektedir. Opencode gibi çerçeveler, bu yerel modelleri kullanarak ajans tabanlı sistemler geliştirmeyi kolaylaştırır ve YZ'nin daha geniş kitlelere ulaşmasını sağlar."""

    print(f"Ajansa Giriş Metni:\n{input_text}\n")
    
    response = summarizer_agent.run(input_text)
    print(f"Ajansın Çıktısı:\n{response}")

Yukarıdaki kod bloğu, temel bir Opencode ajansının nasıl oluşturulacağını gösteriyor. İlk olarak, kullandığımız yerel LLM'i (OllamaLLM) tanımlıyoruz. Ardından, ajanımızın kullanabileceği bir KeywordExtractorTool aracı oluşturuyoruz. Bu araç, ajanın metin işleme yeteneklerini genişletiyor. Son olarak, SummarizerAgent sınıfımızı tanımlıyor, LLM'i, araçları ve ajansın davranışını belirleyen bir system_prompt ile donatıyoruz. if __name__ == "__main__": bloğunda ise ajansı başlatıp bir metinle test ediyoruz.

Bu örnek, Opencode'un temel yapısını ve yerel LLM entegrasyonunu sergiler. Gerçek dünya senaryolarında, ajanlar çok daha fazla araca (API çağrıları, veritabanı sorguları, dosya işlemleri vb.) sahip olabilir ve daha karmaşık karar verme süreçlerini içerebilirler. Opencode'un modüler yapısı, bu karmaşıklığı yönetmeyi kolaylaştırır.

Uzman İpucu: Opencode'un system_prompt parametresi, ajansınızın kişiliğini, rolünü ve görevini tanımlayan en önemli kısımlardan biridir. Ne kadar açık ve detaylı bir prompt verirseniz, ajansınız o kadar tutarlı ve istenen sonuçları üretir. Özellikle araç kullanımını teşvik etmek için prompt'unuza araçların adlarını ve açıklamalarını ekleyebilirsiniz.

Gerçek Dünya Senaryolarında Opencode Ajanslarını Kullanmak: Vaka Analizleri

Teorik bilgilerin ve basit bir örneğin ardından, Opencode'un gerçek dünya problemlerini çözmede nasıl kullanılabileceğini iki farklı vaka analiziyle derinlemesine inceleyelim. Bu vaka analizleri, yerel LLM'ler ve ajans tabanlı geliştirmenin işletmelere ve bireylere sağlayabileceği somut faydaları vurgulayacaktır.

Vaka Analizi 1: Otomatik Belge Özetleme ve Sınıflandırma Ajansı

Büyük kuruluşlar, her gün yüzlerce, hatta binlerce belgeyle (raporlar, e-postalar, yasal metinler, araştırma makaleleri) karşılaşır. Bu belgeleri manuel olarak özetlemek, anahtar bilgilerini çıkarmak ve doğru kategorilere ayırmak, zaman alıcı, maliyetli ve hataya açık bir süreçtir. Gizlilik endişeleri nedeniyle bu belgelerin bulut tabanlı LLM'lere gönderilmesi de çoğu zaman mümkün değildir.

Problem: Finans sektöründe faaliyet gösteren bir şirket, müşterilerden gelen kredi başvuruları, sözleşmeler ve finansal raporlar gibi hassas belgeleri hızlı ve güvenli bir şekilde işlemek, özetlemek ve ilgili departmanlara göre sınıflandırmak istiyor. Manuel süreçler yetersiz kalıyor ve veri gizliliği nedeniyle dışarıdan bir hizmet kullanılamıyor.

Çözüm: Opencode ile yerel bir belge işleme ajansı geliştirilebilir. Bu ajans, şirketin kendi sunucularında çalışan bir Llama 3 modeliyle entegre edilecek ve özel araçlarla donatılacaktır. Ajansın temel araçları şunlar olacaktır:

  • FileReaderTool: Yerel dosya sisteminden metin belgelerini (PDF, DOCX, TXT) okuma yeteneği.
  • CategorizerTool: Belgenin içeriğine göre önceden tanımlanmış kategorilerden (örneğin, "Kredi Başvurusu", "Yasal Metin", "Pazarlama Raporu", "Finansal Analiz") birini atama yeteneği.
  • DatabaseWriterTool: Özetleri, anahtar kelimeleri ve kategorileri şirket içi bir veritabanına kaydetme yeteneği.

Ajansın İş Akışı:

  1. Ajans, belirlenmiş bir klasördeki yeni belgeleri izler.
  2. Yeni bir belge tespit ettiğinde, FileReaderTool'u kullanarak belgenin içeriğini okur.
  3. Okunan metni yerel Llama 3 modeline göndererek bir özet oluşturmasını ve anahtar kelimeleri çıkarmasını ister.
  4. Aynı metni CategorizerTool'a göndererek belgenin türünü belirler.
  5. Elde edilen özet, anahtar kelimeler, kategori ve belge referansını DatabaseWriterTool aracılığıyla veritabanına kaydeder.
  6. Son olarak, ilgili departmana bir bildirim gönderir (bu da başka bir araç olabilir).

Örnek Araç Tanımı (Basitleştirilmiş):


from opencode.tools import Tool
import os

class FileReaderTool(Tool):
    def __init__(self):
        super().__init__(name="file_reader", description="Belirtilen dosya yolundan metin içeriğini okur.")

    def run(self, file_path: str) -> str:
        if not os.path.exists(file_path):
            return f"Hata: Dosya bulunamadı - {file_path}"
        try:
            with open(file_path, "r", encoding="utf-8") as f:
                content = f.read()
            return content
        except Exception as e:
            return f"Dosya okuma hatası: {e}"

# CategorizerTool ve DatabaseWriterTool benzer şekilde tanımlanabilir.
# CategorizerTool, önceden tanımlanmış kategorileri ve örnek metinleri kullanarak 
# LLM'den sınıflandırma yapmasını isteyebilir veya daha basit kural tabanlı olabilir.

Bu ajans sayesinde şirket, binlerce belgeyi manuel müdahale olmadan, hızlı, güvenli ve tutarlı bir şekilde işleyebilir. Bu, hem zamandan tasarruf sağlar hem de insan hatası riskini minimize eder.

Vaka Analizi 2: Akıllı Müşteri Destek Botu Geliştirme

Müşteri destek departmanları, genellikle tekrar eden sorularla boğuşur ve sınırlı insan kaynakları nedeniyle yanıt süreleri uzayabilir. Mevcut chatbot'lar genellikle kural tabanlıdır ve karmaşık soruları yanıtlamakta veya kişiselleştirilmiş çözümler sunmakta yetersiz kalırlar.

Problem: Bir e-ticaret şirketi, sıkça sorulan sorulara otomatik ve kişiselleştirilmiş yanıtlar verebilen, ancak karmaşık durumlarda canlı destek temsilcisine devredebilen akıllı bir müşteri destek botuna ihtiyaç duyuyor. Müşteri verileri hassas olduğundan bulut tabanlı bir çözüm tercih edilmiyor.

Çözüm: Opencode ile yerel LLM destekli bir müşteri destek ajansı oluşturulabilir. Bu ajans, müşterinin sorularını anlar, ilgili bilgileri şirket içi bilgi tabanından (Retrieval Augmented Generation - RAG yaklaşımı) çeker ve uygun bir yanıt oluşturur. Gerekirse, şirketin CRM sistemine bağlanarak müşteri bilgilerini de kullanabilir.

Ajansın Temel Araçları:

  • KnowledgeBaseSearchTool: Şirketin ürün kılavuzları, SSS sayfaları ve destek dokümanlarından oluşan yerel bir vektör veritabanını sorgulama yeteneği.
  • CRMQueryTool: Müşterinin sipariş geçmişi, hesap durumu gibi bilgilerini şirket içi CRM sisteminden alma yeteneği.
  • LiveChatHandoverTool: Ajansın çözemediği durumlarda, görüşmeyi bir canlı destek temsilcisine devretme ve geçmiş konuşmayı aktarma yeteneği.

Ajansın İş Akışı:

  1. Müşteri bir soru sorduğunda, ajans soruyu analiz eder.
  2. Öncelikle KnowledgeBaseSearchTool'u kullanarak bilgi tabanında ilgili yanıtları arar.
  3. Eğer bilgi tabanında yeterli bilgi bulursa, bu bilgiyi LLM'e sunar ve kişiselleştirilmiş bir yanıt oluşturur.
  4. Eğer soru, müşterinin sipariş geçmişi gibi özel bilgiler gerektiriyorsa, CRMQueryTool'u kullanarak ilgili verileri çeker ve yanıtı buna göre uyarlar.
  5. Eğer ajans sorunu çözemeyeceğini veya hassas bir durum olduğunu algılarsa (örneğin, şikayetler, iade talepleri), LiveChatHandoverTool'u kullanarak konuşmayı bir insan temsilcisine devreder ve tüm bağlamı aktarır.

from opencode.tools import Tool

class KnowledgeBaseSearchTool(Tool):
    def __init__(self):
        super().__init__(name="knowledge_base_search", description="Şirketin bilgi tabanında ilgili makaleleri arar ve döndürür.")

    def run(self, query: str) -> str:
        # Gerçek dünyada burada bir vektör veritabanı sorgusu yapılır.
        # Basit bir örnek için, statik bir sözlükten arama yapalım.
        faq_data = {
            "sipariş takibi": "Siparişinizi web sitemizdeki 'Siparişlerim' bölümünden takip edebilirsiniz.",
            "iade politikası": "Ürün iadeleri 14 gün içinde yapılabilmektedir. Detaylı bilgi için iade politikamızı inceleyin.",
            "kargo ücretleri": "100 TL üzeri siparişlerde kargo ücretsizdir."
        }
        for keyword, answer in faq_data.items():
            if keyword in query.lower():
                return answer
        return "Bilgi tabanımızda bu konuda doğrudan bir yanıt bulunamadı."

# CRMQueryTool ve LiveChatHandoverTool da benzer şekilde tanımlanabilir.

Bu ajans, müşteri destek operasyonlarını önemli ölçüde otomatize ederken, müşteri memnuniyetini artırır ve insan temsilcilerinin daha karmaşık vakalara odaklanmasını sağlar. Yerel LLM kullanımı sayesinde, müşteri verilerinin güvenliği de garanti altına alınır.

İleri Düzey Ajans Tasarımı ve Optimizasyonu: Performansı Nasıl Artırırsınız?

Opencode ile temel ajansları oluşturmayı ve gerçek dünya senaryolarında nasıl kullanılabileceğini gördük. Ancak, daha verimli, daha akıllı ve daha yetenekli ajanlar tasarlamak için bazı ileri düzey tekniklere ihtiyaç vardır. Bu bölümde, ajanslarınızın performansını ve yeteneklerini nasıl artırabileceğinize dair ipuçları ve stratejiler sunacağız.

Ajans Bellek Yönetimi ve Durum Takibi

Bir ajansın "akıllı" olabilmesi için sadece mevcut göreve odaklanması yetmez; geçmiş konuşmaları, kararları ve elde ettiği bilgileri hatırlaması gerekir. Bu, ajansın bağlamı korumasını, önceki hatalarından ders çıkarmasını ve daha tutarlı yanıtlar vermesini sağlar. Opencode gibi çerçeveler genellikle farklı bellek türlerini destekler:

  • Kısa Süreli Bellek (Short-Term Memory): Genellikle mevcut diyalogdaki son birkaç dönüşü veya son kullanılan araç çıktılarını içerir. Bu, LLM'in anlık bağlamı korumasına yardımcı olur.
  • Uzun Süreli Bellek (Long-Term Memory): Geçmiş etkileşimlerden öğrenilen kalıcı bilgileri, ajansın genel deneyimini ve kritik verileri depolar. Bu genellikle bir vektör veritabanı (örneğin, ChromaDB, FAISS) veya geleneksel bir veritabanı aracılığıyla uygulanır. Ajans, gerektiğinde bu uzun süreli bellekten bilgi çekerek güncel göreve entegre edebilir.

Opencode'da ajansınız için bellek modüllerini yapılandırarak bu yetenekleri entegre edebilirsiniz. Örneğin, bir vektör veritabanını uzun süreli bellek olarak kullanarak, ajansınızın zamanla belirli konularda uzmanlaşmasını sağlayabilirsiniz.

Araç Seçimi ve Entegrasyonu

Bir ajansın gücü, kullanabildiği araçlarla doğru orantılıdır. İnternet araması, dosya okuma/yazma, API çağrıları, veritabanı sorguları, kod çalıştırma gibi araçlar, ajansın fiziksel dünyaya veya dijital servislere erişimini sağlar. Araçların doğru seçimi ve entegrasyonu kritiktir:

  • Özel Araçlar Geliştirme: Ajansınızın benzersiz ihtiyaçlarına göre özel Python fonksiyonları veya sınıfları yazarak yeni araçlar oluşturun. Örneğin, şirketinizin iç API'lerini çağıran bir araç.
  • Hata Yönetimi: Araçlar başarısız olduğunda ajansın ne yapacağını tanımlayın. Tekrar denemeli mi, kullanıcıya hata mesajı mı vermeli, yoksa farklı bir araca mı geçmeli?
  • Araç Açıklamaları: LLM'in araçları ne zaman ve nasıl kullanacağını anlaması için araç açıklamalarını (description) çok net ve bilgilendirici yazın. Ne kadar iyi açıklarsanız, LLM o kadar doğru karar verir.

Aşağıda, bir web sitesinden veri çekmek için kullanılabilecek basit bir araç örneği bulunmaktadır:


from opencode.tools import Tool
import requests

class WebScraperTool(Tool):
    def __init__(self):
        super().__init__(name="web_scraper", description="Belirtilen URL'den HTML içeriğini çeker.")

    def run(self, url: str) -> str:
        try:
            response = requests.get(url, timeout=10)
            response.raise_for_status() # HTTP hataları için istisna fırlatır
            return response.text[:2000] # Çok uzun sayfaları kırpabiliriz
        except requests.exceptions.RequestException as e:
            return f"Web sitesine erişim hatası: {e}"

# Ajansınız bu aracı kullanarak bir web sayfasını okuyabilir.

Prompt Mühendisliği ve Model Seçimi

LLM'ler, ne kadar gelişmiş olursa olsunlar, onlara verilen talimatlar (prompt'lar) kadar iyi performans gösterirler. Ajanslar için prompt mühendisliği, LLM'in hem görevini anlamasını hem de araçları etkili bir şekilde kullanmasını sağlamak için hayati önem taşır:

  • Sistem Prompt'u (System Prompt): Ajansın genel rolünü, kişiliğini, neyi yapması ve neyi yapmaması gerektiğini net bir şekilde tanımlayın.
  • Araç Kullanım Talimatları: LLM'e araçları nasıl düşüneceğini ve kullanacağını öğretin. Örneğin, "Eğer bir bilgiye ihtiyacın varsa, önce tool_name aracını kullanmayı dene."
  • Düşünce Süreci: LLM'den karar verme sürecini adım adım açıklamasını isteyerek (Chain-of-Thought veya ReAct yaklaşımları), hataları ayıklamayı ve ajansın mantığını anlamayı kolaylaştırın.

Model seçimi de performansı doğrudan etkiler. Yerel LLM'ler arasında Llama 3, Mistral, Phi-3 gibi birçok seçenek bulunur. Her modelin farklı yetenekleri, boyutları ve performans karakteristikleri vardır. Projenizin ihtiyaçlarına ve donanımınıza en uygun modeli seçmek için farklı modelleri test etmek (benchmarking) önemlidir.

Uzman İpucu: Prompt'larınızı iteratif olarak geliştirin. İlk denemede mükemmel bir prompt yazmak nadirdir. Ajansınızın çıktılarını analiz edin, hatalarını not alın ve prompt'unuzu bu geri bildirimlere göre sürekli iyileştirin. Ayrıca, prompt'larınıza "düşünme" adımlarını eklemek (örneğin, "Önce problemi analiz et, sonra plan yap, sonra araçları kullan") ajansın daha mantıklı davranmasını sağlayabilir.

Opencode Ajanslarını Mobil ve Web Ortamlarına Entegre Etmek Nasıl Yapılır?

Opencode ile geliştirdiğimiz ajanslar genellikle Python tabanlı bir sunucu ortamında çalışır. Ancak bu ajanları son kullanıcıların mobil uygulamaları veya web tarayıcıları üzerinden kullanabilmesi için uygun entegrasyon yöntemlerine ihtiyacımız var. Bu bölümde, Opencode ajanlarınızı mobil ve web ortamlarına nasıl taşıyacağınızı ve bu süreçte nelere dikkat etmeniz gerektiğini ele alacağız.

Mobil Cihazlar için Duyarlı Tasarım İlkeleri ve Ajans Entegrasyonu

Mobil cihazlar, sınırlı ekran alanı ve genellikle farklı giriş yöntemleri (dokunmatik ekran) nedeniyle özel bir tasarım yaklaşımı gerektirir. Bir web uygulamasını veya kullanıcı arayüzünü mobil cihazlara uygun hale getirmek için duyarlı (responsive) tasarım prensipleri kullanılır. Bu, aynı HTML kodunun farklı ekran boyutlarına ve yönlendirmelerine (dikey/yatay) dinamik olarak adapte olmasını sağlar. CSS medya sorguları (media queries) bu sürecin temel taşıdır.

CSS Medya Sorgusu Örneği:


/* Genel stil: tüm cihazlar */
.container {
    width: 90%;
    margin: 0 auto;
    padding: 20px;
}

.button {
    padding: 10px 15px;
    font-size: 16px;
}

/* Küçük ekranlar için stil (örn. cep telefonları) */
@media screen and (max-width: 768px) {
    .container {
        width: 100%; /* Tam ekran genişliği */
        padding: 10px;
    }
    .button {
        width: 100%; /* Düğmeler tam genişlikte */
        font-size: 14px;
        margin-top: 10px;
    }
    h2 {
        font-size: 1.5em; /* Başlık boyutunu küçült */
    }
}

/* Daha büyük ekranlar için stil (örn. tabletler ve masaüstü) */
@media screen and (min-width: 769px) {
    .container {
        max-width: 960px; /* Maksimum genişlik belirle */
    }
}

Bu örnekte, ekran boyutu 768 pikselden küçük olduğunda (genellikle mobil cihazlar), kapsayıcı ve düğmelerin stilleri değişerek daha mobil dostu bir görünüm sunar. Mobil cihazlarda çalışan Opencode ajansları doğrudan cihaz üzerinde çalıştırılmak yerine, genellikle bir sunucu üzerinde barındırılan ajanlara API çağrıları yaparak etkileşime girer.

Mobil Ajans Entegrasyonu:

  1. Backend API Oluşturma: Opencode ajanlarınızı içeren Python uygulamanızı (örneğin, FastAPI veya Flask kullanarak) bir REST API veya WebSocket sunucusu olarak yayınlayın. Bu API, mobil uygulamanızın ajanlarla etkileşim kuracağı arayüz olacaktır.
  2. Mobil Uygulama Geliştirme: iOS (Swift/Kotlin) veya Android (Java/Kotlin) için native uygulamalar veya React Native, Flutter gibi cross-platform çerçeveler kullanarak mobil uygulamalarınızı geliştirin.
  3. API Çağrıları: Mobil uygulamanızdan bu API'ye HTTP POST istekleri göndererek ajanlarınıza komutlar iletin (örneğin, "belgeyi özetle" veya "soruyu yanıtla") ve ajanlardan gelen yanıtları JSON formatında alın.
  4. Düşük Gecikme Optimizasyonu: Mobil ağ koşulları değişken olabileceği için, API yanıt sürelerini optimize etmek, önbelleğe alma mekanizmaları kullanmak ve kullanıcıya geri bildirim sağlamak (örneğin, "yükleniyor" mesajları) önemlidir.

Unutmamak gerekir ki, yerel LLM'leri doğrudan mobil cihazlarda çalıştırmak (cihaz içi LLM'ler) hala donanım ve performans açısından büyük zorluklar barındırır, ancak bu alanda da hızlı gelişmeler yaşanmaktadır (örneğin, Apple'ın cihaz içi LLM yaklaşımları). Şimdilik, sunucu tabanlı ajanslara API üzerinden erişim en yaygın yöntemdir.

Web Uygulamalarında Ajans Entegrasyonu

Web uygulamaları, Opencode ajanlarını entegre etmek için mobil uygulamalara benzer ancak bazı farklılıkları olan bir yol sunar. Modern web uygulamaları genellikle bir frontend (kullanıcı arayüzü) ve bir backend (sunucu tarafı mantık) ayrımına sahiptir.

Web Ajans Entegrasyonu:

  1. Backend (Ajans Sunucusu): Opencode ajanlarınızı barındıran bir backend sunucusu (Python FastAPI/Flask, Node.js Express vb.) kurun. Bu sunucu, ajanları yönetir ve onlarla iletişim kurar.
  2. REST API veya WebSockets: Frontend uygulamanızın ajanlarla konuşabilmesi için bir API endpoint'i oluşturun.
    • REST API: Tek seferlik istekler ve yanıtlar için uygundur. Örneğin, bir kullanıcının sorusunu ajansa gönderip yanıtını almak.
    • WebSockets: Gerçek zamanlı, çift yönlü iletişim için idealdir. Özellikle ajansın uzun süreli görevler yürütmesi, birden fazla adımda yanıt vermesi veya aracı çalıştırırken kullanıcıya anlık geri bildirim sağlaması gereken durumlar için kullanışlıdır.
  3. Frontend (Kullanıcı Arayüzü): React, Vue, Angular gibi modern JavaScript çerçevelerini kullanarak kullanıcı arayüzünü geliştirin. Bu arayüz, API veya WebSocket aracılığıyla backend'deki Opencode ajanlarıyla etkileşime geçecektir.
    
    // Örnek bir JavaScript fetch API çağrısı (React/Vue context'inde olabilir)
    async function sendQueryToAgent(query) {
        try {
            const response = await fetch('/api/agent/query', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({ message: query }),
            });
            const data = await response.json();
            console.log("Agent Response:", data.response);
            return data.response;
        } catch (error) {
            console.error("Error sending query to agent:", error);
            return "Üzgünüm, bir hata oluştu.";
        }
    }
            

  4. Güvenlik: API endpoint'lerinizi kimlik doğrulama (authentication) ve yetkilendirme (authorization) mekanizmalarıyla güvence altına alın. API anahtarları, JWT (JSON Web Tokens) veya OAuth gibi yöntemler kullanılabilir.
  5. Ölçeklenebilirlik: Ajanslarınızın talebi karşılayabilmesi için backend sunucusunun ölçeklenebilir olduğundan emin olun. Docker konteynerleri ve Kubernetes gibi orkestrasyon araçları, bu konuda yardımcı olabilir.

Opencode ajanlarını web uygulamalarına entegre etmek, kullanıcıların güçlü yapay zeka yeteneklerine tarayıcıları üzerinden kolayca erişmesini sağlar. Doğru mimari ve güvenlik önlemleriyle, ajans tabanlı YZ çözümlerinizi geniş kitlelere ulaştırabilirsiniz.

Sonuç: Opencode ile Ajans Tabanlı Yerel LLM Geliştirmenin Geleceği

Bu makale boyunca, yapay zeka geliştirmede yerel Büyük Dil Modelleri'nin (LLM) yükselişini ve Opencode çerçevesiyle ajans tabanlı geliştirmenin nasıl bir dönüşüm potansiyeli taşıdığını ele aldık. Gördüğümüz gibi, yerel LLM'ler gizlilik, maliyet ve esneklik konularında bulut tabanlı alternatiflere göre önemli avantajlar sunarken, Opencode gibi çerçeveler bu modellerin gücünü kullanarak kendi başına düşünebilen, plan yapabilen ve araçları etkin bir şekilde kullanabilen otonom ajanlar oluşturmanın kapılarını aralıyor.

Opencode, geliştiricilerin yerel LLM'leri kolayca entegre etmesine, karmaşık ajans iş akışları tasarlamasına ve gerçek dünya problemlerini çözmek için özel araçlar geliştirmesine olanak tanıyor. Finansal belge analizi ve akıllı müşteri destek botu gibi vaka analizleriyle, Opencode'un somut iş değerleri yaratma potansiyelini gözler önüne serdik. İleri düzey ajans tasarımı ve optimizasyon teknikleri, bellek yönetimi, akıllı araç seçimi ve etkili prompt mühendisliği ile ajanslarınızın yeteneklerini ve performansını daha da ileriye taşıyabileceğinizi öğrendik.

Mobil ve web entegrasyonu bölümünde ise, geliştirdiğimiz bu güçlü ajanların son kullanıcılara nasıl ulaştırılacağını, duyarlı tasarım ilkelerinin ve API/WebSocket entegrasyonlarının önemini vurguladık. Gelecekte, donanım yeteneklerinin artmasıyla birlikte cihaz içi (on-device) LLM'lerin ve ajansların doğrudan mobil cihazlarda çalışması daha da yaygınlaşabilir, bu da yeni kullanım senaryolarının önünü açacaktır.

Opencode ile ajans tabanlı yerel LLM geliştirme, sadece bir trendden ibaret değil; yapay zeka uygulamalarını daha güvenli, daha kişiselleştirilmiş ve daha otonom hale getiren stratejik bir yaklaşımdır. Kendi YZ çözümlerinizi oluşturma yeteneği, rekabet avantajı sağlayacak ve inovasyon için yeni yollar açacaktır. Bu teknolojiye yatırım yapmak, kurumların ve geliştiricilerin geleceğin yapay zeka dünyasında lider konumda yer almasını sağlayacaktır. Artık siz de Opencode ile ajans geliştirme yolculuğunuza başlayarak bu heyecan verici dönüşümün bir parçası olmaya hazırsınız.

Sıkça Sorulan Sorular

  • Opencode'u kullanmak için hangi donanıma ihtiyacım var?

    Opencode'un kendisi hafif bir çerçevedir. Ancak entegre ettiğiniz yerel LLM'lerin gereksinimleri farklılık gösterir. Genellikle minimum 8-16 GB RAM ve tercihen bir NVIDIA GPU (4 GB VRAM ve üzeri) önerilir. Küçük modeller (örneğin, Phi-3) daha az kaynakla çalışabilirken, büyük modeller (örneğin, Llama 3 70B) daha güçlü GPU'lar ve çok daha fazla RAM (32 GB+) gerektirebilir.

  • Yerel LLM'ler bulut tabanlılara göre daha mı iyi?

    "Daha iyi" tanımı ihtiyaca göre değişir. Yerel LLM'ler gizlilik, maliyet kontrolü, offline çalışma yeteneği ve özel verilere göre ince ayar yapabilme (fine-tuning) potansiyeli açısından üstündür. Ancak bulut tabanlı LLM'ler genellikle daha büyük ve daha yetenekli olabilir, kurulum ve bakım kolaylığı sunar ve yüksek ölçekli yükleri yönetmede daha deneyimlidir. Seçim, projenizin önceliklerine bağlıdır.

  • Ajans geliştirmede en büyük zorluk nedir?

    En büyük zorluklardan biri, ajansın karmaşık görevlerde tutarlı ve güvenilir bir şekilde performans göstermesini sağlamaktır. Bu, etkili prompt mühendisliği, doğru araç seçimi, sağlam bellek yönetimi ve hataları ayıklayabilen bir ajans mimarisi gerektirir. Ajansın "halüsinasyon" yapma veya beklenmedik yollara sapma potansiyelini azaltmak da önemli bir zorluktur.

  • Opencode ile geliştirdiğim bir ajansı nasıl dağıtabilirim?

    Genellikle Opencode ajansınızı içeren Python uygulamasını bir web sunucusu (örneğin, Gunicorn veya uWSGI ile Flask/FastAPI) üzerinde çalıştırmanız gerekir. Bu sunucuyu Docker konteynerlerine alabilir ve Kubernetes, AWS ECS, Google Cloud Run gibi platformlarda dağıtabilirsiniz. Bu, ajansınızın ölçeklenebilir ve güvenli bir şekilde erişilebilir olmasını sağlar.

  • Opencode öğrenmek ne kadar sürer?

    Python programlama temellerine ve Büyük Dil Modelleri hakkında genel bir anlayışa sahipseniz, Opencode'un temel konseptlerini ve ajans oluşturma mekanizmalarını öğrenmeniz birkaç günden birkaç haftaya kadar sürebilir. Ancak ileri düzey ajans tasarımı, optimizasyon ve karmaşık entegrasyonlar, daha fazla pratik ve deneyim gerektirir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version