mayankchugh-learning commited on
Commit
998915d
·
verified ·
1 Parent(s): 2b28caa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -6
app.py CHANGED
@@ -1,4 +1,6 @@
1
  import os
 
 
2
 
3
  import gradio as gr
4
 
@@ -7,7 +9,14 @@ from openai import OpenAI
7
  from langchain_community.embeddings.sentence_transformer import SentenceTransformerEmbeddings
8
  from langchain_community.vectorstores import Chroma
9
 
10
- client = OpenAI(api_key=os.environ['OPENAI_API_KEY'])
 
 
 
 
 
 
 
11
 
12
  embedding_model = SentenceTransformerEmbeddings(model_name='thenlper/gte-small')
13
 
@@ -24,6 +33,19 @@ retriever = vectorstore_persisted.as_retriever(
24
  search_kwargs={'k': 5}
25
  )
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  qna_system_message = """
28
  You are an assistant to a financial services firm who answers user queries on annual reports.
29
  Users will ask questions delimited by triple backticks, that is, ```.
@@ -43,9 +65,10 @@ Here are some documents that are relevant to the question.
43
  ```
44
  """
45
 
 
46
  def predict(user_input):
47
 
48
- relevant_document_chunks = retriever.get_relevant_documents(user_input)
49
  context_list = [d.page_content for d in relevant_document_chunks]
50
  context_for_query = ".".join(context_list)
51
 
@@ -60,7 +83,7 @@ def predict(user_input):
60
 
61
  try:
62
  response = client.chat.completions.create(
63
- model="gpt-3.5-turbo",
64
  messages=prompt,
65
  temperature=0
66
  )
@@ -69,12 +92,28 @@ def predict(user_input):
69
 
70
  except Exception as e:
71
  prediction = e
72
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  return prediction
74
 
75
 
76
  textbox = gr.Textbox(placeholder="Enter your query here", lines=6)
77
 
 
78
  demo = gr.Interface(
79
  inputs=textbox, fn=predict, outputs="text",
80
  title="AMA on Tesla 10-K statements",
@@ -83,11 +122,11 @@ demo = gr.Interface(
83
  examples=[["What was the total revenue of the company in 2022?", "$ 81.46 Billion"],
84
  ["Summarize the Management Discussion and Analysis section of the 2021 report in 50 words.", ""],
85
  ["What was the company's debt level in 2020?", ""],
86
- ["Identify 5 key risks identified in the 2019 10k report? Respond with bullet point summaries.", ""]
 
87
  ],
88
  concurrency_limit=16
89
  )
90
 
91
-
92
  demo.queue()
93
  demo.launch(auth=("demouser", os.getenv('PASSWD')))
 
1
  import os
2
+ import uuid
3
+ import json
4
 
5
  import gradio as gr
6
 
 
9
  from langchain_community.embeddings.sentence_transformer import SentenceTransformerEmbeddings
10
  from langchain_community.vectorstores import Chroma
11
 
12
+ from huggingface_hub import CommitScheduler
13
+ from pathlib import Path
14
+
15
+
16
+ client = OpenAI(
17
+ base_url="https://api.endpoints.anyscale.com/v1",
18
+ api_key=os.environ['ANYSCALE_API_KEY']
19
+ )
20
 
21
  embedding_model = SentenceTransformerEmbeddings(model_name='thenlper/gte-small')
22
 
 
33
  search_kwargs={'k': 5}
34
  )
35
 
36
+ # Prepare the logging functionality
37
+
38
+ log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
39
+ log_folder = log_file.parent
40
+
41
+ scheduler = CommitScheduler(
42
+ repo_id="document-qna-chroma-anyscale-logs",
43
+ repo_type="dataset",
44
+ folder_path=log_folder,
45
+ path_in_repo="data",
46
+ every=2
47
+ )
48
+
49
  qna_system_message = """
50
  You are an assistant to a financial services firm who answers user queries on annual reports.
51
  Users will ask questions delimited by triple backticks, that is, ```.
 
65
  ```
66
  """
67
 
68
+ # Define the predict function that runs when 'Submit' is clicked or when a API request is made
69
  def predict(user_input):
70
 
71
+ relevant_document_chunks = retriever.invoke(user_input)
72
  context_list = [d.page_content for d in relevant_document_chunks]
73
  context_for_query = ".".join(context_list)
74
 
 
83
 
84
  try:
85
  response = client.chat.completions.create(
86
+ model='mlabonne/NeuralHermes-2.5-Mistral-7B',
87
  messages=prompt,
88
  temperature=0
89
  )
 
92
 
93
  except Exception as e:
94
  prediction = e
95
+
96
+ # While the prediction is made, log both the inputs and outputs to a local log file
97
+ # While writing to the log file, ensure that the commit scheduler is locked to avoid parallel
98
+ # access
99
+
100
+ with scheduler.lock:
101
+ with log_file.open("a") as f:
102
+ f.write(json.dumps(
103
+ {
104
+ 'user_input': user_input,
105
+ 'retrieved_context': context_for_query,
106
+ 'model_response': prediction
107
+ }
108
+ ))
109
+ f.write("\n")
110
+
111
  return prediction
112
 
113
 
114
  textbox = gr.Textbox(placeholder="Enter your query here", lines=6)
115
 
116
+ # Create the interface
117
  demo = gr.Interface(
118
  inputs=textbox, fn=predict, outputs="text",
119
  title="AMA on Tesla 10-K statements",
 
122
  examples=[["What was the total revenue of the company in 2022?", "$ 81.46 Billion"],
123
  ["Summarize the Management Discussion and Analysis section of the 2021 report in 50 words.", ""],
124
  ["What was the company's debt level in 2020?", ""],
125
+ ["Identify 5 key risks identified in the 2019 10k report? Respond with bullet point summaries.", ""],
126
+ ["What is the view of the management on the future of electric vehicle batteries?",""]
127
  ],
128
  concurrency_limit=16
129
  )
130
 
 
131
  demo.queue()
132
  demo.launch(auth=("demouser", os.getenv('PASSWD')))