Az miktarda kod ve bazı yararlı kitaplıklar ile bu güçlü belge analiz aracını oluşturabilirsiniz.
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.
- tiktoken: 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ı almak için şuraya ilerleyin: OpenAI platformu.
Ardından, sağ üstteki hesabınızın profilinin altında, API anahtarlarını görüntüle. API anahtarları sayfa görünecektir.
Tıkla Yeni sır oluşturanahtar düğme. Anahtarınızı adlandırın ve tıklayın Yeni 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 bir Değer Hatası.
defload_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 bir KarakterMetin 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. sorgu dize ve bir av köpeği giriş olarak. Daha sonra bir oluşturur Geri AlmaQA örneğini kullanarak av köpeği ve OpenAI dil modelinin bir örneği.
defquery_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şturun OpenAIE Yerleştirmeleri gömmeler için örnek ve bir yapı oluşturmak vektör mağazası yüklenen belgelere dayanarak ve gö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. ana işlev bu sorguları sorgu_pdf kalıcı vektör deposunun alıcısıyla birlikte çalışır. Kullanıcı "çıkış" girene kadar döngü devam edecektir.
defmain():
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ın __name__ == "__main__" yapısı Bir kullanıcı programı bağımsız olarak çalıştırırsa ana işlevi çağırmak için:
if __name__ == "__main__":
main()
Bu uygulama bir komut satırı uygulamasıdır. Bir uzantı olarak şunları yapabilirsiniz: uygulamaya bir web arayüzü eklemek için Streamlit'i kullanın.
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 formatlarda ise, çevrimiçi araçları kullanarak bunları PDF formatına dönüştürün.
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.