Belgelerden ve verilerden içgörü elde etmek, bilinçli kararlar vermede çok önemlidir. Ancak hassas bilgilerle uğraşırken gizlilik endişeleri ortaya çıkar. LangChain, OpenAI API ile birlikte yerel belgelerinizi çevrimiçi yüklemeye gerek kalmadan analiz etmenize olanak tanır.
Bunu, verilerinizi yerel olarak tutarak, analiz için yerleştirmeleri ve vektörleştirmeyi kullanarak ve süreçleri ortamınızda yürüterek başarırlar. OpenAI, müşterilerin API'leri aracılığıyla gönderdiği verileri, modellerini eğitmek veya hizmetlerini geliştirmek için kullanmaz.
Ortamınızı Kurma
Yeni bir Python sanal ortamı oluşturun. Bu, kitaplık sürümü çakışması olmamasını sağlayacaktır. Daha sonra gerekli kütüphaneleri kurmak için aşağıdaki terminal komutunu çalıştırın.
pip install langchain openai tiktoken faiss-cpu pypdf Her kütüphaneyi nasıl kullanacağınıza dair bir dökümü burada bulabilirsiniz:
- LangChain: Metin işleme ve analiz için dil zincirleri oluşturmak ve yönetmek için kullanacaksınız. Belge yükleme, metin bölme, yerleştirme ve vektör depolama için modüller sağlayacaktır.
- OpenAI: Sorguları çalıştırmak ve bir dil modelinden sonuçlar elde etmek için kullanacaksınız.
- tiktok: Belirli bir metindeki belirteçlerin (metin birimleri) sayısını saymak için kullanacaksınız. Bunun amacı, kullandığınız jeton sayısına göre ücretlendirme yapan OpenAI API ile etkileşimde bulunurken jeton sayısını takip etmektir.
- FAISS: Bunu, benzer vektörlerin yerleştirmelerine göre hızlı bir şekilde alınmasına olanak tanıyan bir vektör deposu oluşturmak ve yönetmek için kullanacaksınız.
- PyPDF: Bu kitaplık PDF'lerden metin çıkarır. PDF dosyalarının yüklenmesine yardımcı olur ve daha sonraki işlemler için metinlerini çıkarır.
Tüm kütüphaneler kurulduktan sonra artık ortamınız hazır.
OpenAI API Anahtarı Alma
OpenAI API'sine istekte bulunduğunuzda isteğin bir parçası olarak bir API anahtarı eklemeniz gerekir. Bu anahtar, API sağlayıcısının, isteklerin meşru bir kaynaktan geldiğini ve özelliklerine erişmek için gerekli izinlere sahip olduğunuzu doğrulamasını sağlar.
OpenAI API anahtarı edinmek için şuraya ilerleyin:OpenAI platformu.
Ardından, hesabınızın profilinin sağ üst kısmındaki simgesine tıklayın.API anahtarlarını görüntüle.API anahtarlarısayfa görünecektir.
Tıklayın theYeni sır oluştur anahtardüğme. Anahtarınızı adlandırın ve tıklayınYeni gizli anahtar oluştur. OpenAI, kopyalayıp güvenli bir yerde saklamanız gereken API anahtarınızı oluşturacaktır. Güvenlik nedeniyle onu OpenAI hesabınız aracılığıyla tekrar görüntüleyemeyeceksiniz. Bu gizli anahtarı kaybederseniz yeni bir tane oluşturmanız gerekecektir.
Kaynak kodunun tamamı şu adreste mevcuttur:GitHub deposu.
Gerekli Kitaplıkları İçe Aktarma
Sanal ortamınızda kurulu kütüphaneleri kullanabilmeniz için onları içe aktarmanız gerekmektedir.
from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI Bağımlılık kitaplıklarını LangChain'den içe aktardığınıza dikkat edin. Bu, LangChain çerçevesinin belirli özelliklerini kullanmanıza olanak tanır.
Belgeyi Analiz İçin Yükleme
API anahtarınızı tutan bir değişken oluşturarak başlayın. Bu değişkeni daha sonra kimlik doğrulama için kodda kullanacaksınız.
# Hardcoded API key
openai_api_key = "Your API key"
Kodunuzu üçüncü taraflarla paylaşmayı planlıyorsanız API anahtarınızı sabit kodlamanız önerilmez. Dağıtmayı hedeflediğiniz üretim kodu için bunun yerine bir ortam değişkeni kullanın.
Ardından, belgeyi yükleyen bir işlev oluşturun. İşlev bir PDF veya metin dosyası yüklemelidir. Belge ikisi de değilse, işlev birDeğer Hatası.
def load_document(filename):
if filename.endswith(".pdf"):
loader = PyPDFLoader(filename)
documents = loader.load()
elif filename.endswith(".txt"):
loader = TextLoader(filename)
documents = loader.load()
else:
raise ValueError("Invalid file type") Belgeleri yükledikten sonra birKarakterMetin Bölücü. Bu ayırıcı, yüklenen belgeleri karakterlere göre daha küçük parçalara böler.
text_splitter = CharacterTextSplitter(chunk_size=1000,
chunk_overlap=30, separator="n") return text_splitter.split_documents(documents=documents)
Belgeyi bölmek, parçaların yönetilebilir bir boyutta olmasını ve yine de bazı örtüşen bağlamlarla bağlantılı olmasını sağlar. Bu, metin analizi ve bilgi alma gibi görevler için kullanışlıdır.
Belgeyi Sorgulama
Yüklenen belgeden içgörü elde etmek için onu sorgulamanın bir yoluna ihtiyacınız var. Bunu yapmak için, bir işlev gerektiren bir işlev oluşturun.sorgudize ve birav köpeğigiriş olarak. Daha sonra bir oluştururGeri AlmaQAörneğini kullanarakav köpeğive OpenAI dil modelinin bir örneği.
def query_pdf(query, retriever):
qa = RetrievalQA.from_chain_type(llm=OpenAI(openai_api_key=openai_api_key),
chain_type="stuff", retriever=retriever)
result = qa.run(query)
print(result)
Bu işlev, sorguyu çalıştırmak ve sonucu yazdırmak için oluşturulan QA örneğini kullanır.
Ana Fonksiyonun Oluşturulması
Ana fonksiyon genel program akışını kontrol edecektir. Bir belge dosya adı için kullanıcı girişi alacak ve bu belgeyi yükleyecektir. Daha sonra bir tane oluşturunOpenAIE Yerleştirmelerigömmeler için örnek ve bir yapı oluşturmakvektör mağazasıyüklenen belgelere dayanarak vegömmeler. Bu vektör deposunu yerel bir dosyaya kaydedin.
Daha sonra kalıcı vektör deposunu yerel dosyadan yükleyin. Daha sonra kullanıcının sorgu girebileceği bir döngü girin.anaişlev bu sorgularısorgu_pdfkalıcı vektör deposunun alıcısıyla birlikte çalışır. Kullanıcı “çıkış”a girene kadar döngü devam edecektir.
def main():
filename = input("Enter the name of the document (.pdf or .txt):n")
docs = load_document(filename)
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
vectorstore = FAISS.from_documents(docs, embeddings)
vectorstore.save_local("faiss_index_constitution")
persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings)
query = input("Type in your query (type 'exit' to quit):n") while query != "exit":
query_pdf(query, persisted_vectorstore.as_retriever())
query = input("Type in your query (type 'exit' to quit):n")
Gömmeler kelimeler arasındaki anlamsal ilişkileri yakalar. Vektörler, metin parçalarını temsil edebileceğiniz bir formdur.
Bu kod, belgedeki metin verilerini, tarafından oluşturulan yerleştirmeleri kullanarak vektörlere dönüştürür.OpenAIE Yerleştirmeleri. Daha sonra bu vektörleri kullanarak indeksler.FAISS, benzer vektörlerin verimli bir şekilde alınması ve karşılaştırılması için. Yüklenen belgenin analizine olanak sağlayan şey budur.
Son olarak, kullanıcı programı bağımsız olarak çalıştırıyorsa ana işlevi çağırmak için __name__ == “__main__” yapısını kullanın:
if __name__ == "__main__":
main() Bu uygulama bir komut satırı uygulamasıdır. Uzantı olarak, uygulamaya bir web arayüzü eklemek için Streamlit'i kullanabilirsiniz.
Doküman Analizi Gerçekleştirme
Doküman analizi gerçekleştirmek için analiz etmek istediğiniz dokümanı projenizle aynı klasörde saklayın ve ardından programı çalıştırın. Analiz etmek istediğiniz belgenin adını soracaktır. Tam adını girin, ardından analiz edilecek programa ilişkin sorguları girin.
Aşağıdaki ekran görüntüsü bir PDF'yi analiz etmenin sonuçlarını göstermektedir.
Aşağıdaki çıktı, kaynak kodunu içeren bir metin dosyasının analiz edilmesinin sonuçlarını gösterir.
Analiz etmek istediğiniz dosyaların PDF veya metin biçiminde olduğundan emin olun. Belgeleriniz başka formatlardaysa çevrimiçi araçları kullanarak PDF formatına dönüştürebilirsiniz.
Büyük Dil Modellerinin Arkasındaki Teknolojiyi Anlamak
LangChain, büyük dil modellerini kullanarak uygulamaların oluşturulmasını basitleştirir. Bu aynı zamanda perde arkasında olup bitenleri soyutladığı anlamına da gelir. Oluşturduğunuz uygulamanın tam olarak nasıl çalıştığını anlamak için büyük dil modellerinin arkasındaki teknolojiye aşina olmalısınız.

![[YENİ] PGSharp'ın Çalışmaması Nasıl Düzeltilir](https://elsefix.com/statics/image/placeholder.png)









