Získávání poznatků z dokumentů a dat je zásadní pro přijímání informovaných rozhodnutí. Při práci s citlivými informacemi však vznikají obavy o soukromí. LangChain v kombinaci s OpenAI API vám umožňuje analyzovat vaše místní dokumenty, aniž byste je museli nahrávat online.
Dosahují toho udržováním vašich dat lokálně, pomocí vkládání a vektorizace pro analýzu a prováděním procesů ve vašem prostředí. OpenAI nepoužívá data odeslaná zákazníky prostřednictvím jejich API k trénování jejich modelů nebo zlepšování jejich služeb.
Nastavení vašeho prostředí
Vytvořte nové virtuální prostředí Pythonu. Tím zajistíte, že nedojde ke konfliktům verzí knihovny. Poté spusťte následující příkaz terminálu a nainstalujte požadované knihovny.
pip install langchain openai tiktoken faiss-cpu pypdf Zde je rozpis toho, jak budete jednotlivé knihovny používat:
- LangChain: Budete jej používat pro vytváření a správu lingvistických řetězců pro zpracování a analýzu textu. Poskytne moduly pro načítání dokumentů, dělení textu, vkládání a ukládání vektorů.
- OpenAI: Budete jej používat pro spouštění dotazů a získávání výsledků z jazykového modelu.
- tiktok: Budete jej používat k počítání počtu tokenů (jednotek textu) v daném textu. Toto slouží ke sledování počtu tokenů při interakci s OpenAI API, které se účtuje na základě počtu tokenů, které používáte.
- FAISS: Budete jej používat k vytváření a správě úložiště vektorů, což umožňuje rychlé vyhledávání podobných vektorů na základě jejich vložení.
- PyPDF: Tato knihovna extrahuje text z PDF. Pomáhá načítat soubory PDF a extrahuje jejich text pro další zpracování.
Po instalaci všech knihoven je nyní vaše prostředí připraveno.
Získání klíče OpenAI API
Když odesíláte požadavky na OpenAI API, musíte jako součást požadavku zahrnout klíč API. Tento klíč umožňuje poskytovateli API ověřit, že požadavky pocházejí z legitimního zdroje a že máte potřebná oprávnění pro přístup k jeho funkcím.
Chcete-li získat klíč API OpenAI, přejděte na stránkuPlatforma OpenAI.
Poté pod profilem vašeho účtu vpravo nahoře klikněte naZobrazit klíče API. TheAPI klíčezobrazí se stránka.
Klikněte na aVytvořte nové tajemství klíčtlačítko. Pojmenujte svůj klíč a klikněte na nějVytvořte nový tajný klíč. OpenAI vygeneruje váš klíč API, který byste měli zkopírovat a uložit někde v bezpečí. Z bezpečnostních důvodů jej nebudete moci znovu zobrazit prostřednictvím svého účtu OpenAI. Pokud tento tajný klíč ztratíte, budete si muset vygenerovat nový.
Úplný zdrojový kód je k dispozici v aúložiště GitHub.
Import požadovaných knihoven
Abyste mohli používat knihovny nainstalované ve vašem virtuálním prostředí, musíte je importovat.
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 Všimněte si, že importujete knihovny závislostí z LangChain. To vám umožňuje používat specifické funkce rámce LangChain.
Načítání dokumentu pro analýzu
Začněte vytvořením proměnné, která obsahuje váš klíč API. Tuto proměnnou použijete později v kódu pro autentizaci.
# Hardcoded API key
openai_api_key = "Your API key"
Pokud plánujete sdílet svůj kód s třetími stranami, nedoporučuje se napevno kódovat váš klíč API. Pro produkční kód, který chcete distribuovat, použijte místo toho proměnnou prostředí.
Dále vytvořte funkci, která načte dokument. Funkce by měla načíst soubor PDF nebo textový soubor. Pokud dokument není ani jeden, funkce by měla vyvolat 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") Po načtení dokumentů vytvořte aCharacterTextSplitter. Tento rozdělovač rozdělí načtené dokumenty na menší části podle znaků.
text_splitter = CharacterTextSplitter(chunk_size=1000,
chunk_overlap=30, separator="n") return text_splitter.split_documents(documents=documents)
Rozdělení dokumentu zajistí, že části budou mít spravovatelnou velikost a budou stále spojeny s určitým překrývajícím se kontextem. To je užitečné pro úkoly, jako je analýza textu a vyhledávání informací.
Dotaz na dokument
Potřebujete způsob, jak se dotazovat na nahraný dokument, abyste z něj získali statistiky. Chcete-li tak učinit, vytvořte funkci, která přebírá adotazřetězec aretrieverjako vstup. Poté vytvoří aRetrievalQAinstance pomocíretrievera instance jazykového modelu OpenAI.
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)
Tato funkce používá vytvořenou instanci QA ke spuštění dotazu a vytištění výsledku.
Vytvoření hlavní funkce
Hlavní funkce bude řídit celkový tok programu. Bude vyžadovat zadání uživatele pro název souboru dokumentu a načte tento dokument. Poté vytvořteOpenAIEmbeddingsnapříklad pro vložení a konstrukci avektorový obchodna základě načtených dokumentů avložení. Uložte toto úložiště vektorů do místního souboru.
Dále načtěte trvalé úložiště vektorů z místního souboru. Poté zadejte smyčku, do které může uživatel zadávat dotazy. Thehlavnífunkce předává tyto dotazy dodotaz_pdffungovat spolu s retrieverem trvalého vektorového úložiště. Smyčka bude pokračovat, dokud uživatel nezadá „exit“.
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")
Vložení zachycuje sémantické vztahy mezi slovy. Vektory jsou formou, ve které můžete reprezentovat části textu.
Tento kód převádí textová data v dokumentu na vektory pomocí vložení generovaných pomocíOpenAIEmbeddings. Tyto vektory pak indexuje pomocíFAISSpro efektivní vyhledávání a porovnání podobných vektorů. To umožňuje analýzu nahraného dokumentu.
Nakonec použijte konstrukci __name__ == „__main__“ k volání hlavní funkce, pokud uživatel spustí program samostatně:
if __name__ == "__main__":
main() Tato aplikace je aplikace příkazového řádku. Jako rozšíření můžete použít Streamlit k přidání webového rozhraní do aplikace.
Provádění analýzy dokumentů
Chcete-li provést analýzu dokumentu, uložte dokument, který chcete analyzovat, do stejné složky jako váš projekt, a poté spusťte program. Zobrazí se dotaz na název dokumentu, který chcete analyzovat. Zadejte jeho celý název a poté zadejte dotazy, které má program analyzovat.
Níže uvedený snímek obrazovky ukazuje výsledky analýzy PDF.
Následující výstup ukazuje výsledky analýzy textového souboru obsahujícího zdrojový kód.
Ujistěte se, že soubory, které chcete analyzovat, jsou buď ve formátu PDF, nebo v textovém formátu. Pokud jsou vaše dokumenty v jiných formátech, můžete je převést do formátu PDF pomocí online nástrojů.
Pochopení technologie velkých jazykových modelů
LangChain zjednodušuje tvorbu aplikací pomocí velkých jazykových modelů. To také znamená, že abstrahuje to, co se děje v zákulisí. Abyste přesně porozuměli tomu, jak aplikace, kterou vytváříte, funguje, měli byste se seznámit s technologií velkých jazykových modelů.


![Jak používat WhatsApp bez telefonního čísla [4 způsoby]](https://elsefix.com/images/5/2024/10/1728030782_use-whatsapp-without-phone-number.jpg)










