DField commited on
Commit
2ca8f99
·
verified ·
1 Parent(s): 0900e88

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -3
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import requests
2
  from bs4 import BeautifulSoup
3
- import fitz # pip install PyMuPDF
4
  import os
5
  import openai
6
  import re
@@ -52,6 +52,19 @@ def summarize_paper(paper_id):
52
  save_summary(paper_id, summary) # 新しい要約を保存
53
  return summary, tokens_used
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  def summarize_text_with_chat(text, max_length=10000):
56
  """テキストをOpenAIのChat APIを使用して要約する。"""
57
  openai.api_key = os.getenv('OPEN_AI_API_KEYS')
@@ -69,7 +82,37 @@ def summarize_text_with_chat(text, max_length=10000):
69
  total_token = response.usage.total_tokens
70
  return summary_text, total_token
71
 
72
- # Gradioインターフェースの設定とその他の関数は変更なし
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
  if __name__ == "__main__":
75
- iface.launch()
 
1
  import requests
2
  from bs4 import BeautifulSoup
3
+ import fitz #pip install PyMuPDF
4
  import os
5
  import openai
6
  import re
 
52
  save_summary(paper_id, summary) # 新しい要約を保存
53
  return summary, tokens_used
54
 
55
+ def fetch_paper_links(url):
56
+ """指定したURLから特定の形式に完全にマッチするリンクを取得し、重複を排除する(順序保持)"""
57
+ response = requests.get(url)
58
+ soup = BeautifulSoup(response.text, 'html.parser')
59
+ # パターンの開始(^)と終了($)を指定して、完全一致を検出
60
+ pattern = re.compile(r'^/papers/\d+\.\d+$')
61
+ links = []
62
+ for a in soup.find_all('a', href=True):
63
+ href = a['href']
64
+ if pattern.match(href) and href not in links:
65
+ links.append(href)
66
+ return links
67
+
68
  def summarize_text_with_chat(text, max_length=10000):
69
  """テキストをOpenAIのChat APIを使用して要約する。"""
70
  openai.api_key = os.getenv('OPEN_AI_API_KEYS')
 
82
  total_token = response.usage.total_tokens
83
  return summary_text, total_token
84
 
85
+ def gradio_interface():
86
+ papers_url = 'https://huggingface.co/papers' # デフォルトURL
87
+ paper_links = fetch_paper_links(papers_url)
88
+ paper_ids = set(link.split('/')[-1] for link in paper_links)
89
+
90
+ total_tokens_used = 0
91
+ summaries = []
92
+
93
+ for paper_id in paper_ids:
94
+ summary_info = ""
95
+ try:
96
+ summary, tokens_used = summarize_paper(paper_id)
97
+ total_tokens_used += tokens_used
98
+ paper_id_url = f"https://arxiv.org/pdf/{paper_id}.pdf"
99
+ summary_info += f'論文: {paper_id_url}\n{summary}\n'
100
+ except Exception as e:
101
+ summary_info += f"Error processing paper ID {paper_id}: {e}\n"
102
+
103
+ summaries.append(summary_info)
104
+
105
+ summaries_markdown = "\n---\n".join(summaries) # 要約を水平線で区切る
106
+ return summaries_markdown + f"\n全ての要約で使用されたトータルトークン数: {total_tokens_used}"
107
+
108
+ # Gradioインターフェースの設定
109
+ iface = gr.Interface(
110
+ fn=gradio_interface,
111
+ inputs=[], # 入力部分を削除
112
+ outputs=gr.Markdown(),
113
+ title="論文要約ツール",
114
+ description="[Daily Papers](https://huggingface.co/papers)に掲載された本日の論文を取得し、日本語で要約します。"
115
+ )
116
 
117
  if __name__ == "__main__":
118
+ iface.launch()