Connect with us

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

Prompt Mühendisliği

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

mm

Büyük Dil Modellerinin (LLM) öğrenmek için kullandıkları parametre sayısı önemlidir. Modelin parametre sayısı ne kadar fazla olursa, kelime ve cümleler arasındaki ilişkiyi anlaması o kadar iyi olur. Bu, milyarlarca parametre olan modellerin çeşitli yaratıcı metin formatları oluşturabileceği ve açık uçlu ve zor sorulara bilgilendirici bir şekilde cevap verebileceği anlamına gelir.

ChatGPT gibi, Transformer modelini kullanan LLM’ler, insan dilini anlamak ve üretmek konusunda uzmanlaşmışlardır, bu da doğal dil anlayışını gerektiren uygulamalar için yararlı olmalarını sağlar. Ancak sınırlamaları yoktur, bunlar arasında eski bilgiler, dış sistemlerle etkileşime girememek, bağlam anlayışının olmaması ve bazen inandırıcı ancak yanlış veya anlamsız cevaplar üretmesi gibi şeyler bulunur.

Bu sınırlamaları gidermek, LLM’leri dış veri kaynakları ve yetenekler ile entegre etmeyi gerektirir, bu da karmaşıklıklar sunabilir ve kapsamlı kodlama ve veri işleme becerileri talep edebilir. Bu, AI kavramlarını ve karmaşık algoritmaları anlamakla ilgili zorluklarla birleşerek, LLM’leri kullanan uygulamalar geliştirmekle ilgili öğrenme eğrisine katkıda bulunur.

Bununla birlikte, LLM’lerin diğer araçlarla entegre edilmesi ve LLM güçlendirilmiş uygulamalar oluşturulması, dijital manzaramızı yeniden tanımlayabilir. Bu tür uygulamaların potansiyeli büyük olup, verimliliği ve üretkenliği artırma, görevleri basitleştirme, karar vermeyi iyileştirme ve kişiselleştirilmiş deneyimler sunma gibi şeyler içerir.

Bu makalede, Langchain ile ileri düzey prompt mühendisliği tekniklerini daha derinlemesine inceleyeceğiz, açıklamalar, pratik örnekler ve bunları uygulamak için adım adım talimatlar sunacağız.

Langchain, bir kütüphane olarak, prompt’ları tasarlamak, uygulamak ve ayarlamak için kolaylık ve esneklik sağlar. Prompt mühendisliğinin ilkelerini ve uygulamalarını açıklarken, Langchain’in güçlü özelliklerini nasıl kullanacağınızı öğreneceksiniz. SOTA Generatif AI modellerinin gücünü nasıl kullanacağınızı öğreneceksiniz.

Prompt’ları Anlamak

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

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

Prompt mühendisliği, etkili prompt’lar tasarlamak sanatı ve bilimidir. Hedef, bir dil modelinden istenilen çıktıyı elde etmektir. Prompt’ları dikkatli bir şekilde seçerek ve yapılandırarak, modeli daha doğru ve ilgili cevaplar üretmeye yönlendirebilirsiniz. Uygulamada, bu, modelin eğitimine ve yapısal önyargılarına uygun girdi cümlelerini ince ayarlamak anlamına gelir.

Prompt mühendisliğinin sofistike düzeyleri, basit tekniklerden, ilgili anahtar kelimelerle modeli beslemeye kadar değişebilir ve daha gelişmiş yöntemler, modelin iç mekanizmalarını avantajına kullanarak karmaşık, yapılandırılmış prompt’lar tasarlamayı 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 dereceli açık kaynaklı çerçevelerden biri haline gelmiştir. Uygulamalara Büyük Dil Modellerini (LLM) entegre etmek için standartlaştırılmış ve basitleştirilmiş bir arayüz sunar. Ayrıca, prompt mühendisliği için özellik açısından zengin bir arayüz sağlar, böylece geliştiriciler farklı stratejileri deneyebilir ve sonuçlarını değerlendirebilir. 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ış çizelgesine dönüştürmek için bir kullanıcı arayüzü görevi görür, böylece hızlı prototip oluşturma ve deneysel çalışma sağlar.

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

LangChain, bağımsız bir model veya sağlayıcı değil, LLM uygulamalarının basit bir API çağrısı ile sınırlarının ötesinde 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, Model I/O olarak bilinen standartlaştırılmış bir arayüzle çeşitli dil modelleriyle sorunsuz bir bağlantı sağlar. Bu, modelin optimize edilmesi veya daha iyi performans için kolayca değiştirilmesini sağlar. LangChain, OpenAI, HuggingFace, Azure, Fireworks gibi çeşitli dil modeli sağlayıcılarını destekler.

Prompt Şablonları

Bu, LLM’lerle etkileşimi yönetmek ve optimize etmek için kullanılır ve dil modeline verilen talimatları veya örnekleri sağlar. Prompt’ları optimize etmek, model performansını artırabilir ve esnekliği, girdi sürecine önemli ölçüde katkıda bulunur.

Basit bir prompt şablonu örneği:


from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["subject"],
template="What are the recent advancements in the field of {subject}?")
print(prompt.format(subject="Natural Language Processing"))

Karmaşıklık seviyemizi artırdıkça, LangChain’de daha sofistike kalıplarla karşılaşırız, Örneğin Reason and Act (ReAct) kalıbı. ReAct, bir aracı görevlendirmek için önemli bir kalıptır, burada ajan, bir aracı görevlendirir, girişi özelleştirir ve görevi gerçekleştirmek için çıktıyı ayrıştırır. Aşağıdaki Python örneği, bir ReAct kalıbını gösterir. LangChain’de bir prompt’un nasıl yapılandırıldığını gösterir, bir problemi düşünmek ve bir cevap üretmek için bir dizi düşünce ve eylemi kullanarak:

PREFIX = """Answer the following question using the given tools:"""
FORMAT_INSTRUCTIONS = """Follow this format:
Question: {input_question}
Thought: your initial thought on the question
Action: your chosen action from [{tool_names}]
Action Input: your input for the action
Observation: the action's outcome"""
SUFFIX = """Start!
Question: {input}
Thought:{agent_scratchpad}"""

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 durum bilgisi davranış, LangChain uygulamalarının performansını geliştirir, önceki yanıtları, kullanıcı etkileşimlerini, ortamın durumunu ve aracının hedeflerini depolayarak.

Ajanlar

Bir ajan, görevleri gerçekleştirmek için dünya ile etkileşime girer. LangChain’de ajanlar, araçları ve zincirleri görevleri gerçekleştirmek için birleştirir. Dış dünyaya bilgi almak için bir bağlantı kurabilir, böylece LLM’lerin içsel sınırlamalarını aşabilir. Hesaplamaları, durumuna bağlı olarak bir hesap makinesine veya Python yorumlayıcısına geçirebilir.

Ajanlar, araçlar, araç setleri ve ajan yürütücüleri gibi alt bileşenlere sahiptir:

  • Araçlar: İşlevsel bileşenlerdir.
  • Araç Setleri: Araç koleksiyonlarıdır.
  • Ajan Yürütücüleri: Bu, 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, metninizi tamamlamak için bir LLM’ye sormak yerine, düşünce/etki/gözlem döngüsünde yanıt vermesini isteyebilirsiniz.

Zincirler

Zincirler, LangChain kütüphanesinin dil modeli girdilerini ve çıktılarını sorunsuz bir şekilde işleymesine olanak tanıyan işlemler dizisidir. Bu zincirler, esas olarak diğer zincirlerden veya ilkelere (örneğin, prompt’lar, dil modelleri veya yardımcı programlar) bağlı linklerden oluşur.

Bir zinciri, bir fabrikadaki bir konveyör bandı olarak hayal edin. Bu banttaki her adım, bir işlemi temsil edebilir, bu da bir dil modelini çağırmak, bir metne bir Python işlevi uygulamak veya modeli belirli bir şekilde uyarmak olabilir.

LangChain, zincirlerini üç türe ayırır: Yardımcı Zincirler, Genel Zincirler ve Belgeyi Birleştiren Zincirler. Yardımcı ve Genel Zincirleri tartışmak için devam edeceğiz.

  • Yardımcı Zincirler , dar olarak tanımlanmış görevler için dil modellerinden kesin cevaplar çıkarmak üzere özel olarak tasarlanmıştır. Örneğin, LLMMathChain yardımcı zincirine bakalım. Bu yardımcı zincir, dil modellerinin matematiksel hesaplamalar gerçekleştirmesine olanak tanır. Doğal dilde bir soru kabul eder ve dil modeli, daha sonra hesaplanmak üzere bir Python kodu parçasını üretir.
  • Genel Zincirler , diğer zincirlerin yapı taşları olarak hizmet eder, ancak tek başına kullanılamazlar. Bu zincirler, LLMChain gibi, temel zincirlerdir ve genellikle daha karmaşık görevleri gerçekleştirmek için diğer zincirlerle birleştirilir. Örneğin, LLMChain, thường bir dil modeli nesnesini, verilen bir prompt şablonuna göre girdi formatı olarak geçirerek sorgulamak için kullanılır.

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

Langchain kullanarak prompt mühendisliğini uygulayacağız. Devam etmeden önce, gerekli yazılımları ve paketlerini kurduğunuzdan emin olun.

Docker, Conda, Pip ve Poetry gibi popüler araçları LangChain kurmak için kullanabilirsiniz. Her bir yöntemin ilgili kurulum dosyaları, LangChain deposunda https://github.com/benman1/generative_ai_with_langchain adresinde bulunabilir. Bu, 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ı içerir.

Makalemizde, Python için standart paket yöneticisi olan Pip’i, üçüncü taraf kütüphanelerini kurmak ve yönetmek 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üphane 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’i Kurma

İlk olarak, Langchain paketini kurmanız gerekir. Windows işletim sistemini kullanıyoruz. Terminalinizde aşağıdaki komutu çalıştırarak kurabilirsiniz:


pip install langchain

Adım 2: Langchain ve Diğer Gerekli Modülleri İçe Aktarma

Sonraki adım, Langchain’i ve diğer gerekli modülleri içe aktırmaktır. Burada ayrıca, NLP görevlerinde yaygın olarak kullanılan transformers kütüphanesini de içe aktarıyoruz.


import langchain
from transformers import AutoModelWithLMHead, AutoTokenizer

Adım 3: Ön Eğitimli Modeli Yükleme

Open AI

OpenAI modelleri, LangChain kütüphanesi veya OpenAI Python istemci kütüphanesi ile kolayca arayüzlendirilebilir. OpenAI ayrıca, metin gömme modelleri için bir Gömme 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 kullanılabilirlikleri her zaman garanti edilmez.

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


import os
os.environ["OPENAI_API_KEY"] = 'your-openai-token';

Anahtarı başarıyla oluşturduktan sonra, bunu bir çevre 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 komut dosyası düşünün:

from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")
# LLM, bir prompt alsın ve bir cevap üretsın
prompt = "who is the president of the United States of America?"
completion = llm(prompt)


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

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

Hugging Face

Hugging Face , PyTorch, TensorFlow ve JAX ile uyumlu, ÜCRETSİZ KULLANILABİLİR bir Transformers Python kütüphanesidir ve BERT, T5 gibi modellerin uygulamalarını içerir.

Hugging Face ayrıca, kod depoları, makine öğrenimi modelleri, veri kümeleri ve web uygulamaları barındırmak için bir platform olan Hugging Face Hub’u sunar.

Hugging Face’i model sağlayıcısı olarak kullanmak için, bir hesap ve API anahtarlarına ihtiyacınız olacaktır, bunlar web sitelerinden elde edilebilir. Token, HUGGINGFACEHUB_API_TOKEN olarak çevre değişkeninizde bulunabilir.

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

from langchain.llms import HuggingFaceHub

llm = HuggingFaceHub(model_kwargs={"temperature": 0.5, "max_length": 64},repo_id="google/flan-t5-xxl")
prompt = "In which country is Tokyo?"
completion = llm(prompt)
print(completion)

Bu komut, bir soru alır ve cevap üretir, modelin bilgi ve tahmin etme yeteneklerini gösterir.

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

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

prompt = 'Translate the following English text to French: "{0}"'
input_text = 'Hello, how are you?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

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 çevirmek için bir prompt veriyoruz. Dil modeli, verilen metni çevirmeye çalışır.

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

Yukarıdaki yaklaşım iyi çalışıyor, ancak prompt mühendisliğinin gücünden tam olarak yararlanmıyor. Bunu geliştirelim ve daha karmaşık prompt yapıları tanıtıyoruz.

prompt = 'As a highly proficient French translator, translate the following English text to French: "{0}"'
input_text = 'Hello, how are you?'
input_ids = tokenizer.encode(prompt.format(input_text), return_tensors='pt')

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, prompt’u, çeviri işleminin “yüksek düzeyde yetkin bir Fransızca çevirmen” tarafından yapıldığını belirtmek için değiştiriyoruz. Prompt’taki bu değişiklik, daha iyi çevirilere yol açabilir, çünkü model şimdi bir uzmanın kişiliğini üstlenir.

Langchain ile Akademik Edebiyat Q&A Sistemi Oluşturma

LangChain kullanarak, son yayınlanan akademik makaleler hakkında soruları cevaplayabilen bir Akademik Edebiyat Q&A 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

Kurulumdan sonra, bir Python defterini oluşturup 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

Q&A sistemimizin çekirdeği, belirli bir alana (burada Doğal Dil İşleme (NLP)) ilişkin son akademik makaleleri arXiv akademik veritabanından almak能力sidir. Bunu gerçekleştirmek için, get_arxiv_data(max_results=10) adlı bir fonksiyon tanımlarız. Bu fonksiyon, NLP ile ilgili en son makale özetlerini arXiv’den toplar ve LangChain Belge nesnelerine dönüştürür, özetleri içerik olarak ve benzersiz girişi kimliğini kaynak olarak kullanır.

Sonuç olarak, arXiv API’sini kullanarak NLP ile ilgili son makaleleri alacağız:

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

documents = []

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

return documents

Bu fonksiyon, NLP ile ilgili en son makale özetlerini arXiv’den alır ve LangChain Belge nesnelerine dönüştürür. Makale özetini içerik olarak ve makaleye benzersiz girişi kimliğini kaynak olarak kullanıyoruz.

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

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

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

Akademik Q&A sistemimiz artık hazır, bir soru sorarak test edebiliriz:

print_answer("What are the recent advancements in NLP?")

Çıktı, sorunuzun cevabı olacaktır, kaynaklar da dahil olmak üzere:


Son gelişmeler arasında, bilgi arama görevleri için retriever-augmented instruction-following modellerinin geliştirilmesi yer alır. Bu modeller, çeşitli bilgi alanlarına ve görevlere uyarlanabilir ve ek fine-tuneleme gerektirmez. Ancak, sağlanan bilgilere bağlı kalmakta zorlanabilir ve yanıtlarında hayal ürünü olabilir. Bir diğer gelişme, alternatif akım optimal güç akışı (ACOPF) problemlerini çözmek için grafik işleme birimleri (GPU) 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 bir eşitsizlik rafine stratejisi ile bir iç nokta yöntemi (IPM) uygular. Bu strateji, IPM algoritmasının paralelleştirilmesini engelleyen sayısal pivotlama olmadan KKT matrisinin faktörleştirilmesine olanak tanır.
SOURCES: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

Modeli değiştirerek, örneğin GPT-4’e geçerek, çok daha iyi ve ayrıntılı bir cevap alabiliriz:

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

Doğal Dil İşleme (NLP) alanındaki son gelişmeler, bilgi arama görevleri için retriever-augmented instruction-following modellerinin geliştirilmesini içerir. Bu modeller, çeşitli bilgi alanlarına ve görevlere uyarlanabilir ve ek fine-tuneleme gerektirmez. Ancak, sağlanan bilgilere bağlı kalmakta zorlanabilir ve yanıtlarında hayal ürünü olabilir. Bir diğer gelişme, alternatif akım optimal güç akışı (ACOPF) problemlerini çözmek için grafik işleme birimleri (GPU) 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 bir eşitsizlik rafine stratejisi ile bir iç nokta yöntemi (IPM) uygular. Bu strateji, IPM algoritmasının paralelleştirilmesini engelleyen sayısal pivotlama olmadan KKT matrisinin faktörleştirilmesine olanak tanır.
SOURCES: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

GPT-4’te bir token, bir karakter kadar kısa veya bir kelime kadar uzun olabilir. Örneğin, GPT-4-32K, tek bir çalıştırıda 32.000 tokeni işleyebilir, GPT-4-8K ve GPT-3.5-turbo ise sırasıyla 8.000 ve 4.000 tokeni destekler. Ancak, bu modellerle her etkileşim, işlenen token sayısı ile doğrudan orantılı bir maliyetle gelir, bu da girdi veya çıktı olsun, her token için bir maliyet anlamına gelir.

Akademik Q&A sistemimiz bağlamında, bir parça akademik literatür maksimum token sınırını aşarsa, sistem tümünü işleyemez ve bu da cevapların kalitesini ve tamlığı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 Benzerlik Arama), bir soruya 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 ve buna en benzer parçaları geri çağırmak için kullanır.

Ancak, metni token sınırlamaları nedeniyle daha küçük parçalara bölmek, bazen bağlam kaybına yol açabilir ve cevapların kalitesini etkileyebilir. Bu nedenle, bu büyük dil modelleri ile ç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 ile devam edebiliriz:

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 kullanabiliriz
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))

search_index = FAISS.from_documents(document_chunks, OpenAIEmbeddings())

chain = load_qa_with_sources_chain(OpenAI(temperature=0))

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

Kodumuzu tamamladıktan sonra, son yayınlanan akademik literatürü sorgulamak için güçlü bir araç elimizde bulunuyor.

Son gelişmeler arasında, derin sinir ağları (DNN) kullanarak otomatik metin analizi ve NLP görevleri için dil modellerinin geliştirilmesi yer alır. Bu görevler, yazım denetimi, dil algılama, varlık çıkarma, yazar algılama, soru-cevap ve diğer görevleri içerir.
SOURCES: 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) uygulamalara entegrasyonu, dil çevirisi, duygu analizi ve bilgi arama gibi birçok alanı hızlandırmış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.

Ancak, bu gelişmelere rağmen, birkaç önemli noktayı unutmamak önemlidir. Langchain’i kullanırken, çıktının kalitesi büyük ölçüde prompt’un ifade edildiği şekilde bağlıdır. Farklı prompt stilleri ve yapıları denemek, daha iyi sonuçlar elde edilebilir. Ayrıca, Langchain’in çeşitli dil modellerini desteklediğini, ancak her birinin güçlü ve zayıf yanları olduğunu unutmayın. Belirli bir görev için doğru modeli seçmek çok önemlidir. Son olarak, bu modelleri kullanmanın, işlenen token sayısı ile doğrudan orantılı bir maliyeti olduğunu hatırlamak önemlidir.

Langchain, güçlü uygulamaları güçlendirme yeteneğine sahiptir, Örneğin, Akademik Literatür Q&A Sistemi. Büyüyen bir kullanıcı topluluğu ve açık kaynak manzarasındaki artan önemi ile Langchain, GPT-4 gibi LLM’lerin tam potansiyelini kullanmak için kilit bir araç olmaya devam edecektir.

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.