saplama Python'da Langchain ile Sıfırdan İleri İstem Mühendisliğine - Unite.AI
Bizimle iletişime geçin

Hızlı Mühendislik

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

mm
Güncellenmiş on

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 ürünü bir kitaplık olan Langchain, komut istemlerinin tasarlanması, uygulanması ve ayarlanması için kolaylık ve esneklik sağlar. Hızlı mühendisliğin ilkelerini ve uygulamalarını açarken, GPT-4 gibi SOTA Üretken AI modellerinin güçlü yönlerinden yararlanmak için Langchain'in güçlü özelliklerini nasıl kullanacağı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ı ortaya çıkarmaktır. Bilgi istemlerini dikkatli bir şekilde seçip yapılandırarak, modele daha doğru ve ilgili yanıtlar üretme yönünde rehberlik edilebilir. Uygulamada bu, modelin eğitimine ve yapısal önyargılarına hitap etmek için giriş ifadelerinin ince ayarı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 ana bileşenleri arasında Model G/Ç, Bilgi İstemi Şablonları, Bellek, Aracılar ve Zincirler bulunur.

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 tutmasını sağlar. Bu durum bilgisi olan davranış, ö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 izlenmesine yardımcı olur. Daha sofistike bir yaklaşım için, ConversationKGMemory stratejisi, sohbetin bilgi istemlerine geri beslenebilen veya LLM'yi çağırmadan yanıtları tahmin etmek için kullanılabilen bir bilgi grafiği olarak kodlanmasına izin verir.

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:

  • Tools: 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 temsilciler ayrıca, kararın yalnızca aracın açıklamasına dayalı olduğu Zero-shot ReAct modelini izler. Bu mekanizma, tüm konuşma geçmişini hesaba katmak için bellekle genişletilebilir. ReAct ile, LLM'den metninizi otomatik olarak tamamlamasını istemek yerine, ondan bir düşünce/eylem/gözlem döngüsünde yanıt vermesini isteyebilirsiniz.

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ız için Faydalı ve Genel zincirlere dalacağız.

  • Yardımcı Zincirler dar tanımlanmış 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 hizmet zinciri, dil modellerinin matematiksel hesaplamalar yapmasını sağlar. Doğal dilde bir soruyu kabul eder ve dil modeli, daha sonra yanıtı üretmek için yürütülen bir Python kod parçacığını 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.

Yazımızda üçüncü parti kütüphanelerin kurulumunu ve yönetimini kolaylaştırmak için Python için standart paket yöneticisi olan Pip'i kullanacağız. Python dağıtımınıza dahil değilse, adresindeki talimatları izleyerek Pip'i yükleyebilirsiniz. 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ı ortamlarla başa çıkmak için aracı kullanıyoruz 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 kitaplığı veya OpenAI Python istemci kitaplığı ile uygun şekilde arayüzlenebilir. Özellikle OpenAI, metin gömme modelleri için bir Gömme sınıfı sağlar. Başlıca belirteç uzunluğunda farklılık gösteren iki temel LLM modeli GPT-3.5 ve GPT-4'tür. Her model için fiyatlandırma OpenAI'nin web sitesinde bulunabilir. daha varken 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şmek için bir OpenAI API anahtarı gerekir. Bu, OpenAI platformunda bir hesap oluşturarak, fatura 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 üzere bir hesaba ve web sitelerinden edinilebilecek API anahtarlarına ihtiyacınız olacak. Belirteç, ortamınızda HUGGINGFACEHUB_API_TOKEN olarak kullanılabilir hale getirilebilir.

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 iyi çalışsa da hızlı mühendisliğin gücünden tam olarak yararlanmaz. Biraz daha karmaşık bilgi istemi yapıları sunarak 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'i kullanarak yakın zamanda yayınlanan akademik makalelerle ilgili soruları yanıtlayabilecek bir Akademik Literatür 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, en son NLP makalelerinin özetlerini arXiv'den alır ve bunları LangChain Document nesnelerine dönüştürür. İçerik ve kaynak olarak sırasıyla makalenin özetini ve benzersiz giriş kimliğini (makalenin URL'si) kullanıyoruz.

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

Derlemimizi 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

Modelleri kolayca değiştirebilir veya sistemi ihtiyaçlarınıza göre değiştirebilirsiniz. Örneğin, burada bize çok daha iyi ve ayrıntılı bir yanıt veren GPT-4'e geçiyoruz.

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 seferde 32,000 adede kadar jetonu işleyebilirken, GPT-4-8K ve GPT-3.5-turbo sırasıyla 8,000 ve 4,000 jetonu destekler. Bununla birlikte, bu modellerle her etkileşimin, ister girdi ister çıktı olsun, işlenen belirteç sayısıyla doğru orantılı bir maliyeti olduğunu not etmek ö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ızlı bir şekilde bulmaya yardımcı olur. Her metin öbeğinin bir vektör temsilini oluşturur ve bu vektörleri, belirli bir sorunun vektör temsiline en çok benzeyen parçaları belirlemek ve almak için kullanır.

FAISS gibi araçların kullanımında bile, belirteç sınırlamaları nedeniyle metni daha küçük parçalara bölme gerekliliğinin 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 yönetimi ve optimizasyonu ç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'ler) uygulamalara entegrasyonu, dil çevirisi, duygu analizi ve bilgi alma dahil olmak üzere çeşitli alanların benimsenmesini hızlandırdı. Hızlı mühendislik, bu modellerin potansiyelini en üst düzeye çıkarmada güçlü bir araçtır ve Langchain, bu karmaşık görevi basitleştirmede başı çekiyor. Standartlaştırılmış arabirimi, esnek bilgi istemi şablonları, sağlam model entegrasyonu ve aracıların ve zincirlerin yenilikçi kullanımı, LLM'lerin performansı için en uygun 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 istemin ifadesine bağlı olduğunu anlamanız önemlidir. Farklı bilgi istemi stilleri ve yapılarıyla denemeler yapmak, daha iyi sonuçlar verebilir. Ayrıca, Langchain çeşitli dil modellerini desteklese de her birinin güçlü ve zayıf yönleri olduğunu unutmayın. Özel göreviniz için doğru olanı seçmek çok önemlidir. Son olarak, belirteç işleme etkileşimlerin maliyetini doğrudan etkilediğinden, bu modelleri kullanmanın maliyet hususlarını beraberinde getirdiğini unutmamak önemlidir.

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.

Son beş yılımı, Makine Öğrenimi ve Derin Öğrenmenin büyüleyici dünyasına dalarak geçirdim. Tutkum ve uzmanlığım, özellikle AI/ML'ye odaklanarak 50'den fazla farklı yazılım mühendisliği projesine katkıda bulunmamı sağladı. Devam eden merakım, beni daha fazla keşfetmeye hevesli olduğum bir alan olan Doğal Dil İşleme'ye de çekti.