Shreyas094 commited on
Commit
0687d58
·
verified ·
1 Parent(s): ea8692a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -36,7 +36,7 @@ def create_web_search_vectors(search_results):
36
  documents.append(Document(page_content=content, metadata={"source": result['href']}))
37
  return FAISS.from_documents(documents, embed)
38
 
39
- async def get_response_with_search(query, model, use_embeddings, num_calls=3, temperature=0.2):
40
  search_results = duckduckgo_search(query)
41
 
42
  if not search_results:
@@ -51,14 +51,20 @@ async def get_response_with_search(query, model, use_embeddings, num_calls=3, te
51
  else:
52
  context = "\n".join([f"{result['title']}\n{result['body']}\nSource: {result['href']}" for result in search_results])
53
 
54
- system_message = """ You are a world-class AI system, capable of complex reasoning and reflection.
55
  Reason through the query inside <thinking> tags, and then provide your final response inside <output> tags.
56
  Providing comprehensive and accurate information based on web search results is essential.
57
  Your goal is to synthesize the given context into a coherent and detailed response that directly addresses the user's query.
58
  Please ensure that your response is well-structured, factual, and cites sources where appropriate.
59
- If you detect that you made a mistake in your reasoning at any point, correct yourself inside <reflection> tags."""
 
60
 
61
- user_message = f"""Using the following context from web search results:
 
 
 
 
 
62
  {context}
63
 
64
  Write a detailed and complete research document that fulfills the following user request: '{query}'
@@ -104,8 +110,11 @@ async def respond(message, history, model, temperature, num_calls, use_embedding
104
  logging.info(f"Number of API Calls: {num_calls}")
105
  logging.info(f"Use Embeddings: {use_embeddings}")
106
 
 
 
 
107
  try:
108
- async for main_content, sources in get_response_with_search(message, model, use_embeddings, num_calls=num_calls, temperature=temperature):
109
  response = f"{main_content}\n\n{sources}"
110
  yield response
111
  except asyncio.CancelledError:
@@ -138,8 +147,8 @@ def create_gradio_interface():
138
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
139
  gr.Checkbox(label="Use Embeddings", value=False),
140
  ],
141
- title="AI-powered Web Search Assistant",
142
- description="Use web search to answer questions or generate summaries.",
143
  theme=gr.Theme.from_hub("allenai/gradio-theme"),
144
  css=css,
145
  examples=[
@@ -168,6 +177,7 @@ def create_gradio_interface():
168
  5. Check or uncheck the "Use Embeddings" box to toggle between using embeddings or direct text summarization.
169
  6. Press Enter or click the submit button to get your answer.
170
  7. Use the provided examples or ask your own questions.
 
171
  """)
172
 
173
  return demo
 
36
  documents.append(Document(page_content=content, metadata={"source": result['href']}))
37
  return FAISS.from_documents(documents, embed)
38
 
39
+ async def get_response_with_search(query, model, use_embeddings, conversation_history, num_calls=3, temperature=0.2):
40
  search_results = duckduckgo_search(query)
41
 
42
  if not search_results:
 
51
  else:
52
  context = "\n".join([f"{result['title']}\n{result['body']}\nSource: {result['href']}" for result in search_results])
53
 
54
+ system_message = """You are a world-class AI system, capable of complex reasoning and reflection.
55
  Reason through the query inside <thinking> tags, and then provide your final response inside <output> tags.
56
  Providing comprehensive and accurate information based on web search results is essential.
57
  Your goal is to synthesize the given context into a coherent and detailed response that directly addresses the user's query.
58
  Please ensure that your response is well-structured, factual, and cites sources where appropriate.
59
+ If you detect that you made a mistake in your reasoning at any point, correct yourself inside <reflection> tags.
60
+ Consider the conversation history when formulating your response to maintain context and coherence."""
61
 
62
+ conversation_context = "\n".join([f"Human: {msg['human']}\nAI: {msg['ai']}" for msg in conversation_history])
63
+
64
+ user_message = f"""Conversation history:
65
+ {conversation_context}
66
+
67
+ Using the following context from web search results:
68
  {context}
69
 
70
  Write a detailed and complete research document that fulfills the following user request: '{query}'
 
110
  logging.info(f"Number of API Calls: {num_calls}")
111
  logging.info(f"Use Embeddings: {use_embeddings}")
112
 
113
+ # Convert Gradio history to a list of dictionaries
114
+ conversation_history = [{"human": h, "ai": a} for h, a in history]
115
+
116
  try:
117
+ async for main_content, sources in get_response_with_search(message, model, use_embeddings, conversation_history, num_calls=num_calls, temperature=temperature):
118
  response = f"{main_content}\n\n{sources}"
119
  yield response
120
  except asyncio.CancelledError:
 
147
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
148
  gr.Checkbox(label="Use Embeddings", value=False),
149
  ],
150
+ title="AI-powered Conversational Web Search Assistant",
151
+ description="Use web search to answer questions or generate summaries. The assistant remembers previous interactions.",
152
  theme=gr.Theme.from_hub("allenai/gradio-theme"),
153
  css=css,
154
  examples=[
 
177
  5. Check or uncheck the "Use Embeddings" box to toggle between using embeddings or direct text summarization.
178
  6. Press Enter or click the submit button to get your answer.
179
  7. Use the provided examples or ask your own questions.
180
+ 8. The assistant will remember previous interactions and maintain context throughout the conversation.
181
  """)
182
 
183
  return demo