Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -14,7 +14,7 @@ import time
|
|
| 14 |
|
| 15 |
# import e5-large-v2 embedding model
|
| 16 |
model_name = "intfloat/e5-large-v2"
|
| 17 |
-
model_kwargs = {'device': '
|
| 18 |
encode_kwargs = {'normalize_embeddings': False}
|
| 19 |
embeddings = HuggingFaceEmbeddings(
|
| 20 |
model_name=model_name,
|
|
@@ -38,31 +38,51 @@ def generate_response(input_text):
|
|
| 38 |
#st.write({"source1":json1["source"], "source2":json2["source"],"source3":json3["source"]})
|
| 39 |
|
| 40 |
|
| 41 |
-
climate_TEMPLATE = """
|
|
|
|
|
|
|
| 42 |
|
| 43 |
-
|
| 44 |
-
Context: {context}
|
| 45 |
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
|
| 51 |
-
|
| 52 |
-
Check if you use the source in your ansewer, make sure list used sources you refer to and their hyperlinks as below in a section named "sources":
|
| 53 |
-
|
| 54 |
-
[{source1} page {page1}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source1}.pdf#page={page1})
|
| 55 |
-
[{source2} page {page2}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source2}.pdf#page={page2})
|
| 56 |
-
[{source3} page {page3}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source3}.pdf#page={page3})
|
| 57 |
-
[{source4} page {page4}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source4}.pdf#page={page4})
|
| 58 |
-
[{source5} page {page5}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source5}.pdf#page={page5})
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
at the end of your answer, make sure to add a short highlight of your answer in humor and make sure no more than 5 words.
|
| 64 |
-
|
| 65 |
-
Highlight:
|
| 66 |
"""
|
| 67 |
climate_PROMPT = PromptTemplate(input_variables=["question", "context"],
|
| 68 |
partial_variables={"source1":json1["source"], "source2":json2["source"],
|
|
@@ -73,7 +93,7 @@ def generate_response(input_text):
|
|
| 73 |
#climate_PROMPT.partial(source = docs[0].metadata)
|
| 74 |
|
| 75 |
llm = ChatOpenAI(
|
| 76 |
-
model_name="gpt-3.5-turbo",
|
| 77 |
temperature=0.1,
|
| 78 |
max_tokens=2000,
|
| 79 |
openai_api_key=openai_api_key
|
|
|
|
| 14 |
|
| 15 |
# import e5-large-v2 embedding model
|
| 16 |
model_name = "intfloat/e5-large-v2"
|
| 17 |
+
model_kwargs = {'device': 'cuda'}
|
| 18 |
encode_kwargs = {'normalize_embeddings': False}
|
| 19 |
embeddings = HuggingFaceEmbeddings(
|
| 20 |
model_name=model_name,
|
|
|
|
| 38 |
#st.write({"source1":json1["source"], "source2":json2["source"],"source3":json3["source"]})
|
| 39 |
|
| 40 |
|
| 41 |
+
climate_TEMPLATE = """\
|
| 42 |
+
You are a professor in climate change, tasked with answering any question \
|
| 43 |
+
about climate change.
|
| 44 |
|
| 45 |
+
{question}
|
|
|
|
| 46 |
|
| 47 |
+
Generate a comprehensive and informative answer to the general audience of 100 words or less for the \
|
| 48 |
+
given question based solely on the provided search results (hyperlink and source). You must \
|
| 49 |
+
only use information from the provided search results. Use an unbiased and \
|
| 50 |
+
journalistic tone. Combine search results together into a coherent answer. Do not \
|
| 51 |
+
repeat text. Only use the most \
|
| 52 |
+
relevant results that answer the question accurately. cite them at the end of your answer, list these citations \
|
| 53 |
+
in a section named "source".
|
| 54 |
|
| 55 |
+
After the "source" section, add a "highlight" section\
|
| 56 |
+
And add a short highlight of your answer in humor and make sure no more than 5 words.\
|
| 57 |
+
|
| 58 |
+
Format your answer in markdown format
|
| 59 |
+
|
| 60 |
+
If there is nothing in the context relevant to the question at hand, just say "Hmm, \
|
| 61 |
+
I'm not sure." Don't try to make up an answer.
|
| 62 |
+
|
| 63 |
+
Anything between the following `context` html blocks is retrieved from a knowledge \
|
| 64 |
+
bank, not part of the conversation with the user.
|
| 65 |
+
|
| 66 |
+
<context>
|
| 67 |
+
{context}
|
| 68 |
+
<context/>
|
| 69 |
+
|
| 70 |
+
Anything between the following `sources` html blocks is the source and hyperlink you should use and list them into a source section\
|
| 71 |
+
<sources>
|
| 72 |
+
[{source1} page {page1}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source1}.pdf#page={page1})
|
| 73 |
+
[{source2} page {page2}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source2}.pdf#page={page2})
|
| 74 |
+
[{source3} page {page3}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source3}.pdf#page={page3})
|
| 75 |
+
[{source4} page {page4}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source4}.pdf#page={page4})
|
| 76 |
+
[{source5} page {page5}](https://www.ipcc.ch/report/ar6/wg3/downloads/report/{source5}.pdf#page={page5})
|
| 77 |
+
<sources/>
|
| 78 |
+
|
| 79 |
+
REMEMBER: If there is no relevant information within the context, just say "Hmm, I'm \
|
| 80 |
+
not sure." Don't try to make up an answer. Anything between the preceding 'context' \
|
| 81 |
+
html blocks is retrieved from a knowledge bank, not part of the conversation with the \
|
| 82 |
+
user.\
|
| 83 |
|
| 84 |
|
| 85 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
"""
|
| 87 |
climate_PROMPT = PromptTemplate(input_variables=["question", "context"],
|
| 88 |
partial_variables={"source1":json1["source"], "source2":json2["source"],
|
|
|
|
| 93 |
#climate_PROMPT.partial(source = docs[0].metadata)
|
| 94 |
|
| 95 |
llm = ChatOpenAI(
|
| 96 |
+
model_name="gpt-3.5-turbo-16k",
|
| 97 |
temperature=0.1,
|
| 98 |
max_tokens=2000,
|
| 99 |
openai_api_key=openai_api_key
|