DrishtiSharma commited on
Commit
92058eb
·
verified ·
1 Parent(s): 5c61cf4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -50
app.py CHANGED
@@ -1,6 +1,7 @@
1
  #include non-patent literature (NPL) - arxiv, mdpi, ncbi, random web articles
2
 
3
 
 
4
  import streamlit as st
5
  from main import *
6
 
@@ -9,61 +10,61 @@ st.title("Patent Similarity Search App (LLM + RAG + GOOGLE PATENTS)")
9
 
10
  st.subheader("User Input")
11
  user_input = st.text_area("Enter Patent Data", "Paste your patent details here...")
 
12
  # Sidebar for user input
13
  with st.sidebar:
14
  number_of_generated_search_terms = st.number_input("Number of Search Terms to Generate", value=5)
15
  top_k_patterns = st.number_input("Top K Patterns to Search", value=10)
16
  model_name = st.text_input("OpenAI Model Name", "gpt-4-0125-preview")
17
- openai_key = st.text_input("OpenAI API Key", '')
18
- serpapi_key = st.text_input("SerpAPI API Key", '')
19
-
20
- # Update environment variables if there are changes
21
- if openai_key != os.getenv("OPENAI_API_KEY"):
22
- os.environ["OPENAI_API_KEY"] = openai_key
 
 
23
 
24
- if serpapi_key != os.getenv("SERPAPI_KEY"):
25
- os.environ["SERPAPI_KEY"] = serpapi_key
 
 
 
 
 
 
 
 
 
26
 
27
- # Main content
28
- if st.button("Find Similar Patents"):
29
- try:
30
- with st.spinner('Generating search terms...'):
31
- generated_search_terms = generate_search_terms(user_input, number_of_generated_search_terms)
32
- st.success("Search terms generated!")
33
- st.write("Generated search terms: ", generated_search_terms)
34
-
35
- with st.spinner('Searching for patents...'):
36
- search_terms_patterns = search_on_google_patents(generated_search_terms)
37
- st.success("Patents search completed!")
38
- # st.write("Patents found: ", patents_list)
39
- st.subheader("Top Patents Found for Search Terms")
40
- for search_term, patents in search_terms_patterns.items():
41
- st.write(f"Top {top_k_patterns} patents found for search term: {search_term}")
42
- if len(patents) == 0:
43
- st.write(f"No patents found for search term: {search_term}")
44
- continue
45
- else:
46
- patent_titles = [patent['patentTitle'] for patent in patents]
47
- st.json(patent_titles[:top_k_patterns])
48
-
49
- patents_list = []
50
- with st.spinner('Checking similarities of patents...'):
51
- # get patents from all search terms
52
  for search_term, patents in search_terms_patterns.items():
53
- patents_list.extend(patents[:top_k_patterns])
54
- similarities = check_similarity_of_patents(user_input, patents_list)
55
- st.success("Similarity check completed!")
56
- # st.write("Similarities found: ", similarities)
57
-
58
- for patent in similarities['listOfPatents']:
59
- for p in patents_list:
60
- if patent['patentNumber'] == p['patentNumber']:
61
- p['similarityScore'] = patent['similarityScore']
62
- p['patentGoogleUrl'] = f"https://patents.google.com/patent/{p['patentNumber']}"
63
- break
64
- patents_list = list(sorted(patents_list, key=lambda x: x['similarityScore'], reverse=True))
65
- # Displaying results
66
- st.subheader("Top Similar Patents")
67
- st.json(patents_list)
68
- except Exception as e:
69
- st.error(f"An error occurred: {e}")
 
 
 
 
 
 
 
 
 
 
1
  #include non-patent literature (NPL) - arxiv, mdpi, ncbi, random web articles
2
 
3
 
4
+ import os
5
  import streamlit as st
6
  from main import *
7
 
 
10
 
11
  st.subheader("User Input")
12
  user_input = st.text_area("Enter Patent Data", "Paste your patent details here...")
13
+
14
  # Sidebar for user input
15
  with st.sidebar:
16
  number_of_generated_search_terms = st.number_input("Number of Search Terms to Generate", value=5)
17
  top_k_patterns = st.number_input("Top K Patterns to Search", value=10)
18
  model_name = st.text_input("OpenAI Model Name", "gpt-4-0125-preview")
19
+
20
+ # Fetch API keys from environment variables
21
+ openai_key = os.getenv("OPENAI_API_KEY", "")
22
+ serpapi_key = os.getenv("SERPAPI_KEY", "")
23
+
24
+ # Display keys for user to verify or update
25
+ st.text_input("OpenAI API Key (from environment)", openai_key, disabled=True)
26
+ st.text_input("SerpAPI API Key (from environment)", serpapi_key, disabled=True)
27
 
28
+ # Check if keys are set
29
+ if not openai_key or not serpapi_key:
30
+ st.error("API keys are missing! Please set the OPENAI_API_KEY and SERPAPI_KEY environment variables.")
31
+ else:
32
+ # Main content
33
+ if st.button("Find Similar Patents"):
34
+ try:
35
+ with st.spinner('Generating search terms...'):
36
+ generated_search_terms = generate_search_terms(user_input, number_of_generated_search_terms)
37
+ st.success("Search terms generated!")
38
+ st.write("Generated search terms: ", generated_search_terms)
39
 
40
+ with st.spinner('Searching for patents...'):
41
+ search_terms_patterns = search_on_google_patents(generated_search_terms)
42
+ st.success("Patents search completed!")
43
+ st.subheader("Top Patents Found for Search Terms")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  for search_term, patents in search_terms_patterns.items():
45
+ st.write(f"Top {top_k_patterns} patents found for search term: {search_term}")
46
+ if len(patents) == 0:
47
+ st.write(f"No patents found for search term: {search_term}")
48
+ else:
49
+ patent_titles = [patent['patentTitle'] for patent in patents]
50
+ st.json(patent_titles[:top_k_patterns])
51
+
52
+ patents_list = []
53
+ with st.spinner('Checking similarities of patents...'):
54
+ for search_term, patents in search_terms_patterns.items():
55
+ patents_list.extend(patents[:top_k_patterns])
56
+ similarities = check_similarity_of_patents(user_input, patents_list)
57
+ st.success("Similarity check completed!")
58
+
59
+ for patent in similarities['listOfPatents']:
60
+ for p in patents_list:
61
+ if patent['patentNumber'] == p['patentNumber']:
62
+ p['similarityScore'] = patent['similarityScore']
63
+ p['patentGoogleUrl'] = f"https://patents.google.com/patent/{p['patentNumber']}"
64
+ break
65
+ patents_list = list(sorted(patents_list, key=lambda x: x['similarityScore'], reverse=True))
66
+
67
+ st.subheader("Top Similar Patents")
68
+ st.json(patents_list)
69
+ except Exception as e:
70
+ st.error(f"An error occurred: {e}")