Prompt Mühendisliği

Sıfırdan İleri Düzey Prompt Mühendisliği ile Langchain ve Python

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

Büyük Dil Modelleri (LLM’ler) için önemli bir yön, bu modellerin öğrenmek için kullandıkları parametrelerin sayısıdır. Bir modelin parametreleri ne kadar fazla olursa, kelimeler ve cümleler arasındaki ilişkiyi anlaması o kadar iyi olur. Bu, milyarlarca parametreye sahip modellerin çeşitli yaratıcı metin formatları oluşturabilmesi ve açık uçlu ve zor soruları bilgilendirici bir şekilde cevaplayabilmesi anlamına gelir.

Transformer modelini kullanan ChatGPT gibi LLM’ler, insan dilini anlamak ve üretmek konusunda yeteneklidir, bu nedenle doğal dil anlayışını gerektiren uygulamalar için yararlıdır. Ancak, sınırlamaları da vardır; Bunlar arasında eski bilgiler, dış sistemlerle etkileşime girememe, bağlam理解inin olmaması ve bazen inandırıcı ancak yanlış veya anlamsız cevaplar üretmesi sayılabilir.

Bu sınırlamaları gidermek, LLM’leri dış veri kaynakları ve yeteneklerle entegre etmeyi gerektirir, bu da karmaşıklıklar ve kapsamlı kodlama ve veri işleme becerileri gerektirebilir. Bu, AI kavramlarını ve karmaşık algoritmaları anlamadaki zorluklarla birleşerek, LLM’leri kullanarak uygulamalar geliştirmenin öğrenme eğrisine katkıda bulunur.

Her şeye rağmen, LLM’lerin diğer araçlarla entegre edilmesi ve LLM güçlendirilmiş uygulamalar oluşturulması, dijital manzaramızı yeniden tanımlayabilir. Böyle uygulamaların potansiyeli büyük olup, verimliliği ve üretkenliği artırma, görevleri basitleştirme, karar alma süreçlerini iyileştirme ve kişiselleştirilmiş deneyimler sunma gibi birçok şeyi içerir.

Bu makalede, Langchain ile prompt mühendisliğinin gelişmiş tekniklerine daha derinlemesine girerek, net açıklamalar, pratik örnekler ve bunları uygulamak için adım adım talimatlar sunacağız.

Langchain, bir state-of-the-art kütüphane olarak, tasarlama, uygulama ve ayarlamada kolaylık ve esneklik sağlar. Prompt mühendisliğinin prensiplerini ve uygulamalarını açıkladıkça, Langchain’in güçlü özelliklerini kullanarak SOTA Generative AI modellerinin güçlü yönlerini nasıl kullanabileceğinizi öğreneceksiniz.

Promptleri Anlama

Prompt mühendisliğinin tekniklerine dalmadan önce, promptlerin kavramını ve önemini kavramak önemlidir.

Bir ‘prompt‘ bir dil modeline girdi olarak kullanılan token dizisidir ve belirli bir tür cevap oluşturmasını sağlar. Promptler, modelin davranışını yönlendirmede kritik bir rol oynar. Cevapların kalitesini etkileyebilir ve doğru bir şekilde tasarlandıklarında, modelin daha doğru ve bağlamsal sonuçlar üretmesine yardımcı olabilir.

Prompt mühendisliği, etkili promptleri tasarlamak sanatı ve bilimidir. Hedef, dil modelinden istenen çıktıyı elde etmektir. Promptleri dikkatlice seçerek ve yapılandırarak, modeli daha doğru ve alakalı cevaplar üretmeye yönlendirebilirsiniz. Uygulamada, bu, modelin eğitim ve yapısal önyargılarına uygun girdi cümlelerini fine-tune etmeyi içerir.

Prompt mühendisliğinin karmaşıklığı, basit tekniklerden, ilgili anahtar kelimeleri modelle beslemeye kadar uzanır ve daha gelişmiş yöntemleri, modelin iç mekanizmalarını avantajına kullanarak karmaşık, yapılandırılmış promptlerin tasarımını içerir.

Langchain: En Hızlı Büyüyen Prompt Aracı

LangChain, Ekim 2022’de Harrison Chase tarafından başlatılmış ve 2023’te GitHub’da en yüksek puanlı açık kaynaklı çerçevelerden biri haline gelmiştir. Büyük Dil Modellerini (LLM’ler) uygulamalara dahil etmek için basitleştirilmiş ve standartlaştırılmış bir arayüz sunar. Ayrıca, gelişmiş bir arayüz sağlar ve prompt mühendisliği için farklı stratejileri denemek ve sonuçlarını değerlendirmek mümkündür. Langchain’i kullanarak, prompt mühendisliği görevlerini daha etkili ve sezgisel bir şekilde gerçekleştirebilirsiniz.

LangFlow, LangChain bileşenlerini çalıştırılabilir bir akış şemasına dönüştürmek için bir kullanıcı arayüzü görevi görür, böylece hızlı prototipleme ve deneysel çalışmalara olanak sağlar.

LangChain, AI geliştirme için kitleler tarafından doldurulan önemli bir boşluğu doldurur. Sanal asistanlar, içerik oluşturucular, soru-cevap sistemleri ve daha fazlası gibi bir dizi NLP uygulamasını, gerçek dünya sorunlarını çözmek için güçlendirir.

LangChain, bağımsız bir model veya sağlayıcı değil, çeşitli modellerle etkileşimi basitleştirerek, LLM uygulamalarının basit API çağrılarının ötesine geçen yeteneklerini genişletir.

LangChain Mimarisi

 

LangChain’in ana bileşenleri Model I/O, Prompt Şablonları, Bellek, Ajanlar ve Zincirleri içerir.

Model I/O

LangChain, çeşitli dil modelleriyle etkileşimi kolaylaştırmak için Model I/O adlı standartlaştırılmış bir arayüz sağlar. Bu, model değişikliği veya daha iyi performans için kolay bir model geçişi sağlar. LangChain, OpenAI, HuggingFace, Azure, Fireworks gibi çeşitli dil modeli sağlayıcılarını destekler.

Prompt Şablonları

Bu şablonlar, LLM’lerle etkileşimi yönetmek ve optimize etmek için kullanılır. Promptleri optimize etmek, model performansını artırabilir ve esnekliği, girdi sürecine önemli ölçüde katkıda bulunur.

Bir prompt şablonunun basit bir örneği:


<p>from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["konu"],
template="{} alanındaki recent gelişmeler nelerdir?".format("konu"))
print(prompt.format(konu="Doğal Dil İşleme"))</p>

Karmaşıklık seviyesini artırdıkça, LangChain’de daha sofistike kalıplarla karşılaşırız, örneğin Reason ve Act (ReAct) kalıbı. ReAct, eylem yürütme için kritik bir kalıptır, burada ajan, uygun bir aracı görevlendirebilir, girdiyi özelleştirebilir ve çıktıyı işleyerek görevi tamamlayabilir. Aşağıdaki Python kodu, bir ReAct kalıbını gösterir. LangChain’de bir promptun nasıl yapılandırıldığını gösterir ve bir dizi düşünce ve eylemi kullanarak bir sorunu çözmek ve nihai bir cevap üretmek için kullanılır:

PREFIX = """Cevaplayın: """
FORMAT_INSTRUCTIONS = """Şu formatı kullanın:
Soru: {girdi_sorusu}
Düşünce: ilk düşünce
Eylem: {araç_adı} araçlarından biri
Eylem Girdisi: eylem girdisi
Gözlem: eylemin sonucu"""
SUFFIX = """Başlayın!
Soru: {girdi}
Düşünce:{ajans_kağıdı}"""

Bellek

Bellek, LangChain’de kritik bir kavramdır ve LLM’lerin ve araçların zaman içinde bilgiyi saklamalarına olanak tanır. Bu durumlu davranış, LangChain uygulamalarının performansını, önceki yanıtları, kullanıcı etkileşimlerini, ortam durumunu ve ajanın hedeflerini depolayarak geliştirir. ConversationBufferMemory ve ConversationBufferWindowMemory stratejileri, tüm veya son kısmının bir konuşmanın takip edilmesini sağlar. Daha gelişmiş bir yaklaşım için, ConversationKGMemory stratejisi, konuşmayı bir bilgi grafiği olarak kodlayabilir, bu da promptlere geri beslenebilir veya LLM çağrıları olmadan yanıtları tahmin etmek için kullanılabilir.

Ajanlar

Bir ajan, görevleri gerçekleştirmek için eylemler ve görevler gerçekleştirir. LangChain’de, ajanlar araçları ve zincirleri görevlerin yürütülmesi için birleştirir. Dış dünya ile bağlantı kurabilir, LLM’lerin bilgi eksikliğini gidermek için bilgi alabilir. Hesaplamaları bir hesap makinesine veya Python yorumlayıcısına bağlı olarak geçirebilir.

Ajanlar aşağıdaki alt bileşenlere sahiptir:

  • Araçlar: Fonksiyonel bileşenlerdir.
  • Araç Setleri: Araç koleksiyonlarıdır.
  • Ajan Yürütücüleri: Araçlar arasında seçim yapmayı sağlayan yürütme mekanizmasıdır.

LangChain’deki ajanlar ayrıca Zero-shot ReAct kalıbını takip eder, burada karar yalnızca aracın açıklamasına dayanır. Bu mekanizma, tam konuşma geçmişini dikkate almak için bellek ile genişletilebilir. ReAct ile, LLM’ye metni tamamlaması yerine, düşünce/eylem/gözlem döngüsünde yanıt vermesini sağlayabilirsiniz.

Zincirler

Zincirler, LangChain kütüphanesinin dil modeli girdilerini ve çıktılarını sorunsuz bir şekilde işleyebilmesini sağlayan operasyon dizileridir. Bu integral bileşenler, temel olarak diğer zincirlerden veya dil modelleri, promptlar ve yardımcı araçlar gibi ilkelere bağlı linklerden oluşur.

Bir zinciri, bir fabrikadaki bir konveyör bandı olarak düşünün. Bu bandadaki her adım belirli bir işlemi temsil eder; bu, bir dil modelini çağırmak, bir metne bir Python fonksiyonu uygulamak veya modeli belirli bir şekilde yönlendirmek olabilir.

LangChain, zincirlerini üç türe ayırır: Yardımcı Zincirler, Genel Zincirler ve Belgeleri Birleştiren Zincirler. Burada Yardımcı ve Genel Zincirleri ele alacağız.

  • Yardımcı Zincirler, dar olarak tanımlanmış görevler için dil modellerinden kesin cevaplar çıkarmak üzere tasarlanmıştır. Örneğin, LLMMathChain yardımcı zincirine bakalım. Bu, dil modellerinin matematiksel hesaplamalar gerçekleştirmesini sağlar. Doğal dilde bir soru kabul eder ve dil modeli, bu soruyu yanıtlayan bir Python kodu parçasını üretir, ardından bu kod çalıştırılır ve cevap üretilir.
  • Genel Zincirler ise diğer zincirlerin temelini oluşturur, ancak tek başına kullanılamazlar. Bu zincirler, örneğin LLMChain, diğer karmaşık görevleri gerçekleştirmek için birleştirilebilecek temel bileşenlerdir. LLMChain, bir dil modelini, verilen bir prompt şablonuna göre girdi temelinde biçimlendirerek ve bunu modelle çalıştırarak sorgulamak için sıkça kullanılır.

Langchain ile Prompt Mühendisliğinin Adım Adım Uygulaması

Langchain kullanarak prompt mühendisliğini uygulayacağımız süreci size adım adım anlatacağız. Başlamadan önce, gerekli yazılımları ve paketlerin kurulu olduğundan emin olun.

LangChain’i kurmak için Docker, Conda, Pip ve Poetry gibi popüler araçlardan yararlanabilirsiniz. LangChain deposunda (https://github.com/benman1/generative_ai_with_langchain) bu yöntemler için ilgili kurulum dosyaları bulunabilir. Bunlar, Docker için bir Dockerfile, Pip için bir requirements.txt, Poetry için bir pyproject.toml ve Conda için bir langchain_ai.yml dosyasını içerir.

Makalemizde, Python’ın standart paket yöneticisi olan Pip’i, üçüncü taraf kütüphanelerinin kurulumunu ve yönetimini kolaylaştırmak için kullanacağız. Python dağıtımınızda dahil değilse, Pip’i https://pip.pypa.io/ adresindeki talimatları takip ederek kurabilirsiniz.

Bir kütüphaneyi Pip ile kurmak için, pip install kütüphane_ismi komutunu kullanabilirsiniz.

Ancak, Pip kendi başına ortamları yönetmez. Farklı ortamları yönetmek için virtualenv aracını kullanırız.

Sonraki bölümde, model entegrasyonları hakkında konuşacağız.

Adım 1: Langchain Kurulumu

İlk olarak, Langchain paketini kurmanız gerekir. Windows işletim sistemini kullanıyoruz. Terminalde aşağıdaki komutu çalıştırarak kurulumu gerçekleştirebilirsiniz:


pip install langchain

Adım 2: Langchain ve Diğer Gerekli Modüllerin İthal Edilmesi

Sonraki adım, Langchain’i diğer gerekli modüllerle birlikte ithal etmektir. Burada ayrıca NLP görevleri için yaygın olarak kullanılan transformers kütüphanesini de ithal edeceğiz.


<p>import langchain
from transformers import AutoModelWithLMHead, AutoTokenizer

Adım 3: Önceden Eğitilmiş Modelin Yüklenmesi

Open AI

OpenAI modelleri, LangChain kütüphanesi veya OpenAI Python istemci kütüphanesiyle kolayca erişilebilir. OpenAI, metin gömme modelleri için Embedding sınıfı sağlar. İki önemli LLM modeli, GPT-3.5 ve GPT-4’tür ve principalmente token uzunluğunda farklılık gösterir. Her modelin fiyatlandırması OpenAI web sitesinde bulunabilir. GPT-4-32K gibi daha gelişmiş modeller, daha yüksek token kabulüne sahiptir, ancak API aracılığıyla erişilebilirlikleri her zaman garanti edilmez.

Bu modellere erişmek, OpenAI API anahtarını gerektirir. Bu, OpenAI platformunda bir hesap oluşturarak, faturalandırma bilgilerini ayarlayarak ve yeni bir gizli anahtar oluşturarak yapılabilir.


<p>import os
os.environ["OPENAI_API_KEY"] = 'openai-tokenınız'</p>

Anahtarı başarıyla oluşturduktan sonra, bunu bir ortam değişkeni (OPENAI_API_KEY) olarak ayarlayabilir veya OpenAI çağrıları sırasında sınıf oluştururken bir parametre olarak geçirebilirsiniz.

OpenAI modelleriyle etkileşimi gösteren bir LangChain betiği düşünün:

from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")
# LLM, bir prompt alır ve bir tamamlama üretir
prompt = "Amerika Birleşik Devletleri'nin başkanı kim?"
completion = llm(prompt)

<p>Amerika Birleşik Devletleri'nin şu anki başkanı Joe Biden'dir.</p>

Bu örnekte, bir ajan hesaplamalar gerçekleştirmek için başlatılır. Ajan, bir girdi alır, basit bir toplama görevi işler ve verilen OpenAI modelini kullanarak sonucu döndürür.

Hugging

Hugging Face, PyTorch, TensorFlow ve JAX ile uyumlu, ücretsiz bir Transformers Python kütüphanesidir ve BERT, T5 gibi modellerin uygulamalarını içerir.

Hugging Face, ayrıca kodu, makine öğrenimi modellerini, veri kümelerini ve web uygulamalarını barındırmak için Hugging Face Hub platformunu sunar.

Hugging Face’ı model sağlayıcısı olarak kullanmak için, hesabınız ve API anahtarınız olmalıdır. Bu anahtar, web sitelerinden elde edilebilir ve HUGGINGFACEHUB_API_TOKEN olarak ortamınızda kullanılabilir.

Aşağıdaki Python kodu, Google (GOOGL ) tarafından geliştirilen açık kaynaklı bir model olan Flan-T5-XXL modelini kullanır:

from langchain.llms import HuggingFaceHub

<p>llm = HuggingFaceHub(model_kwargs={"temperature": 0.5, "max_length": 64}, repo_id="google/flan-t5-xxl")
prompt = "Tokyo hangi ülkededir?"
completion = llm(prompt)
print(completion)</p>

Bu betik, bir soruyu alır ve cevap üretir, bu modelin bilgi ve öngörme yeteneklerini gösterir.

Adım 4: Temel Prompt Mühendisliği

İlk olarak, basit bir prompt oluşturup modelin nasıl cevap verdiğini görelim.

prompt = 'Aşağıdaki İngilizce metni Fransızca'ya çevirin: "{0}"'
input_text = 'Merhaba, nasılsınız?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

Yukarıdaki kod parçacığında, İngilizce metni Fransızca’ya çevirmesi için bir prompt veririz. Dil modeli, verilen metni çevirmeye çalışır.

Adım 5: İleri Düzey Prompt Mühendisliği

Önceki yaklaşım işe yarar, ancak prompt mühendisliğinin gücünden tam olarak yararlanmaz. Daha karmaşık prompt yapıları tanıtarak bunu geliştirelim.

prompt = 'Üst düzey bir Fransızca çevirmeni olarak, aşağıdaki İngilizce metni Fransızca'ya çevirin: "{0}"'
input_text = 'Merhaba, nasılsınız?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

Bu kod parçacığında, promptu değiştirerek çeviri işleminin “üst düzey bir Fransızca çevirmeni” tarafından yapıldığını belirtiyoruz. Bu değişikliğin, çevirilerin kalitesini artırabileceğini görebiliriz, çünkü model artık bir uzmanın çevirisini yapıyor gibi davranır.

Langchain ile Akademik Literatür Soru-Cevap Sistemi Oluşturma

LangChain kullanarak, yakın zamanda yayınlanmış akademik makaleler hakkında soruları cevaplayabilen bir Akademik Literatür Soru-Cevap Sistemi oluşturacağız.

İlk olarak, ortamımızı kurmak için gerekli bağımlılıkları yükleyeceğiz.

pip install langchain arxiv openai transformers faiss-cpu

Yükleme işlemlerinin ardından, yeni bir Python defterini açıp gerekli kütüphaneleri içe aktaracağız:

from langchain.llms import OpenAI
from langchain.chains.qa_with_sources import load_qa_with_sources_chain
from langchain.docstore.document import Document
import arxiv

Soru-Cevap sisteminin temelini, belirli bir alandaki (burada Doğal Dil İşleme – NLP) en son akademik makaleleri arXiv akademik veritabanından almak oluşturur. Bunu gerçekleştirmek için get_arxiv_data(max_results=10) adlı bir fonksiyon tanımlayacağız. Bu fonksiyon, arXiv’den NLP ile ilgili en yeni makale özetlerini toplayacak ve bunları LangChain Belge nesnelerine dönüştürecektir, içerik olarak özeti ve kaynağı olarak benzersiz girişi kullanacaktır.

arXiv API’sini kullanarak NLP ile ilgili yakın zamanda yayınlanmış makaleleri alacağız:


<p>def get_arxiv_data(max_results=10):
search = arxiv.Search(
query="NLP",
max_results=max_results,
sort_by=arxiv.SortCriterion.SubmittedDate,
)</p>

documents = []

<p>for result in search.results():
documents.append(Document(
page_content=result.summary,
metadata={"source": result.entry_id},
))</p>

return documents

Bu fonksiyon, NLP ile ilgili en yeni makalelerin özetlerini arXiv’den alır ve bunları LangChain Belge nesnelerine dönüştürür. Makalelerin özeti ve benzersiz girişi (makaleye link) olarak kullanır.

def print_answer(question):
print(
chain(
{
"input_documents": sources,
"question": question,
},
return_only_outputs=True,
)["output_text"]
)

Şimdi, kaynaklarımızı ve LangChain’i ayarlayalım:

sources = get_arxiv_data(2)
chain = load_qa_with_sources_chain(OpenAI(temperature=0))

Soru-Cevap sistemimiz hazır olduğunda, bir soru sorarak test edebiliriz:

print_answer("NLP'de recent gelişmeler nelerdir?")

Cevap, soruşturduğunuz bilginin kaynağı olarak belirtilen kaynaklardan alınan cevabı içerir. Örneğin:


<p>NLP'de recent gelişmeler arasında Retriever-augmented instruction-following modeller ve alternatif akım optimal güç akışı (ACOPF) problemlerini çözmek için grafik işlem birimleri (GPU'lar) kullanarak bir hesaplama çerçevesi bulunur.
KAYNAKLAR: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

Modeli veya sistemi gereksinimlerinize göre değiştirebilirsiniz. Örneğin, GPT-4’e geçmek, daha iyi ve ayrıntılı bir cevap sağlayabilir.

sources = get_arxiv_data(2)
chain = load_qa_with_sources_chain(OpenAI(model_name="gpt-4", temperature=0))

<p>NLP'de recent gelişmeler arasında, bilgi arama görevleri için retriever-augmented instruction-following modellerin geliştirilmesi bulunur. Bu modeller, çeşitli bilgi alanlarına ve görevlere uyarlanabilir, ancak genellikle sağlanan bilgiye bağlı kalmakta zorluk çekebilir ve yanıtlarında hayal gücü kullanabilir. Bir başka gelişme, alternatif akım optimal güç akışı (ACOPF) problemlerini çözmek için grafik işlem birimleri (GPU'lar) kullanarak bir hesaplama çerçevesinin tanıtılmasıdır. Bu yaklaşım, doğrusal olmayan programların (NLP) tek komut, çoklu veri (SIMD) soyutlamasını kullanır ve eşitsizlik rahatlatma stratejisi ile bir interior-point method (IPM) uygular. Bu strateji, KKT matrisinin faktörleştirilmesini numerical pivoting olmadan sağlar, bu da之前 IPM algoritmasının paralelleştirilmesini engellemiştir.
KAYNAKLAR: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

GPT-4’te bir token, bir karakterden kısa veya bir kelimeden uzun olabilir. Örneğin, GPT-4-32K, tek bir çalışmada 32.000 tokeni işleyebilirken, GPT-4-8K ve GPT-3.5-turbo sırasıyla 8.000 ve 4.000 tokeni destekler. Ancak, her bir bu modellerle etkileşim, doğrudan token sayısıyla orantılı olarak artan bir maliyetle ilişkilidir, bu da hem girdi hem de çıktı için geçerlidir.

Akademik Literatür Soru-Cevap sistemimizin bağlamında, bir akademik metin maksimum token sınırını aşarsa, sistem bunu tamamen işleyemez, bu da cevapların kalitesi ve tamamlanma oranını etkiler. Bu sorunu çözmek için metni, token sınırına uyan daha küçük parçalara bölmek mümkündür.

FAISS (Facebook AI Similarity Search) (META ), kullanıcı sorusuna en ilgili metin parçalarını hızlı bir şekilde bulmaya yardımcı olur. Her metin parçasının vektör temsilini oluşturur ve bu vektörleri, verilen bir sorunun vektör temsilini bulmak için kullanır.

FAISS gibi araçların kullanımı, metni token sınırlarına uymak için parçalara ayırmanın bazen bağlam kaybına yol açabileceğini ve cevapların kalitesini etkileyebileceğini unutmamak önemlidir. Bu nedenle, büyük dil modelleriyle çalışırken token kullanımını dikkatli bir şekilde yönetmek çok önemlidir.

pip install faiss-cpu langchain CharacterTextSplitter

Yukarıdaki kütüphanelerin kurulumunu tamamladıktan sonra, aşağıdaki Python kodu çalıştırabilirsiniz:

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.faiss import FAISS
from langchain.text_splitter import CharacterTextSplitter
documents = get_arxiv_data(max_results=10) # Artık daha fazla veri kullanabilirsiniz
document_chunks = []
splitter = CharacterTextSplitter(separator=" ", chunk_size=1024, chunk_overlap=0)
for document in documents:
for chunk in splitter.split_text(document.page_content):
document_chunks.append(Document(page_content=chunk, metadata=document.metadata))

<p>search_index = FAISS.from_documents(document_chunks, OpenAIEmbeddings())</p>

<p>chain = load_qa_with_sources_chain(OpenAI(temperature=0))</p>

<p>def print_answer(question):
print(
chain(
{
"input_documents": search_index.similarity_search(question, k=4),
"question": question,
},
return_only_outputs=True,
)["output_text"]
)

Kodumuz tamamlandığında, NLP alanındaki en son akademik literatürü sorgulamak için güçlü bir araç elde etmiş olacağız.

NLP'de recent gelişmeler arasında, derin sinir ağları (DNN'ler) için otomatik metin analizi ve NLP görevleri gibi spell checking, dil algılama, varlık çıkarma, yazar algılama, soru-cevap ve diğer görevler bulunur.
KAYNAKLAR: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1

SONUÇ

Büyük Dil Modellerinin (LLM’ler) uygulamalara entegrasyonu, dil çevirisi, duygu analizi ve bilgi arama gibi birçok alanda hızlı bir benimsemeye yol açmıştır. Prompt mühendisliği, bu modellerin potansiyelini en üst düzeye çıkarmak için güçlü bir araçtır ve Langchain, bu karmaşık görevi basitleştirmede önde gelen bir rol oynamaktadır. Standartlaştırılmış arayüzü, esnek prompt şablonları, güçlü model entegrasyonu ve ajanlar ve zincirlerin yenilikçi kullanımı, LLM’lerin performansını optimal sonuçlar için garantiler.

Langchain’i kullanırken, çıktı kalitesinin promptların ifade ediş şekline bağlı olduğunu unutmamak önemlidir. Farklı prompt stilleri ve yapıları denemek, daha iyi sonuçlar elde edilebilir. Ayrıca, Langchain çeşitli dil modellerini desteklese de, her birinin güçlü ve zayıf yönleri vardır ve belirli bir görev için doğru modeli seçmek kritiktir. Son olarak, bu modelleri kullanmanın maliyet boyutu olduğunu hatırlamak önemlidir, çünkü token işlemleri doğrudan etkileşim maliyetini etkiler.

Adım adım rehberde gösterildiği gibi, Langchain güçlü uygulamaları güçlendirebilir, örneğin Akademik Literatür Soru-Cevap Sistemi. Artan kullanıcı topluluğu ve açık kaynak manzarasındaki artan önemiyle, Langchain, GPT-4 gibi LLM’lerin tam potansiyelini kullanmak için önemli bir araç vaat etmektedir.

Son beş yıldır Makine Öğrenimi ve Derin Öğrenme dünyasına kendimi adamış bulunuyorum. Tutkum ve uzmanlığım, özellikle AI/ML'ye odaklanarak 50'den fazla çeşitli yazılım mühendisliği projesine katkıda bulunmama yol açtı. Süregelen meraklılığım da beni Doğal Dil İşleme alanına yöneltti, bu alana daha da derinlemesine girmeye hevesliyim.