Hızlı Mühendislik
Python'da Langchain ile Sıfırdan İleri İstem Mühendisliğine

Büyük Dil Modellerinin (LLM'ler) önemli bir yönü, bu modellerin öğrenme için kullandığı parametre sayısıdır. Bir model ne kadar çok parametreye sahip olursa, kelimeler ve ifadeler arasındaki ilişkiyi o kadar iyi kavrayabilir. Bu, milyarlarca parametreye sahip modellerin çeşitli yaratıcı metin biçimleri oluşturma ve açık uçlu ve zorlayıcı soruları bilgilendirici bir şekilde yanıtlama kapasitesine sahip olduğu anlamına gelir.
Transformer modelini kullanan ChatGPT gibi LLM'ler, insan dilini anlama ve üretme konusunda yetkindir ve bu da onları doğal dil anlayışı gerektiren uygulamalar için kullanışlı kılar. Bununla birlikte, diğerlerinin yanı sıra, güncelliğini yitirmiş bilgiler, dış sistemlerle etkileşime girememe, bağlamı anlama eksikliği ve bazen akla yatkın görünen ancak yanlış veya anlamsız yanıtlar üretme gibi sınırlamaları da vardır.
Bu sınırlamaları ele almak, LLM'leri, karmaşıklıklar sunabilen ve kapsamlı kodlama ve veri işleme becerileri gerektirebilen harici veri kaynakları ve yetenekleriyle entegre etmeyi gerektirir. Bu, AI kavramlarını ve karmaşık algoritmaları anlamanın zorluklarıyla birleştiğinde, LLM'leri kullanarak uygulama geliştirmeyle ilişkili öğrenme eğrisine katkıda bulunur.
Bununla birlikte, LLM destekli uygulamalar oluşturmak için LLM'lerin diğer araçlarla entegrasyonu, dijital manzaramızı yeniden tanımlayabilir. Verimliliği ve üretkenliği artırma, görevleri basitleştirme, karar vermeyi geliştirme ve kişiselleştirilmiş deneyimler sağlama dahil olmak üzere bu tür uygulamaların potansiyeli çok fazladır.
Bu yazıda, Langchain ile hızlı mühendisliğin gelişmiş tekniklerini keşfederek, net açıklamalar, pratik örnekler ve bunların nasıl uygulanacağına dair adım adım talimatlar sunarak bu konuları daha derinlemesine inceleyeceğiz.
Son teknoloji bir kütüphane olan Langchain, komut istemlerini tasarlama, uygulama ve ayarlama süreçlerine kolaylık ve esneklik kazandırır. Komut istemi mühendisliğinin prensiplerini ve uygulamalarını ele alırken, Langchain'in güçlü özelliklerini GPT-4 gibi SOTA Üretken Yapay Zeka modellerinin güçlü yönlerinden nasıl yararlanacağınızı öğreneceksiniz.
İstemleri Anlamak
Hızlı mühendisliğin teknik detaylarına dalmadan önce, istem kavramını ve önemini kavramak önemlidir.
A 'istemi', bir dil modeline girdi olarak kullanılan ve ona belirli bir yanıt türü oluşturma talimatını veren bir belirteç dizisidir. İstemler, bir modelin davranışını yönlendirmede çok önemli bir rol oynar. Oluşturulan metnin kalitesini etkileyebilirler ve doğru şekilde oluşturulduklarında modelin anlayışlı, doğru ve bağlama özel sonuçlar vermesine yardımcı olabilirler.
İstem mühendisliği, etkili istemler tasarlama sanatı ve bilimidir. Amaç, bir dil modelinden istenen çıktıyı elde etmektir. İstemleri dikkatlice seçip yapılandırarak, modelin daha doğru ve alakalı yanıtlar üretmesine rehberlik edilebilir. Uygulamada bu, girdi ifadelerinin modelin eğitimine ve yapısal eğilimlerine uygun şekilde ince ayarlanmasını içerir.
Hızlı mühendisliğin karmaşıklığı, modeli ilgili anahtar kelimelerle beslemek gibi basit tekniklerden, modelin iç mekaniğini kendi avantajına kullanan karmaşık, yapılandırılmış istemlerin tasarımını içeren daha gelişmiş yöntemlere kadar uzanır.
Langchain: En Hızlı Büyüyen Bilgi İstemi Aracı
Ekim 2022'de başlatılan LangChain harrison kovalamaca, biri haline geldi en yüksek puan alan açık kaynaklı çerçeveler 2023'te GitHub'da. Büyük Dil Modellerini (LLM'ler) uygulamalara dahil etmek için basitleştirilmiş ve standartlaştırılmış bir arayüz sunar. Aynı zamanda hızlı mühendislik için zengin özelliklere sahip bir arayüz sunarak geliştiricilerin farklı stratejiler denemelerine ve sonuçlarını değerlendirmelerine olanak tanır. Langchain'i kullanarak hızlı mühendislik görevlerini daha etkili ve sezgisel olarak gerçekleştirebilirsiniz.
LangFlow LangChain bileşenlerini yürütülebilir bir akış şemasında düzenlemek için bir kullanıcı arabirimi görevi görerek hızlı prototip oluşturma ve deney yapmaya olanak tanır.

LangChain, kitleler için yapay zeka geliştirmede çok önemli bir boşluğu dolduruyor. Bir dizi gerçek dünya problemini çözmek için sanal asistanlar, içerik oluşturucular, soru yanıtlama sistemleri ve daha fazlası gibi bir dizi NLP uygulamasına olanak tanır.
Bağımsız bir model veya sağlayıcı olmak yerine LangChain, LLM uygulamalarının yeteneklerini basit bir API çağrısının kısıtlamalarının ötesine genişleterek çeşitli modellerle etkileşimi basitleştirir.
LangChain Mimarisi
LangChain'in temel bileşenleri Model G/Ç, İstem Şablonları, Bellek, Aracılar ve Zincirlerdir.
Model G/Ç
LangChain, çeşitli dil modellerini Model G/Ç olarak bilinen standartlaştırılmış bir arabirimle sararak sorunsuz bir bağlantı kurmayı kolaylaştırır. Bu, optimizasyon veya daha iyi performans için zahmetsiz bir model geçişini kolaylaştırır. LangChain, aşağıdakiler dahil olmak üzere çeşitli dil modeli sağlayıcılarını destekler: OpenAI, SarılmaYüz, masmavi, FireworksVe daha fazlası.
Bilgi İstemi Şablonları
Bunlar, özlü talimatlar veya örnekler sağlayarak LLM'lerle etkileşimleri yönetmek ve optimize etmek için kullanılır. Bilgi istemlerini optimize etmek, model performansını artırır ve esneklikleri girdi sürecine önemli ölçüde katkıda bulunur.
Bilgi istemi şablonuna basit bir örnek:
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ıkta ilerledikçe, LangChain'de Reason and Act (ReAct) modeli gibi daha karmaşık modellerle karşılaşıyoruz. ReAct, aracının uygun bir araca bir görev atadığı, bunun için girdiyi özelleştirdiği ve görevi gerçekleştirmek için çıktısını ayrıştırdığı, eylem yürütme için hayati bir kalıptır. Aşağıdaki Python örneği, bir ReAct modelini göstermektedir. LangChain'de bir sorun üzerinde akıl yürütmek ve nihai bir yanıt üretmek için bir dizi düşünce ve eylem kullanılarak bir istemin nasıl yapılandırıldığını gösterir:
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 bilgileri zaman içinde saklamasını sağlar. Bu durum bilgisi, önceki yanıtları, kullanıcı etkileşimlerini, ortamın durumunu ve aracının hedeflerini depolayarak LangChain uygulamalarının performansını artırır. ConversationBufferMemory ve ConversationBufferWindowMemory stratejileri, sırasıyla bir konuşmanın tam veya son bölümlerinin takibine yardımcı olur. Daha karmaşık bir yaklaşım için, ConversationKGMemory stratejisi, konuşmanın komut istemlerine geri bildirimde bulunulabilen veya LLM'yi çağırmadan yanıtları tahmin etmek için kullanılabilen bir bilgi grafiği olarak kodlanmasına olanak tanır.
Danışmanlar
Bir etmen, eylemleri ve görevleri yerine getirerek dünyayla etkileşime girer. LangChain'de aracılar, görev yürütme için araçları ve zincirleri birleştirir. LLM bilgisini artırmak için bilgi alımı için dış dünyayla bir bağlantı kurabilir, böylece içsel sınırlamalarının üstesinden gelebilir. Duruma göre hesaplamaları bir hesap makinesine veya Python yorumlayıcısına aktarmaya karar verebilirler.
Aracılar alt bileşenlerle donatılmıştır:
- Montaj Ekipmanı: Bunlar işlevsel bileşenlerdir.
- Araç takımları: Araç koleksiyonları.
- Aracı Yürütücüler: Bu, araçlar arasında seçim yapmaya izin veren yürütme mekanizmasıdır.
LangChain'deki aracılar da, kararın yalnızca aracın açıklamasına dayandığı Sıfır Atış ReAct modelini izler. Bu mekanizma, tüm konuşma geçmişini hesaba katmak için bellekle genişletilebilir. ReAct ile, bir LLM'den metninizi otomatik olarak tamamlamasını istemek yerine, bir düşünce/eylem/gözlem döngüsünde yanıt vermesini sağlayabilirsiniz.
Zincirler
Zincirler, terimden de anlaşılacağı gibi, LangChain kitaplığının dil modeli girdilerini ve çıktılarını sorunsuz bir şekilde işlemesine izin veren işlem dizileridir. LangChain'in bu ayrılmaz bileşenleri, temel olarak diğer zincirler veya bilgi istemleri, dil modelleri veya yardımcı programlar gibi ilkel öğeler olabilen bağlantılardan oluşur.
Bir zinciri bir fabrikadaki taşıma bandı olarak hayal edin. Bu kuşaktaki her adım, bir dil modelini çağırmak, bir metne bir Python işlevi uygulamak ve hatta modeli belirli bir şekilde yönlendirmek gibi belirli bir işlemi temsil eder.
LangChain, zincirlerini üç türe ayırır: Yardımcı zincirler, Genel zincirler ve Belgeleri Birleştir zincirleri. Tartışmamızda Yardımcı ve Genel zincirleri inceleyeceğiz.
- Yardımcı Zincirler Dar tanımlı görevler için dil modellerinden kesin yanıtlar çıkarmak üzere özel olarak tasarlanmıştır. Örneğin, LLMMathChain'e bir göz atalım. Bu yardımcı zincir, dil modellerinin matematiksel hesaplamalar yapmasını sağlar. Doğal dilde bir soru kabul eder ve dil modeli de cevabı üretmek için çalıştırılan bir Python kod parçacığı oluşturur.
- Jenerik Zincirler, diğer yandan, diğer zincirler için yapı taşları görevi görür, ancak doğrudan bağımsız olarak kullanılamaz. LLMChain gibi bu zincirler temeldir ve karmaşık görevleri gerçekleştirmek için genellikle diğer zincirlerle birleştirilir. Örneğin, LLMChain, girişi sağlanan bilgi istemi şablonuna göre biçimlendirip ardından dil modeline geçirerek bir dil modeli nesnesini sorgulamak için sıklıkla kullanılır.
Prompt Engineering'in Langchain ile Adım Adım Uygulanması
Langchain kullanarak anında mühendislik uygulama sürecinde size yol göstereceğiz. Devam etmeden önce, gerekli yazılım ve paketleri kurduğunuzdan emin olun.
LangChain'i kurmak için Docker, Conda, Pip ve Poetry gibi popüler araçlardan yararlanabilirsiniz. Bu yöntemlerin her biri için ilgili yükleme dosyaları şu adresteki LangChain deposunda bulunabilir: https://github.com/benman1/generative_ai_with_langchain. Bu içerir Dockerfile Docker için bir gereksinimler.txt Pip için bir pyproject.toml Şiir için ve bir langchain_ai.yml Conda için dosya.
Makalemizde, üçüncü taraf kütüphanelerin kurulumunu ve yönetimini kolaylaştırmak için Python'ın standart paket yöneticisi olan Pip'i kullanacağız. Eğer Python dağıtımınızda yoksa, aşağıdaki talimatları izleyerek Pip'i kurabilirsiniz: https://pip.pypa.io/.
Pip ile bir kitaplık kurmak için şu komutu kullanın: pip install library_name.
Ancak Pip, ortamları kendi başına yönetmez. Farklı ortamları yönetmek için aracı kullanırız. virtualenv.
Bir sonraki bölümde, model entegrasyonlarını tartışacağız.
1. Adım: Langchain'i Kurma
Öncelikle Langchain paketini kurmanız gerekiyor. Windows işletim sistemi kullanıyoruz. Yüklemek için terminalinizde aşağıdaki komutu çalıştırın:
pip install langchain
2. Adım: Langchain ve diğer gerekli modülleri içe aktarma
Ardından, diğer gerekli modüllerle birlikte Langchain'i içe aktarın. Burada, NLP görevlerinde yaygın olarak kullanılan transformatörler kitaplığını da içe aktarıyoruz.
import langchain from transformers import AutoModelWithLMHead, AutoTokenizer
3. Adım: Önceden Eğitilmiş Modeli Yükleyin
AI'yi aç
OpenAI Modeller, LangChain kütüphanesi veya OpenAI Python istemci kütüphanesiyle kolayca arayüzlenebilir. Özellikle, OpenAI, metin yerleştirme modelleri için bir Embedding sınıfı sunar. İki önemli LLM modeli, temel olarak token uzunlukları bakımından farklılık gösteren GPT-3.5 ve GPT-4'tür. Her modelin fiyatlandırması OpenAI'nin web sitesinde bulunabilir. Daha fazla model olmasına rağmen GPT-4-32K gibi gelişmiş modeller daha yüksek belirteç kabulüne sahip olanların API aracılığıyla kullanılabilirliği her zaman garanti edilmez.

Bu modellere erişim için bir OpenAI API anahtarı gereklidir. Bu, OpenAI platformunda bir hesap oluşturarak, faturalama 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 ortam değişkeni (OPENAI_API_KEY) olarak ayarlayabilir veya OpenAI çağrıları için sınıf örneklemesi sırasında bir parametre olarak iletebilirsiniz.
OpenAI modelleriyle etkileşimi göstermek için bir LangChain betiği düşünün:
from langchain.llms import OpenAI llm = OpenAI(model_name="text-davinci-003") # The LLM takes a prompt as an input and outputs a completion prompt = "who is the president of the United States of America?" completion = llm(prompt)
The current President of the United States of America is Joe Biden.
Bu örnekte, hesaplamaları gerçekleştirmek için bir aracı başlatılmıştır. Aracı, basit bir toplama görevi olan bir girdi alır, bunu sağlanan OpenAI modelini kullanarak işler ve sonucu döndürür.
Sarılma Yüz
Sarılma Yüz bir ÜCRETSİZ KULLANIM PyTorch, TensorFlow ve JAX ile uyumlu Transformers Python kitaplığı ve aşağıdakiler gibi modellerin uygulamalarını içerir: Bert, T5, vb.
Hugging Face ayrıca kod depolarını, makine öğrenimi modellerini, veri kümelerini ve web uygulamalarını barındırmaya yönelik bir platform olan Hugging Face Hub'ı da sunuyor.
Hugging Face'i modelleriniz için bir sağlayıcı olarak kullanmak için bir hesaba ve web sitelerinden edinebileceğiniz API anahtarlarına ihtiyacınız olacak. Bu anahtar, ortamınızda HUGGINGFACEHUB_API_TOKEN olarak kullanılabilir.
Google tarafından geliştirilen açık kaynaklı bir model olan Flan-T5-XXL modelini kullanan aşağıdaki Python parçacığını göz önünde bulundurun:
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 dosyası, bir soruyu girdi olarak alır ve bir yanıt vererek modelin bilgi ve tahmin yeteneklerini sergiler.
Adım 4: Temel Bilgi İstemi Mühendisliği
Başlangıç olarak, basit bir bilgi istemi oluşturacağız ve modelin nasıl tepki verdiğini göreceğiz.
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ızcaya çevirmek için bir bilgi istemi sağlıyoruz. Dil modeli daha sonra verilen metni komut istemine göre çevirmeye çalışır.
Adım 5: Gelişmiş Bilgi İstemi Mühendisliği
Yukarıdaki yaklaşım gayet iyi çalışsa da, hızlı yanıt mühendisliğinin gücünden tam olarak yararlanamıyor. Daha karmaşık hızlı yanıt yapıları ekleyerek bunu geliştirelim.
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, çevirinin 'son derece yetkin bir Fransızca tercüman' tarafından yapıldığını önermek için istemi değiştiriyoruz. Model artık bir uzman kişiliğini varsaydığından istemdeki değişiklik çevirilerin iyileştirilmesine yol açabilir.
Langchain ile Akademik Literatür Soru-Cevap Sistemi Oluşturma
LangChain kullanarak yakın zamanda yayınlanmış akademik makaleler hakkındaki soruları cevaplayabilen bir Akademik Edebiyat Soru-Cevap sistemi oluşturacağız.

Öncelikle ortamımızı kurmak için gerekli bağımlılıkları kuruyoruz.
pip install langchain arxiv openai transformers faiss-cpu
Kurulumun ardından yeni bir Python notebook oluşturup gerekli kütüphaneleri import ediyoruz:
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 sistemimizin özü, belirli bir alanla ilgili akademik makaleleri getirme yeteneğidir, burada arXiv akademik veritabanını kullanarak Doğal Dil İşlemeyi (NLP) ele alıyoruz. Bunu gerçekleştirmek için bir fonksiyon tanımlıyoruz. get_arxiv_data(max_results=10). Bu işlev, arXiv'den en son NLP kağıt özetlerini toplar ve içerik olarak özeti ve kaynak olarak benzersiz giriş kimliğini kullanarak bunları LangChain Document nesnelerine kapsüller.
NLP ile ilgili son makaleleri almak için arXiv API'sini kullanacağı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 işlev, arXiv'deki en güncel NLP makalelerinin özetlerini alır ve bunları LangChain Belge nesnelerine dönüştürür. İçerik ve kaynak olarak sırasıyla makalenin özetini ve benzersiz giriş kimliğini (makalenin URL'sini) kullanıyoruz.
def print_answer(question):
print(
chain(
{
"input_documents": sources,
"question": question,
},
return_only_outputs=True,
)["output_text"]
)
Corpusumuzu tanımlayalım ve LangChain'i kuralım:
sources = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(temperature=0))
Akademik Soru-Cevap sistemimiz artık hazır, bir soru sorarak test edebiliriz:
print_answer("What are the recent advancements in NLP?")
Çıktı, bilgilerin çıkarıldığı kaynaklara atıfta bulunarak sorunuzun cevabı olacaktır. Örneğin:
Recent advancements in NLP include Retriever-augmented instruction-following models and a novel computational framework for solving alternating current optimal power flow (ACOPF) problems using graphics processing units (GPUs). SOURCES: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
İhtiyaçlarınıza göre modelleri kolayca değiştirebilir veya sistemi değiştirebilirsiniz. Örneğin, burada GPT-4'e geçiyoruz ve bu da bize çok daha iyi ve ayrıntılı bir yanıt sağlıyor.
sources = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(model_name="gpt-4",temperature=0))
Recent advancements in Natural Language Processing (NLP) include the development of retriever-augmented instruction-following models for information-seeking tasks such as question answering (QA). These models can be adapted to various information domains and tasks without additional fine-tuning. However, they often struggle to stick to the provided knowledge and may hallucinate in their responses. Another advancement is the introduction of a computational framework for solving alternating current optimal power flow (ACOPF) problems using graphics processing units (GPUs). This approach utilizes a single-instruction, multiple-data (SIMD) abstraction of nonlinear programs (NLP) and employs a condensed-space interior-point method (IPM) with an inequality relaxation strategy. This strategy allows for the factorization of the KKT matrix without numerical pivoting, which has previously hampered the parallelization of the IPM algorithm. SOURCES: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
GPT-4'teki bir belirteç, bir karakter kadar kısa veya bir kelime kadar uzun olabilir. Örneğin, GPT-4-32K tek bir çalıştırmada 32,000 belirteci işleyebilirken, GPT-4-8K ve GPT-3.5-turbo sırasıyla 8,000 ve 4,000 belirteci destekler. Ancak, bu modellerle her etkileşimin, ister girdi ister çıktı olsun, işlenen belirteç sayısıyla doğru orantılı bir maliyeti olduğunu unutmamak önemlidir.
Soru-Cevap sistemimiz bağlamında, bir akademik yayın maksimum belirteç sınırını aşarsa, sistem bunu bütünüyle işleyemez ve bu nedenle yanıtların kalitesini ve eksiksizliğini etkiler. Bu soruna geçici bir çözüm bulmak için metin, belirteç sınırına uyan daha küçük parçalara bölünebilir.
FAISS (Facebook AI Benzerlik Araması) Kullanıcının sorgusuyla ilgili en alakalı metin parçalarını hızla bulmasına yardımcı olur. Her metin parçasının vektörel bir gösterimini oluşturur ve bu vektörleri kullanarak, belirli bir sorunun vektörel gösterimine en çok benzeyen parçaları belirler ve getirir.
FAISS gibi araçlar kullanılsa bile, belirteç sınırlamaları nedeniyle metni daha küçük parçalara bölme zorunluluğunun bazen bağlam kaybına yol açarak yanıtların kalitesini etkileyebileceğini unutmamak önemlidir. Bu nedenle, bu büyük dil modelleriyle çalışırken belirteç kullanımının dikkatli bir şekilde yönetilmesi ve optimize edilmesi çok önemlidir.
pip install faiss-cpu langchain CharacterTextSplitter
Yukarıdaki kitaplıkların kurulu olduğundan emin olduktan sonra çalıştırın
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) # We can now use feed more data
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"]
)
Kod tamamlandığında, artık NLP alanındaki en son akademik literatürü sorgulamak için güçlü bir araca sahibiz.
Recent advancements in NLP include the use of deep neural networks (DNNs) for automatic text analysis and natural language processing (NLP) tasks such as spell checking, language detection, entity extraction, author detection, question answering, and other tasks. 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 alma gibi çeşitli alanların benimsenmesini hızlandırmıştır. İstem mühendisliği, bu modellerin potansiyelini en üst düzeye çıkarmada güçlü bir araçtır ve Langchain bu karmaşık görevi basitleştirmede öncüdür. Standartlaştırılmış arayüzü, esnek istem şablonları, sağlam model entegrasyonu ve aracıların ve zincirlerin yenilikçi kullanımı, LLM'lerin performansı için en iyi sonuçları sağlar.
Ancak bu gelişmelere rağmen, akılda tutulması gereken birkaç ipucu var. Langchain'i kullanırken, çıktı kalitesinin büyük ölçüde komut isteminin ifadesine bağlı olduğunu anlamanız önemlidir. Farklı komut istemi stilleri ve yapıları denemek daha iyi sonuçlar verebilir. Ayrıca, Langchain çeşitli dil modellerini desteklese de, her birinin kendine özgü güçlü ve zayıf yönleri olduğunu unutmayın. Belirli bir görev için doğru olanı seçmek çok önemlidir. Son olarak, bu modelleri kullanmanın maliyet açısından da önemli olduğunu unutmamak önemlidir; çünkü belirteç işleme, etkileşimlerin maliyetini doğrudan etkiler.
Adım adım kılavuzda gösterildiği gibi, Langchain, Akademik Literatür Soru-Cevap sistemi gibi sağlam uygulamalara güç sağlayabilir. Büyüyen bir kullanıcı topluluğu ve açık kaynak ortamında artan önemi ile Langchain, GPT-4 gibi LLM'lerin tam potansiyelinden yararlanmada çok önemli bir araç olmayı vaat ediyor.












