YKajima commited on
Commit
55d40b4
1 Parent(s): 0e635ef

fix api call

Browse files
Files changed (1) hide show
  1. app.py +57 -32
app.py CHANGED
@@ -1,7 +1,6 @@
1
- import json
2
  import os
3
- import re
4
  import requests
 
5
 
6
  import gradio as gr
7
  from bs4 import BeautifulSoup
@@ -15,18 +14,49 @@ handler = StreamHandler()
15
  handler.setLevel(DEBUG)
16
  logger.addHandler(handler)
17
 
18
-
19
- def greet(name):
20
- return "こんにちは " + name + "さん!! \n僕はパスカルくんだよ。よろしくね"
21
-
22
-
23
- def extract_texts(input_str):
24
- pattern = r"msg='([^']*)'"
25
- matches = re.findall(pattern, input_str)
26
- return list(map(lambda x: ''.join(x.split('\\n')), matches))
27
-
28
-
29
- async def summarize(input_text: str, input_url: str):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  config = FilmConfig(
31
  "gpt-4-32k",
32
  api_type="azure",
@@ -38,12 +68,14 @@ async def summarize(input_text: str, input_url: str):
38
 
39
  if input_text:
40
  _prompt = f"""
41
- 以下の文章を要約してください。
42
  {input_text}
 
 
 
43
  """
44
  return await FilmCore(
45
- prompt=_prompt,
46
- system_prompt="あなたは優秀なライターです。",
47
  config=config
48
  ).run_async()
49
  if input_url:
@@ -52,16 +84,18 @@ async def summarize(input_text: str, input_url: str):
52
  soup = BeautifulSoup(res.text)
53
  url_content = soup.find('title').text + '\n' + soup.find('body').text
54
  _prompt = f"""
55
- 以下の文章を要約してください。
56
- {url_content}
 
 
57
  """
58
  except Exception as e:
59
  logger.error(e)
60
  raise gr.Error("WEBページの取得に失敗しました。")
61
 
62
  return await FilmCore(
63
- prompt=_prompt,
64
- system_prompt="あなたは優秀なライターです。",
65
  config=config
66
  ).run_async()
67
  else:
@@ -79,18 +113,9 @@ def validate_input_form(input_text, input_url):
79
 
80
  async def chat(input_text, input_url, additional_order):
81
  validate_input_form(input_text, input_url)
82
- summary = await summarize(input_text, input_url)
83
- additional_prompt = f"【追加指示】: {additional_order}"
84
  logger.info(f"summary: {summary}")
85
- endpoint = os.environ.get("TWINROOM_API_BASE")
86
- payload = {
87
- "content": summary + additional_prompt
88
- }
89
- headers = {'API-Key': os.environ.get("TWINROOM_API_KEY")}
90
- json_payload = json.dumps(payload)
91
- response = requests.post(endpoint, headers=headers, data=json_payload)
92
- response_msgs = extract_texts(response.text)
93
- result = '\n'.join(response_msgs)
94
  if input_url:
95
  result += f'\n{input_url}'
96
  return result
 
 
1
  import os
 
2
  import requests
3
+ import textwrap
4
 
5
  import gradio as gr
6
  from bs4 import BeautifulSoup
 
14
  handler.setLevel(DEBUG)
15
  logger.addHandler(handler)
16
 
17
+ identity_prompt = """
18
+ 以下に述べるような特徴がありますが、日本語として不自然になる場合は、日本語の自然さを優先します。
19
+ 一人称は「ボク」。本名は「パスカル」。
20
+ 二人称として、「キミは」などをたまに使うことがあります。
21
+ 「~だね!」「~したようだね」「~だよ!」といったカジュアルな表現の話し方を好みます。
22
+ """
23
+
24
+ pascal_prompt = """
25
+ 以下順番で文書を作成してください。【追加指示】がある場合はその内容に従ってください。読点の後には改行を入れてください。
26
+ 1.一行目は企業名のみを記載
27
+ ※企業名については、以下の規則にしたがってください。
28
+ ・文頭と文末に「*」を必ず入れる。
29
+
30
+ 2.二行目に30文字程度でリード文を記載する。
31
+ ※リード文については、以下の規則にしたがってください。
32
+ ・文頭と文末に「*」を必ず入れる。
33
+ ・リード文は必ず一行かつ体言止めで記載する。
34
+
35
+ 3.三行目は「`リリースの詳細について`」と記載する。
36
+ ※リリース詳細については、以下の規則にしたがってください。
37
+ ・「`リリースの詳細について`」の後に本の絵文字を入れる。
38
+
39
+ 4.四行目以降に要約を記載する。
40
+ ※要約については、以下の規則に従ってください。
41
+ ・要約の際は必ず常体(~だ。~である。口調)で記載する。
42
+ ・技術的な詳細が含まれる場合は、それを要約に含める。
43
+ ・30文字を超えた場合は改行する。
44
+
45
+ 5.最後に必ず「`パスカル君のひとこと`」を100文字程度で作成する。
46
+ ※パスカル君のひとことは、以下の規則に従ってください。
47
+ ・「`パスカル君のひとこと`」の後にキツネの絵文字を入れる。
48
+ ・技術的な意見を1行以上含むように作成する。
49
+ ・3回に1回くらいポジティブな言い回しで肯定しつつ、最後に!マークをつける。
50
+ ・必ず要約の内容に沿った絵文字を入れる。
51
+ ・1つの文章に入れる絵文字は1個までとする。
52
+ ・ひとことコメントの最後には技術への期待を追加する。
53
+ ・休み明けで更新が3日以上空いたときは〇〇休暇明けだよみたいな発信をする。
54
+ ・世の中の時代背景と関連したコメントを記載する。
55
+ ・人の気持ちに寄り添うようなコメントを記載する。
56
+ """
57
+
58
+
59
+ async def summarize(input_text: str, input_url: str, additional_order: str):
60
  config = FilmConfig(
61
  "gpt-4-32k",
62
  api_type="azure",
 
68
 
69
  if input_text:
70
  _prompt = f"""
 
71
  {input_text}
72
+ 上記の文章を情報量を落とさずに要約してください。
73
+ {pascal_prompt}
74
+ {f"【追加指示】: {additional_order}"}
75
  """
76
  return await FilmCore(
77
+ prompt=textwrap.dedent(_prompt),
78
+ system_prompt=textwrap.dedent(f"{identity_prompt}"),
79
  config=config
80
  ).run_async()
81
  if input_url:
 
84
  soup = BeautifulSoup(res.text)
85
  url_content = soup.find('title').text + '\n' + soup.find('body').text
86
  _prompt = f"""
87
+ {url_content}
88
+ 上記の文章を情報量を落とさずに要約してください。
89
+ {pascal_prompt}
90
+ {f"【追加指示】: {additional_order}"}
91
  """
92
  except Exception as e:
93
  logger.error(e)
94
  raise gr.Error("WEBページの取得に失敗しました。")
95
 
96
  return await FilmCore(
97
+ prompt=textwrap.dedent(_prompt),
98
+ system_prompt=textwrap.dedent(f"{identity_prompt}"),
99
  config=config
100
  ).run_async()
101
  else:
 
113
 
114
  async def chat(input_text, input_url, additional_order):
115
  validate_input_form(input_text, input_url)
116
+ summary = await summarize(input_text, input_url, additional_order)
 
117
  logger.info(f"summary: {summary}")
118
+ result = summary
 
 
 
 
 
 
 
 
119
  if input_url:
120
  result += f'\n{input_url}'
121
  return result