Connect with us

AGI

LLM Ajanlarını RAG için Sıfırdan Oluşturma ve Ötesi: Kapsamlı Bir Rehber

mm
Building LLM Agents for RAG from Scratch and Beyond: A Comprehensive Guide

GPT-3, GPT-4 gibi LLM’ler ve açık kaynaklı karşılıkları, güncel bilgi alma ve bazen de hayal veya yanlış bilgi üretebilme konusunda zorluklarla karşılaşabilirler.

Retrieval-Augmented Generation (RAG) dış bilgi alma ile LLM’lerin gücünü birleştiren bir tekniktir. RAG, LLM yanıtlarını güncel, gerçek bilgilerle temellendirmemize olanak tanır ve böylece AI tarafından üretilen içeriklerin doğruluğu ve güvenilirliği önemli ölçüde artar.

Bu blog yazısında, RAG için LLM ajanlarını sıfırdan nasıl oluşturabileceğimizi, mimari, uygulama ayrıntıları ve gelişmiş teknikleri derinlemesine keşfedeceğiz. RAG’ın temellerinden, karmaşık akıl yürütme ve görev yürütme yeteneklerine sahip sofistike ajanlar oluşturmaya kadar her şeyi kapsayacağız.

RAG ajanımızı oluşturmadan önce, RAG’ın ne olduğu ve neden önemli olduğunu anlamamız gerekir.

RAG, veya Retrieval-Augmented Generation, bilgi alma ile metin oluşturmayı birleştiren bir hibrit yaklaşımdır. Bir RAG sisteminde:

  • Bir sorgu, bilgi tabanından ilgili belgeleri almak için kullanılır.
  • Bu belgeler daha sonra orijinal sorgu ile birlikte bir dil modeline verilir.
  • Model, sorgu ve alınan bilgiler temelinde bir yanıt üretir.
RAG

RAG

Bu yaklaşım several avantajlara sahiptir:

  • Daha doğru sonuçlar: Yanıtları alınan bilgilerle temellendirmek, RAG, hayal veya yanlış bilgileri azaltır ve gerçek doğruluğu artırır.
  • Güncel bilgiler: Bilgi tabanı düzenli olarak güncellenebilir, böylece sistem güncel bilgilere erişebilir.
  • Şeffaflık: Sistem, bilgilerinin kaynaklarını sağlayabilir, böylece güven artar ve gerçeklik kontrolü yapılabilir.

LLM Ajanlarını Anlama

 

Bir problèmeyle karşılaştığınızda ve basit bir cevap yoksa, genellikle several adımları takip etmek, dikkatli düşünmek ve neler denediğinizi hatırlamak gerekir. LLM ajanları, bu tür durumlar için tasarlanmıştır. Veri analizi, stratejik planlama, veri alma ve geçmiş eylemlerden öğrenme yeteneklerini birleştirerek karmaşık sorunları çözerler.

LLM Ajanları Nedir?

LLM ajanları, sıralı akıl yürütme gerektiren karmaşık metin oluşturmak için tasarlanmış gelişmiş AI sistemleridir. Gelecek hakkında düşünebilir, geçmiş konuşmaları hatırlayabilir ve durum ve stil gereksinimlerine göre yanıtlarını ayarlamak için farklı araçları kullanabilirler.

Örneğin, “Kaliforniya’da belirli bir sözleşme ihlalinin olası yasal sonuçları nelerdir?” gibi bir hukuk alanında bir soru düşünün. Bir RAG sistemi ile donatılmış temel bir LLM, yasal veritabanlarından gerekli bilgileri alabilir.

Daha ayrıntılı bir senaryo için: “Yeni veri gizliliği yasalarına bağlı olarak, şirketlerin karşılaştığı ortak yasal zorluklar nelerdir ve mahkemeler bu sorunları nasıl ele aldı?” Bu soru, sadece gerçekleri araştırmaktan daha fazlasını gerektirir. Yeni kuralları, şirketlere etkilerini ve mahkeme yanıtlarını anlamak önemlidir. Bir LLM ajanı, bu görevi alt görevlere ayırabilir, Örneğin, en son yasaları almak, historical davaları analiz etmek, yasal belgeleri özetlemek ve kalıplara dayanarak eğilimleri tahmin etmek.

LLM Ajanlarının Bileşenleri

LLM ajanları genellikle dört bileşenden oluşur:

  1. Ajan/ Beyin: Dil modelini işleyen ve anlayan temel bileşen.
  2. Planlama: Görevleri parçalamak, özel planlar geliştirmek ve akıl yürütmek yeteneği.
  3. Hafıza: Geçmiş etkileşimlerin kayıtlarını tutar ve onlardan öğrenir.
  4. Araç Kullanımı: Çeşitli kaynakları görevleri gerçekleştirmek için entegre eder.

Ajan/ Beyin

Bir LLM ajanının çekirdeğinde, dil modeli bulunur ve bu model, büyük miktarda eğitim verisi temelinde dil işler ve anlar. Ajanı, özel bir.prompt ile yönlendirebilir, hangi araçları kullanacağını, hangi hedeflere ulaşacağını belirtebilir ve performansını belirli görevler veya etkileşimler için özelleştirebilirsiniz.

Hafıza

Hafıza bileşeni, LLM ajanlarının karmaşık görevleri ele almasına yardımcı olur ve geçmiş eylemlerin kayıtlarını tutar. İki temel hafıza türü vardır:

  • Kısa Süreli Hafıza: Süregelen tartışmaları takip etmek için bir not defteri gibi çalışır.
  • Uzun Süreli Hafıza: Bir günlüğün işlevi gibi, geçmiş etkileşimlerden bilgi depolar, kalıpları öğrenir ve daha iyi kararlar verir.

Bu hafıza türlerini birleştirerek, ajan daha özelleştirilmiş yanıtlar sunabilir ve zaman içinde kullanıcı tercihlerini hatırlayabilir, böylece daha bağlantılı ve ilgili bir etkileşim sağlar.

Planlama

Planlama, LLM ajanlarına akıl yürütmek, görevleri parçalamak ve planları görevlerin gelişimi doğrultusunda uyarlamak yeteneği kazandırır. Planlama iki ana aşamadan oluşur:

  • Plan Oluşturma: Bir görevi daha küçük alt görevlere ayırma.
  • Plan Yansıtma: Planın etkinliğini değerlendirme, geri bildirimi entegre etme ve stratejileri iyileştirme.

Chain of Thought (CoT) ve Tree of Thought (ToT) gibi yöntemler, bu parçalama sürecinde ajanlara yardımcı olur ve farklı yolları keşfetmelerine olanak tanır.

AI ajanlarının dünyasını daha derinlemesine keşfetmek, mevcut yeteneklerini ve potansiyellerini öğrenmek için “Auto-GPT & GPT-Engineer: An In-Depth Guide to Today’s Leading AI Agents” okumaya değer.

Çevreyi Ayarlamak

RAG ajanımızı oluşturmak için, geliştirme ortamımızı ayarlamamız gerekir. Python ve LangChain, Chroma gibi beberapa önemli kütüphane kullanacağız:

  • LangChain: LLM ve alma bileşenlerimizi düzenlemek için.
  • Chroma: Belge gömme depomuz olarak.
  • OpenAI’ın GPT modelleri: Temel LLM olarak (tercih ettiğiniz açık kaynaklı modeli kullanabilirsiniz).
  • FastAPI: Ajanımızla etkileşime girebileceğimiz basit bir API oluşturmak için.

Başlayalım ve ortamımızı ayarlayalım:


# Yeni bir sanal ortam oluşturun
python -m venv rag_agent_env
source rag_agent_env/bin/activate # Windows'ta `rag_agent_env\Scripts\activate` kullanın

# Gerekli paketleri kurun
pip install langchain chromadb openai fastapi uvicorn

Şimdi, rag_agent.py adlı yeni bir Python dosyası oluşturalım ve gerekli kütüphaneleri içe aktaralım:


from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
import os

# OpenAI API anahtarınızı ayarlayın
os.environ["OPENAI_API_KEY"] = "api-anahtarınız-buraya"

Basit bir RAG Sistemi Oluşturma

Ortamımızı ayarladıktan sonra, basit bir RAG sistemi oluşturalım. Bir dizi belgeden bir bilgi tabanı oluşturarak başlayacak ve bunu sorguları yanıtlamak için kullanacağız.

1. Adım: Belgeleri Hazırlamak

İlk olarak, belgelerimizi yükleyip hazırlamamız gerekir. Bu örnekte, knowledge_base.txt adlı bir metin dosyasına sahip olduğumuzu varsayalım ve bu dosya AI ve makine öğrenimi hakkında bazı bilgiler içeriyor.


# Belgeyi yükleyin
loader = TextLoader("knowledge_base.txt")
documents = loader.load()

# Belgeleri parçalara ayırın
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

# Gömmeleri oluşturun
embeddings = OpenAIEmbeddings()

# Vektör depoyu oluşturun
vectorstore = Chroma.from_documents(texts, embeddings)

2. Adım: Alma Dayalı bir QA Zinciri Oluşturmak

Şimdi vektör depomuza sahip olduğumuza göre, alma dayalı bir QA zinciri oluşturabiliriz:


# Alma dayalı bir QA zinciri oluşturun
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vectorstore.as_retriever())

3. Adım: Sistemi Sorgulamak

Şimdi RAG sistemimizi sorgulayabiliriz:


query = "Makine öğreniminin ana uygulamaları nelerdir?"
result = qa.run(query)
print(result)

4. Adım: LLM Ajanı Oluşturmak

Basit RAG sistemimiz yararlı olsa da, oldukça sınırlıdır. Bunu, daha karmaşık görevleri gerçekleştirebilen ve akıl yürütebilen bir LLM ajanı oluşturarak geliştirelim.

Bir LLM ajanı, araçları kullanabilen ve eylemler hakkında kararlar alabilen bir AI sistemidir. Hem sorguları yanıtlamak hem de web aramaları yapmak ve temel hesaplamalar gerçekleştirebilen bir ajan oluşturacağız.

İlk olarak, ajanımız için bazı araçlar tanımlayalım:

from langchain.agents import Tool
from langchain.tools import DuckDuckGoSearchRun
from langchain.tools import BaseTool
from langchain.agents import initialize_agent
from langchain.agents import AgentType

# Bir hesap makinesi aracı tanımlayın
class CalculatorTool(BaseTool):
name = “Hesap Makinesi”
description = “Matematikle ilgili sorulara cevap vermek için yararlı”

def _run(self, query: str)

Son beş yıldır Makine Öğrenimi ve Derin Öğrenme dünyasına kendimi daldırmış bulunuyorum. Tutkum ve uzmanlığım, özellikle AI/ML odaklı 50'den fazla çeşitli yazılım mühendisliği projesine katkıda bulunmama yol açtı. Süregelen meraklılığım ayrıca beni Doğal Dil İşleme'ye doğru çekti, bu alanda daha fazla keşfetmeye hevesliyim.