Spaces:
Paused
Paused
updated to claude-3
Browse files
app.py
CHANGED
@@ -6,7 +6,7 @@ import os
|
|
6 |
import arxiv
|
7 |
import gradio as gr
|
8 |
import requests
|
9 |
-
from anthropic import
|
10 |
from arxiv_latex_extractor import get_paper_content
|
11 |
from huggingface_hub import HfApi
|
12 |
|
@@ -70,43 +70,54 @@ def get_paper_from_huggingface(paper_id):
|
|
70 |
|
71 |
|
72 |
class ContextualQA:
|
73 |
-
def __init__(self, client, model="claude-
|
74 |
self.client = client
|
75 |
self.model = model
|
76 |
-
self.context =
|
77 |
self.questions = []
|
78 |
self.responses = []
|
79 |
|
80 |
def load_text(self, text):
|
81 |
-
self.context = text
|
82 |
|
83 |
def ask_question(self, question):
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
model=self.model,
|
107 |
-
|
|
|
|
|
|
|
108 |
)
|
109 |
-
|
|
|
|
|
110 |
self.questions.append(question)
|
111 |
self.responses.append(answer)
|
112 |
return answer
|
@@ -186,7 +197,7 @@ def load_context(paper_id):
|
|
186 |
|
187 |
# Initialize the Anthropic client and QA model
|
188 |
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
|
189 |
-
qa_model = ContextualQA(client, model="claude-
|
190 |
context = f"{LEADING_PROMPT}\n{latex_source}"
|
191 |
qa_model.load_text(context)
|
192 |
|
@@ -235,17 +246,10 @@ with gr.Blocks(
|
|
235 |
gr.HTML(
|
236 |
"""
|
237 |
<h1 style='text-align: center; font-size: 24px;'>
|
238 |
-
Explore ArXiv Papers in Depth with π₯ <code>claude-
|
239 |
</h1>
|
240 |
"""
|
241 |
)
|
242 |
-
# gr.HTML(
|
243 |
-
# """
|
244 |
-
# <p style='text-align: justify; font-size: 18px; margin: 10px;'>
|
245 |
-
# Explore the depths of ArXiv papers with our interactive app, powered by the advanced <code>claude-2.1</code> model. Ask detailed questions and get immediate, context-rich answers from academic papers.
|
246 |
-
# </p>
|
247 |
-
# """
|
248 |
-
# )
|
249 |
|
250 |
gr.HTML(
|
251 |
"""
|
@@ -287,7 +291,7 @@ with gr.Blocks(
|
|
287 |
gr.Markdown(
|
288 |
"## Acknowledgements\n"
|
289 |
"This project is made possible through the generous support of "
|
290 |
-
"[Anthropic](https://www.anthropic.com/), who provided free access to the `claude-
|
291 |
)
|
292 |
|
293 |
btn_load.click(load_context, inputs=[paper_id_input], outputs=[qa_model, chatbot])
|
@@ -307,6 +311,3 @@ with gr.Blocks(
|
|
307 |
btn_clear.click(clear_context, outputs=[chatbot])
|
308 |
|
309 |
demo.launch()
|
310 |
-
|
311 |
-
# app.mount("/js", StaticFiles(directory="js"), name="js")
|
312 |
-
# gr.mount_gradio_app(app, demo, path="/")
|
|
|
6 |
import arxiv
|
7 |
import gradio as gr
|
8 |
import requests
|
9 |
+
from anthropic import Anthropic
|
10 |
from arxiv_latex_extractor import get_paper_content
|
11 |
from huggingface_hub import HfApi
|
12 |
|
|
|
70 |
|
71 |
|
72 |
class ContextualQA:
|
73 |
+
def __init__(self, client, model="claude-3-opus-20240229", initial_context=""):
|
74 |
self.client = client
|
75 |
self.model = model
|
76 |
+
self.context = initial_context # Set the initial context here
|
77 |
self.questions = []
|
78 |
self.responses = []
|
79 |
|
80 |
def load_text(self, text):
|
81 |
+
self.context = text # Update the context with new text
|
82 |
|
83 |
def ask_question(self, question):
|
84 |
+
# Prepare the messages list with previous Q&A pairs and the current context
|
85 |
+
messages = [{
|
86 |
+
"role": "user",
|
87 |
+
"content": [{"type": "text", "text": "Read the document bleow and answer the questions\n"+self.context}]
|
88 |
+
}]
|
89 |
+
messages.append({
|
90 |
+
"role": "assistant",
|
91 |
+
"content": [{"type": "text", "text": "The document is loaded. You can now ask questions."}]
|
92 |
+
})
|
93 |
+
|
94 |
+
for q, a in zip(self.questions, self.responses):
|
95 |
+
messages.append({
|
96 |
+
"role": "user",
|
97 |
+
"content": [{"type": "text", "text": q}]
|
98 |
+
})
|
99 |
+
messages.append({
|
100 |
+
"role": "assistant",
|
101 |
+
"content": [{"type": "text", "text": a}]
|
102 |
+
})
|
103 |
+
|
104 |
+
# Add the new question
|
105 |
+
messages.append({
|
106 |
+
"role": "user",
|
107 |
+
"content": [{"type": "text", "text": question}]
|
108 |
+
})
|
109 |
+
|
110 |
+
# Create the message with the system context and the list of messages
|
111 |
+
response = self.client.messages.create(
|
112 |
model=self.model,
|
113 |
+
max_tokens=1024,
|
114 |
+
system=self.context, # Pass the context directly as a string
|
115 |
+
messages=messages,
|
116 |
+
temperature=0 # Assuming you want deterministic responses
|
117 |
)
|
118 |
+
|
119 |
+
# Assuming the response object has a 'content' attribute that contains the answer
|
120 |
+
answer = response.content[0].text
|
121 |
self.questions.append(question)
|
122 |
self.responses.append(answer)
|
123 |
return answer
|
|
|
197 |
|
198 |
# Initialize the Anthropic client and QA model
|
199 |
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
|
200 |
+
qa_model = ContextualQA(client, model="claude-3-opus-20240229")
|
201 |
context = f"{LEADING_PROMPT}\n{latex_source}"
|
202 |
qa_model.load_text(context)
|
203 |
|
|
|
246 |
gr.HTML(
|
247 |
"""
|
248 |
<h1 style='text-align: center; font-size: 24px;'>
|
249 |
+
Explore ArXiv Papers in Depth with π₯ <code>claude-3-opus-20240229</code> π₯- Ask Questions and Get Answers Instantly
|
250 |
</h1>
|
251 |
"""
|
252 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
|
254 |
gr.HTML(
|
255 |
"""
|
|
|
291 |
gr.Markdown(
|
292 |
"## Acknowledgements\n"
|
293 |
"This project is made possible through the generous support of "
|
294 |
+
"[Anthropic](https://www.anthropic.com/), who provided free access to the `claude-3` API."
|
295 |
)
|
296 |
|
297 |
btn_load.click(load_context, inputs=[paper_id_input], outputs=[qa_model, chatbot])
|
|
|
311 |
btn_clear.click(clear_context, outputs=[chatbot])
|
312 |
|
313 |
demo.launch()
|
|
|
|
|
|