A dokumentumokból és adatokból való betekintés döntő fontosságú a megalapozott döntések meghozatalában. Az érzékeny információk kezelésekor azonban felmerülnek az adatvédelmi aggályok. A LangChain az OpenAI API-val kombinálva lehetővé teszi a helyi dokumentumok elemzését anélkül, hogy azokat online kellene feltöltenie.
Ezt úgy érik el, hogy helyben tartják az adatokat, beágyazásokat és vektorizálást használnak az elemzéshez, és folyamatokat hajtanak végre a környezetben. Az OpenAI nem használja fel az ügyfelek által az API-jukon keresztül benyújtott adatokat modelljeik betanítására vagy szolgáltatásaik fejlesztésére.
Környezetének beállítása
Hozzon létre egy új Python virtuális környezetet. Ez biztosítja, hogy ne legyenek könyvtárverziós ütközések. Ezután futtassa a következő terminálparancsot a szükséges könyvtárak telepítéséhez.
pip install langchain openai tiktoken faiss-cpu pypdf Íme egy részlet az egyes könyvtárak használatáról:
- LangChain: Szövegfeldolgozáshoz és -elemzéshez szükséges nyelvi láncok létrehozására és kezelésére fogja használni. Modulokat fog biztosítani a dokumentumok betöltéséhez, szövegfelosztáshoz, beágyazáshoz és vektortároláshoz.
- OpenAI: Lekérdezések futtatására és nyelvi modellből származó eredmények lekérésére fogja használni.
- a tiktok: Az adott szövegben lévő tokenek (szövegegységek) számának megszámlálására fogja használni. Ez a tokenek számának nyomon követésére szolgál az OpenAI API-val való interakció során, amely a használt tokenek száma alapján számít fel.
- FAISS: Vektortár létrehozására és kezelésére fogja használni, amely lehetővé teszi a hasonló vektorok gyors visszakeresését a beágyazásuk alapján.
- PyPDF: Ez a könyvtár szöveget von ki PDF-ekből. Segít betölteni a PDF-fájlokat, és kivonja a szövegüket további feldolgozás céljából.
Az összes könyvtár telepítése után a környezet készen áll.
OpenAI API-kulcs beszerzése
Amikor kérelmeket küld az OpenAI API-hoz, egy API-kulcsot kell tartalmaznia a kérelem részeként. Ez a kulcs lehetővé teszi az API-szolgáltató számára annak ellenőrzését, hogy a kérések legitim forrásból származnak-e, és hogy Ön rendelkezik-e a funkcióihoz való hozzáféréshez szükséges engedélyekkel.
OpenAI API-kulcs beszerzéséhez folytassa a következővel:OpenAI platform.
Ezután a fiók profilja alatt a jobb felső sarokban kattintson a gombraAPI-kulcsok megtekintése. AAPI kulcsokoldal fog megjelenni.
Kattintson rá aHozzon létre új titkot kulcsfontosságúgomb. Nevezze el a kulcsot, és kattintson ráHozzon létre új titkos kulcsot. Az OpenAI előállítja az API-kulcsot, amelyet másoljon és tartson biztonságos helyen. Biztonsági okokból nem tekintheti meg újra OpenAI-fiókján keresztül. Ha elveszíti ezt a titkos kulcsot, létre kell hoznia egy újat.
A teljes forráskód elérhető aGitHub adattár.
A szükséges könyvtárak importálása
A virtuális környezetben telepített könyvtárak használatához importálnia kell azokat.
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 Figyelje meg, hogy a függőségi könyvtárakat a LangChainből importálja. Ez lehetővé teszi a LangChain keretrendszer speciális funkcióinak használatát.
A dokumentum betöltése elemzés céljából
Kezdje egy olyan változó létrehozásával, amely tartalmazza az API-kulcsot. Ezt a változót később a kódban fogja használni a hitelesítéshez.
# Hardcoded API key
openai_api_key = "Your API key"
Ha azt tervezi, hogy megosztja a kódot harmadik felekkel, nem javasolt az API-kulcs kemény kódolása. A terjeszteni kívánt éles kódhoz használjon helyette egy környezeti változót.
Ezután hozzon létre egy függvényt, amely betölt egy dokumentumot. A függvénynek PDF vagy szöveges fájlt kell betöltenie. Ha a dokumentum egyik sem, a függvénynek emelnie kell aValueError.
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") A dokumentumok betöltése után hozzon létre aCharacterTextSplitter. Ez az elosztó a betöltött dokumentumokat karakterek alapján kisebb darabokra osztja.
text_splitter = CharacterTextSplitter(chunk_size=1000,
chunk_overlap=30, separator="n") return text_splitter.split_documents(documents=documents)
A dokumentum felosztása biztosítja, hogy a darabok kezelhető méretűek legyenek, és továbbra is kapcsolódjanak bizonyos átfedő kontextushoz. Ez olyan feladatoknál hasznos, mint a szövegelemzés és az információkeresés.
A dokumentum lekérdezése
Szüksége van egy módra a feltöltött dokumentum lekérdezésére, hogy betekintést nyerjen belőle. Ehhez hozzon létre egy függvényt, amely alekérdezéshúr és avizslabemenetként. Ezután létrehozza aRetrievalQApéldául avizslaés az OpenAI nyelvi modell egy példánya.
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)
Ez a függvény a létrehozott minőségbiztosítási példányt használja a lekérdezés futtatására és az eredmény kinyomtatására.
A fő funkció létrehozása
A fő funkció szabályozza a teljes programfolyamatot. A felhasználó beírja a dokumentum fájlnevét, és betölti a dokumentumot. Ezután hozzon létre egyOpenAIEembeddingspélda a beágyazásokhoz és a konstrukcióhoz avektor bolta betöltött dokumentumok alapján ésbeágyazások. Mentse ezt a vektortárat egy helyi fájlba.
Ezután töltse be a megmaradt vektortárolót a helyi fájlból. Ezután írjon be egy ciklust, ahol a felhasználó lekérdezéseket írhat be. Afő-függvény továbbítja ezeket a lekérdezéseket aquery_pdffüggvényt a megmaradt vektortároló retrieverével együtt. A hurok addig folytatódik, amíg a felhasználó be nem lép az „exit”-be.
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")
A beágyazások a szavak közötti szemantikai kapcsolatokat rögzítik. A vektorok olyan formák, amelyekben szövegrészeket ábrázolhat.
Ez a kód a dokumentumban lévő szöveges adatokat vektorokká alakítja át a által generált beágyazások segítségévelOpenAIEembeddings. Ezután indexeli ezeket a vektorokat a segítségévelFAISS, hasonló vektorok hatékony visszakereséséhez és összehasonlításához. Ez teszi lehetővé a feltöltött dokumentum elemzését.
Végül használja a __name__ == “__main__” konstrukciót a fő függvény meghívásához, ha a felhasználó önállóan futtatja a programot:
if __name__ == "__main__":
main() Ez az alkalmazás egy parancssori alkalmazás. Kiterjesztésként a Streamlit segítségével webes felületet adhat hozzá az alkalmazáshoz.
Dokumentumelemzés végrehajtása
A dokumentumelemzés végrehajtásához tárolja az elemezni kívánt dokumentumot a projekttel azonos mappában, majd futtassa a programot. Kérni fogja az elemezni kívánt dokumentum nevét. Írja be a teljes nevét, majd írja be a lekérdezéseket a program elemzéséhez.
Az alábbi képernyőkép a PDF elemzésének eredményeit mutatja.
A következő kimenet egy forráskódot tartalmazó szövegfájl elemzésének eredményeit mutatja be.
Győződjön meg arról, hogy az elemezni kívánt fájlok PDF vagy szöveges formátumban vannak. Ha dokumentumai más formátumúak, online eszközök segítségével PDF formátumba konvertálhatja őket.
A nagy nyelvi modellek mögött rejlő technológia megértése
A LangChain leegyszerűsíti a nagy nyelvi modelleket használó alkalmazások létrehozását. Ez azt is jelenti, hogy elvonatkoztatja a színfalak mögött zajló eseményeket. A létrehozott alkalmazás működésének pontos megértéséhez meg kell ismerkednie a nagy nyelvi modellek mögött rejlő technológiával.

![5 egyszerű módszer a vivo hardver visszaállításához jelszóval vagy jelszó nélkül [Új]](https://elsefix.com/statics/image/placeholder.png)









