SimFG commited on
Commit
c35b520
1 Parent(s): d5207b3

First commit

Browse files
Files changed (2) hide show
  1. app.py +95 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Callable, Optional
2
+
3
+ import gradio as gr
4
+ from langchain.embeddings.openai import OpenAIEmbeddings
5
+ from langchain.vectorstores import Zilliz
6
+ from langchain.document_loaders import WebBaseLoader
7
+ from langchain.text_splitter import CharacterTextSplitter
8
+ from langchain.chains import RetrievalQAWithSourcesChain
9
+ from langchain.llms import OpenAI
10
+
11
+ chain: Optional[Callable] = None
12
+
13
+
14
+ def web_loader(url_list, openai_key, zilliz_uri, user, password):
15
+ if not url_list:
16
+ return "please enter url list"
17
+ loader = WebBaseLoader(url_list.split())
18
+ docs = loader.load()
19
+
20
+ text_splitter = CharacterTextSplitter(chunk_size=1024, chunk_overlap=0)
21
+ docs = text_splitter.split_documents(docs)
22
+ embeddings = OpenAIEmbeddings(model="ada", openai_api_key=openai_key)
23
+
24
+ docsearch = Zilliz.from_documents(
25
+ docs,
26
+ embedding=embeddings,
27
+ connection_args={
28
+ "uri": zilliz_uri,
29
+ "user": user,
30
+ "password": password,
31
+ "secure": True,
32
+ },
33
+ )
34
+
35
+ global chain
36
+ chain = RetrievalQAWithSourcesChain.from_chain_type(
37
+ OpenAI(temperature=0, openai_api_key=openai_key),
38
+ chain_type="map_reduce",
39
+ retriever=docsearch.as_retriever(),
40
+ )
41
+ return "success to load data"
42
+
43
+
44
+ def query(question):
45
+ global chain
46
+ # "What is milvus?"
47
+ if not chain:
48
+ return "please load the data first"
49
+ return chain(inputs={"question": question}, return_only_outputs=True).get(
50
+ "answer", "fail to get answer"
51
+ )
52
+
53
+
54
+ if __name__ == "__main__":
55
+ block = gr.Blocks()
56
+ with block as demo:
57
+ gr.Markdown("<h1><center>Langchain And Zilliz Cloud Demo</center></h1>")
58
+ url_list_text = gr.Textbox(
59
+ label="Url list",
60
+ lines=3,
61
+ )
62
+ openai_key_text = gr.Textbox(label="openai api key")
63
+ with gr.Row():
64
+ zilliz_uri_text = gr.Textbox(label="zilliz cloud uri")
65
+ user_text = gr.Textbox(label="user")
66
+ password_text = gr.Textbox(label="password", type="password")
67
+ loader_output = gr.Textbox(label="Load Status")
68
+ loader_btn = gr.Button("WebLoader")
69
+ loader_btn.click(
70
+ fn=web_loader,
71
+ inputs=[
72
+ url_list_text,
73
+ openai_key_text,
74
+ zilliz_uri_text,
75
+ user_text,
76
+ password_text,
77
+ ],
78
+ outputs=loader_output,
79
+ api_name="web_load",
80
+ )
81
+
82
+ question_text = gr.Textbox(
83
+ label="question",
84
+ lines=3,
85
+ )
86
+ query_output = gr.Textbox(label="question answer", lines=3)
87
+ query_btn = gr.Button("Generate")
88
+ query_btn.click(
89
+ fn=query,
90
+ inputs=[question_text],
91
+ outputs=query_output,
92
+ api_name="generate_answer",
93
+ )
94
+
95
+ demo.queue().launch(server_name="0.0.0.0", share=False)
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ pymilvus
2
+ langchain
3
+ openai
4
+ tiktoken
5
+ gradio
6
+ bs4