Spaces:
Sleeping
Sleeping
Delete app.py
Browse files
app.py
DELETED
@@ -1,69 +0,0 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
from huggingface_hub import InferenceClient
|
3 |
-
from langchain.document_loaders import TextLoader
|
4 |
-
from langchain.indexes import VectorstoreIndexCreator
|
5 |
-
from langchain.embeddings import OpenAIEmbeddings
|
6 |
-
from langchain.vectorstores import FAISS
|
7 |
-
from langchain.chains import RetrievalQA
|
8 |
-
|
9 |
-
# Initialisiere den HuggingFace InferenceClient
|
10 |
-
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
11 |
-
|
12 |
-
# Funktion, um die Dokumente zu laden und den Vektorstore zu erstellen
|
13 |
-
def create_vectorstore_from_file(file):
|
14 |
-
loader = TextLoader(file.name)
|
15 |
-
documents = loader.load()
|
16 |
-
|
17 |
-
# Erstelle den Vektorstore mit FAISS und OpenAI Embeddings
|
18 |
-
embeddings = OpenAIEmbeddings()
|
19 |
-
index_creator = VectorstoreIndexCreator(vectorstore_cls=FAISS)
|
20 |
-
index = index_creator.from_documents(documents, embeddings)
|
21 |
-
|
22 |
-
# Rückgabe des erstellten Index
|
23 |
-
return index
|
24 |
-
|
25 |
-
# Funktion, um basierend auf einem geladenen Dokument und einer Frage zu antworten
|
26 |
-
def respond_with_document(message, history, system_message, max_tokens, temperature, top_p, file):
|
27 |
-
# Lade das Dokument und erstelle den Vektorstore
|
28 |
-
index = create_vectorstore_from_file(file)
|
29 |
-
|
30 |
-
# Hole den Retriever aus dem Index
|
31 |
-
retriever = index.as_retriever()
|
32 |
-
|
33 |
-
# Definiere die QA-Kette mit dem Retriever
|
34 |
-
qa_chain = RetrievalQA.from_chain_type(
|
35 |
-
llm=client,
|
36 |
-
chain_type="stuff",
|
37 |
-
retriever=retriever,
|
38 |
-
verbose=True
|
39 |
-
)
|
40 |
-
|
41 |
-
# Erstelle eine Liste von Nachrichten für den Kontext
|
42 |
-
messages = [{"role": "system", "content": system_message}]
|
43 |
-
for val in history:
|
44 |
-
if val[0]:
|
45 |
-
messages.append({"role": "user", "content": val[0]})
|
46 |
-
if val[1]:
|
47 |
-
messages.append({"role": "assistant", "content": val[1]})
|
48 |
-
|
49 |
-
# Sende die Frage und bekomme die Antwort
|
50 |
-
response = qa_chain.run(message)
|
51 |
-
|
52 |
-
return response
|
53 |
-
|
54 |
-
# Gradio-Interface
|
55 |
-
demo = gr.Interface(
|
56 |
-
fn=respond_with_document,
|
57 |
-
inputs=[
|
58 |
-
gr.Textbox(label="User Message", placeholder="Ask a question"),
|
59 |
-
gr.File(label="Upload Document", type="file"), # Ermöglicht das Hochladen eines Dokuments
|
60 |
-
gr.Textbox(value="You are a helpful assistant.", label="System Message"),
|
61 |
-
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens"),
|
62 |
-
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
|
63 |
-
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
|
64 |
-
],
|
65 |
-
outputs=gr.Textbox(label="Bot Response")
|
66 |
-
)
|
67 |
-
|
68 |
-
if __name__ == "__main__":
|
69 |
-
demo.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|