LangChain, Büyük Dil Modellerinin (LLM'ler) gücünden yararlanmak için geliştirilmiş son teknoloji ve sağlam bir araçtır.
Bu LLM'ler olağanüstü yeteneklere sahiptir ve çok çeşitli görevleri verimli bir şekilde ele alabilir. Ancak, güçlerinin derinlemesine alan uzmanlığından ziyade genel doğalarında yattığını not etmek önemlidir. GPT-4'ün kullanıma sunulmasından bu yana popülaritesi hızla arttı.
LLM'ler çeşitli görevleri yerine getirmede mükemmel olsa da, belirli yanıtlar sağlama veya derin alan bilgisi gerektiren görevlerin üstesinden gelme konusunda sınırlamalarla karşılaşabilirler. Örneğin, soruları yanıtlamak veya tıp veya hukuk gibi özel alanlarda görevleri yerine getirmek için bir LLM kullanmayı düşünün.
LLM, bu alanlarla ilgili genel sorulara kesinlikle yanıt verebilirken, özel bilgi veya uzmanlık gerektiren daha ayrıntılı veya incelikli yanıtlar sunmakta zorlanabilir.
Bunun nedeni, LLM'lerin çeşitli kaynaklardan gelen çok miktarda metin verisi üzerinde eğitilmiş olmaları ve kalıpları öğrenmelerine, bağlamı anlamalarına ve tutarlı yanıtlar üretmelerine olanak sağlamasıdır. Bununla birlikte, eğitimleri tipik olarak, bu alanlardaki insan uzmanlarla aynı ölçüde alana özgü veya uzmanlaşmış bilgi edinimini içermez.
Bu nedenle, LLM'lerle bağlantılı olarak LangChain, çok çeşitli görevler için paha biçilmez bir araç olabilirken, belirli durumlarda derin alan uzmanlığının hala gerekli olabileceğini kabul etmek önemlidir. Uzmanlaşmış bilgiye sahip insan uzmanlar, tek başına LLM'lerin yeteneklerinin ötesinde olabilecek gerekli derinliği, incelikli anlayışı ve bağlama özgü içgörüleri sağlayabilir.
LangChain'in belgelerine bakmanızı tavsiye ederiz veya GitHub tipik kullanım durumlarının daha kapsamlı bir şekilde anlaşılması için depo. Bu paketin daha büyük bir resmini elde etmeniz şiddetle tavsiye edilir.
Nasıl Çalışır?
LangChain'in amacını ve çalışmasını anlamak için pratik bir örneği ele alalım. GPT-4'ün etkileyici bir genel bilgiye sahip olduğunun ve çok çeşitli sorulara güvenilir yanıtlar verebileceğinin farkındayız.
Ancak, kişisel belge, kitap, PDF dosyası veya tescilli veri tabanı gibi kendi verilerimizden belirli bilgiler istiyorsak ne olur?
LangChain, bir büyük dil modeli GPT-4 gibi kendi veri kaynaklarımıza. Bir metin parçasını sohbet arayüzüne yapıştırmanın ötesine geçer. Bunun yerine, kendi verilerimizle dolu bir veritabanının tamamına başvurabiliriz.
İstenen bilgileri elde ettikten sonra, LangChain belirli eylemleri gerçekleştirmemizde bize yardımcı olabilir. Örneğin, belirli ayrıntıları içeren bir e-posta göndermesi talimatını verebiliriz.
Bunu başarmak için, LangChain kullanarak bir boru hattı yaklaşımı izliyoruz. İlk önce istediğimiz belgeyi alıyoruz. dil modeli referans almak ve daha küçük parçalara bölmek için. Bu parçalar daha sonra gömmeler olarak saklanır; bir Vektör Veritabanındaki metnin vektör temsilleri.
Bu kurulumla, standart bir işlem hattını izleyen dil modeli uygulamaları oluşturabiliriz: bir kullanıcı, daha sonra dil modeline gönderilen bir başlangıç sorusu sorar. Sorunun vektör temsili, Vektör Veritabanında bir benzerlik araması yapmak ve ilgili bilgi parçalarını almak için kullanılır.
Bu parçalar daha sonra dil modeline geri gönderilerek yanıt vermesini veya istenen eylemi gerçekleştirmesini sağlar.
LangChain, bir vektör deposunda kendi verilerimize başvurabildiğimiz için verilere duyarlı ve soruları yanıtlamanın ötesinde eylemler gerçekleştirebildiğimiz için özgün uygulamaların geliştirilmesini kolaylaştırır. T
özellikle kişisel yardımda, büyük bir dil modelinin uçuş rezervasyonu yapmak, para transferi yapmak veya vergiyle ilgili konularda yardımcı olmak gibi görevleri yerine getirebileceği çok sayıda pratik kullanım durumu açar.
Ek olarak, bir dil modeli tüm bir müfredata başvurabileceğinden ve öğrenme sürecini hızlandırabileceğinden, yeni konuları çalışmak ve öğrenmek için çıkarımlar önemlidir. Kodlama, veri analizi ve veri biliminin de bu gelişmelerden büyük ölçüde etkilenmesi bekleniyor.
En heyecan verici olasılıklardan biri, büyük dil modellerini müşteri bilgileri veya pazarlama verileri gibi mevcut şirket verilerine bağlamaktır. Meta'nın API'si veya Google'ın API'si gibi gelişmiş API'lerle bu entegrasyon, veri analitiği ve veri biliminde üstel ilerleme vaat ediyor.
Web Sayfası Nasıl Oluşturulur (Demo)
Şu anda Langchain, Python ve JavaScript Paketleri olarak mevcuttur.
LangChain konseptini uygulamak için Streamlit, LangChain ve OpenAI GPT-3 modelini kullanan bir tanıtım Web Uygulaması oluşturabiliriz.
Ama önce Streamlit, LangChain ve OpenAI dahil olmak üzere birkaç bağımlılık kurmalıyız.
Ön koşul
Akış ışığı: Veri bilimi ile ilgili web uygulamaları oluşturmak için popüler bir Python paketi
Açık AI: OpenAI'nin GPT-3 dil modeline erişim gereklidir.
Bu bağımlılıkları yüklemek için cmd'de aşağıdaki komutları kullanın:
pip install streamlit
pip install langchain
pip install openai
Paketleri İçe Aktar
OpenAI, LangChain ve Streamlit gibi gerekli paketleri içe aktararak başlıyoruz. Dil modeli zincirlerimiz, LangChain'deki üç sınıf kullanılarak tanımlanır ve yürütülür: LLMChain, SimpleSequentialChain ve PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Temel Kurulum
Projemizin yapısal temeli daha sonra Streamlit sözdizimi kullanılarak ortaya kondu. Uygulamaya "Doğru Olan Nedir: Basit Sıralı Zinciri Kullanmak" başlığını verdik ve uygulamaya ilham kaynağı olan GitHub deposuna bir indirim bağlantısı ekledik.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Ön Uç Widget'ları
Basit Streamlit sözdizimini kullanarak uygulamayı birkaç ilgili bilgiyle kurduk:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
Ön uç widget'ları eklemek için
Ayrıca, kullanıcılarımızın herhangi bir soru girmesine izin vermek için bir giriş widget'ı sağlamamız gerekiyor.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
Hepsi tamam! Zincirler çalışıyor!
ile birlikte çeşitli operasyon zincirleri kullanıyoruz. SimpleSequentialChain
kullanıcının sorgusuna yanıt vermek için. Zincirler, kullanıcı tarafından seçildiğinde aşağıdaki sırayla gerçekleştirilir. "Tell me about it"
düğmesi:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: boru hattımızın ilk adımı olan, kullanıcının sorusunu girdi ve çıktı olarak alır. Kullanıcının sorgusu, zincirin şablonu olarak işlev görür.- Soruyla bağlantılı bir ifadeye dayanarak,
assumptions_chain
çıktısını kullanarak bir varsayımlar listesi oluşturur.question_chain
girdi olarak. buLLMChain
veOpenAI
ifadeyi oluşturmak için LangChain'den bir model kullanıldı. Kullanıcı, bu zincir için şablonu kullanarak ifadeyi üretmek için yapılan varsayımların bir listesini oluşturmakla görevlendirilir. - Çıktılardan yola çıkarak,
question_chain
veassumptions_chain
,fact_checker_chain
madde işaretleri şeklinde bir iddia listesi oluşturur. Talepler kullanılarak üretilirOpenAI
model veLLMChain
LangChain'den. Kullanıcı, her bir iddianın doğru veya yanlış olup olmadığını belirlemek ve doğru olanlar için gerekçe sağlamakla görevlidir. - The
answer_chain
gelen çıktıları kullanır.question_chain
,assumptions_chain
, vefact_checker_chain
önceki zincirler tarafından üretilen verileri kullanarak kullanıcının sorusuna bir yanıt oluşturmak için girdiler olarak. Bu zincirin şablonu, kullanıcının ilk sorguya oluşturulan olguları kullanarak yanıt vermesini ister. - Önceki zincirler tarafından üretilen bilgilere dayalı olarak kullanıcının sorgusuna nihai yanıtı sağlamak için bu zincirleri genel zincire entegre ediyoruz. Zincirler tamamlandıktan sonra kullanıyoruz
st.success()
kullanıcıya çözümü göstermek için.
Sonuç
Kullanarak daha karmaşık işlem hatları oluşturmak için farklı dil modeli eylemlerini kolayca zincirleyebiliriz. SimpleSequentialChain
LangChain modülü. Sohbet botları, soru-cevap sistemleri ve dil çeviri araçları dahil olmak üzere çok çeşitli NLP uygulamaları için bu oldukça yardımcı olabilir.
LangChain'in parlaklığı, kullanıcının dil modellemenin ayrıntıları yerine mevcut konuya konsantre olmasını sağlayan soyutlama kapasitesinde bulunur.
LangChain, önceden eğitilmiş modeller ve çeşitli şablonlar sunarak gelişmiş dil modelleri oluşturma sürecini daha kullanıcı dostu hale getirir.
Size kendi verilerini kullanarak dil modellerinde ince ayar yapma seçeneği sunarak dil modellerini özelleştirmeyi kolaylaştırır. Bu, belirli bir iş için eğitilmiş modellerden daha iyi performans gösteren daha kesin, alana özgü modellerin geliştirilmesini sağlar.
The SimpleSequentialChain
LangChain'in modülü ve diğer özellikleri, onu karmaşık NLP sistemlerini hızlı bir şekilde geliştirmek ve dağıtmak için etkili bir araç haline getirir.
Yorum bırak