DrishtiSharma commited on
Commit
5dfac06
·
verified ·
1 Parent(s): 6c49ecf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -10
app.py CHANGED
@@ -2,7 +2,7 @@
2
 
3
  import os
4
  import streamlit as st
5
- from main import *
6
 
7
  # Streamlit app starts here
8
  st.title("Patent Similarity Search App (RAG + GOOGLE PATENTS SEARCH)")
@@ -12,37 +12,39 @@ user_input = st.text_area("Enter Patent Data", "Paste your patent details here..
12
 
13
  # Sidebar for user input
14
  with st.sidebar:
15
- number_of_generated_search_terms = st.number_input("Number of Search Terms to Generate", value=5)
16
- top_k_patterns = st.number_input("Top K Patterns to Search", value=10)
17
  model_name = st.text_input("OpenAI Model Name", "gpt-4-0125-preview")
18
 
19
  # Fetch API keys from environment variables
20
- openai_key = os.getenv("OPENAI_API_KEY")
21
- serpapi_key = os.getenv("SERP_API_KEY")
22
 
23
- # Simplified check for missing keys
24
  if not openai_key:
25
  openai_key = st.sidebar.text_input("Missing: OpenAI API Key (OPENAI_API_KEY)", "")
26
  if not serpapi_key:
27
  serpapi_key = st.sidebar.text_input("Missing: SERP API Key (SERPAPI_KEY)", "")
28
 
29
- # Proceed only if both keys are provided
30
  if not openai_key or not serpapi_key:
31
- st.error("Please provide the missing API keys to proceed.")
32
  else:
33
- st.success("API keys are set. Proceeding with the app!")
34
  # Main content
35
  if st.button("Find Similar Patents"):
36
  try:
 
37
  with st.spinner('Generating search terms...'):
38
  generated_search_terms = generate_search_terms(user_input, number_of_generated_search_terms)
39
  st.success("Search terms generated!")
40
  st.write("Generated search terms: ", generated_search_terms)
41
 
 
42
  with st.spinner('Searching for patents...'):
43
  search_terms_patterns = search_on_google_patents(generated_search_terms)
44
  st.success("Patents search completed!")
45
  st.subheader("Top Patents Found for Search Terms")
 
46
  for search_term, patents in search_terms_patterns.items():
47
  st.write(f"Top {top_k_patterns} patents found for search term: {search_term}")
48
  if len(patents) == 0:
@@ -51,6 +53,7 @@ else:
51
  patent_titles = [patent['patentTitle'] for patent in patents]
52
  st.json(patent_titles[:top_k_patterns])
53
 
 
54
  patents_list = []
55
  with st.spinner('Checking similarities of patents...'):
56
  for search_term, patents in search_terms_patterns.items():
@@ -58,15 +61,19 @@ else:
58
  similarities = check_similarity_of_patents(user_input, patents_list)
59
  st.success("Similarity check completed!")
60
 
 
61
  for patent in similarities['listOfPatents']:
62
  for p in patents_list:
63
  if patent['patentNumber'] == p['patentNumber']:
64
  p['similarityScore'] = patent['similarityScore']
65
  p['patentGoogleUrl'] = f"https://patents.google.com/patent/{p['patentNumber']}"
66
  break
67
- patents_list = list(sorted(patents_list, key=lambda x: x['similarityScore'], reverse=True))
68
 
 
69
  st.subheader("Top Similar Patents")
70
  st.json(patents_list)
 
 
71
  except Exception as e:
72
  st.error(f"An error occurred: {e}")
 
2
 
3
  import os
4
  import streamlit as st
5
+ from main import generate_search_terms, search_on_google_patents, check_similarity_of_patents
6
 
7
  # Streamlit app starts here
8
  st.title("Patent Similarity Search App (RAG + GOOGLE PATENTS SEARCH)")
 
12
 
13
  # Sidebar for user input
14
  with st.sidebar:
15
+ number_of_generated_search_terms = st.number_input("Number of Search Terms to Generate", value=5, min_value=1)
16
+ top_k_patterns = st.number_input("Top K Patterns to Search", value=10, min_value=1)
17
  model_name = st.text_input("OpenAI Model Name", "gpt-4-0125-preview")
18
 
19
  # Fetch API keys from environment variables
20
+ openai_key = os.getenv("OPENAI_API_KEY", "")
21
+ serpapi_key = os.getenv("SERP_API_KEY", "")
22
 
23
+ # Check if keys are set
24
  if not openai_key:
25
  openai_key = st.sidebar.text_input("Missing: OpenAI API Key (OPENAI_API_KEY)", "")
26
  if not serpapi_key:
27
  serpapi_key = st.sidebar.text_input("Missing: SERP API Key (SERPAPI_KEY)", "")
28
 
29
+ # Ensure all keys are available before proceeding
30
  if not openai_key or not serpapi_key:
31
+ st.error("Please provide all missing API keys to proceed.")
32
  else:
 
33
  # Main content
34
  if st.button("Find Similar Patents"):
35
  try:
36
+ # Generate search terms
37
  with st.spinner('Generating search terms...'):
38
  generated_search_terms = generate_search_terms(user_input, number_of_generated_search_terms)
39
  st.success("Search terms generated!")
40
  st.write("Generated search terms: ", generated_search_terms)
41
 
42
+ # Search patents using generated terms
43
  with st.spinner('Searching for patents...'):
44
  search_terms_patterns = search_on_google_patents(generated_search_terms)
45
  st.success("Patents search completed!")
46
  st.subheader("Top Patents Found for Search Terms")
47
+
48
  for search_term, patents in search_terms_patterns.items():
49
  st.write(f"Top {top_k_patterns} patents found for search term: {search_term}")
50
  if len(patents) == 0:
 
53
  patent_titles = [patent['patentTitle'] for patent in patents]
54
  st.json(patent_titles[:top_k_patterns])
55
 
56
+ # Check similarity of patents
57
  patents_list = []
58
  with st.spinner('Checking similarities of patents...'):
59
  for search_term, patents in search_terms_patterns.items():
 
61
  similarities = check_similarity_of_patents(user_input, patents_list)
62
  st.success("Similarity check completed!")
63
 
64
+ # Enrich patents with similarity scores and sort them
65
  for patent in similarities['listOfPatents']:
66
  for p in patents_list:
67
  if patent['patentNumber'] == p['patentNumber']:
68
  p['similarityScore'] = patent['similarityScore']
69
  p['patentGoogleUrl'] = f"https://patents.google.com/patent/{p['patentNumber']}"
70
  break
71
+ patents_list = list(sorted(patents_list, key=lambda x: x.get('similarityScore', 0), reverse=True))
72
 
73
+ # Display top similar patents
74
  st.subheader("Top Similar Patents")
75
  st.json(patents_list)
76
+ except KeyError as e:
77
+ st.error(f"Key error encountered: {e}")
78
  except Exception as e:
79
  st.error(f"An error occurred: {e}")