shigeru saito commited on
Commit
56dd884
·
1 Parent(s): 29c9545

エラー処理追加、GUIからcsvアップロードを削除、サンプルの修正

Browse files
Files changed (2) hide show
  1. app.py +19 -28
  2. sample.csv +6 -3
app.py CHANGED
@@ -19,14 +19,8 @@ GOOGLE_API_KEY=os.environ["GOOGLE_API_KEY"]
19
 
20
  def search_and_generate(question, prefix = "次の質問にできる限り答えてください。"):
21
  # ツールの準備
22
- search = GoogleSearchAPIWrapper()
23
- search_tool = Tool(
24
- name="Search",
25
- func=search.run,
26
- description="useful for when you need to answer questions about current events"
27
- ),
28
-
29
- tools = load_tools(["google-search"], llm=ChatOpenAI())
30
 
31
  # プロンプトテンプレートの準備
32
  prefix = f"{prefix} 次のツールにアクセスできます:"
@@ -43,7 +37,7 @@ def search_and_generate(question, prefix = "次の質問にできる限り答え
43
  )
44
 
45
  # エージェントの準備
46
- llm = ChatOpenAI(model_name="gpt-3.5-turbo")
47
  llm_chain = LLMChain(llm=llm, prompt=prompt)
48
  agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools)
49
  agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, verbose=True)
@@ -52,7 +46,13 @@ def search_and_generate(question, prefix = "次の質問にできる限り答え
52
  result = agent_executor.run(question)
53
  except OutputParserException as e:
54
  result = '例外が発生しました: OutputParserException ' + str(e.args[0])
55
-
 
 
 
 
 
 
56
  return result
57
 
58
  def search_and_generate_csv(csv_file):
@@ -87,21 +87,12 @@ def search_and_generate_csv(csv_file):
87
 
88
  return result_csv
89
 
90
- def process_input(str_question, file_csv):
91
  # file_csvが空でない場合はCSVファイルとして扱う
92
- try:
93
- if file_csv:
94
- return search_and_generate_csv(file_csv.name)
95
- elif str_question:
96
- return search_and_generate(str_question)
97
- except HttpError as e:
98
- print("An HTTP error %d occurred:\n%s" % (e.resp.status, e.content))
99
- # reasonがrateLimitExceededの場合
100
- if "rateLimitExceeded" in e.content.decode():
101
- result = "検索APIリクエストの上限に達しました。"
102
- else:
103
- result = "検索API実行時に通信エラーが発生しました。"
104
- return result
105
 
106
  def main():
107
  # パラメータに --csv がある場合、かつ、その次の引数がファイル名の場合
@@ -120,12 +111,12 @@ def main():
120
  print(result)
121
  else:
122
  gr.Interface(fn=process_input,
123
- inputs=[gr.Text(), gr.File()],
124
  outputs="text",
125
  examples=[
126
- ["", "sample.csv"],
127
- ["日下部民藝館に伝わる伝承は?", None],
128
- ["醍醐寺に伝わる伝承は?", None],
129
  ],
130
  ).launch()
131
 
 
19
 
20
  def search_and_generate(question, prefix = "次の質問にできる限り答えてください。"):
21
  # ツールの準備
22
+ search = GoogleSearchAPIWrapper(k=1)
23
+ tools = load_tools(["google-search","requests"], llm=ChatOpenAI())
 
 
 
 
 
 
24
 
25
  # プロンプトテンプレートの準備
26
  prefix = f"{prefix} 次のツールにアクセスできます:"
 
37
  )
38
 
39
  # エージェントの準備
40
+ llm = ChatOpenAI(model_name="gpt-4")
41
  llm_chain = LLMChain(llm=llm, prompt=prompt)
42
  agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools)
43
  agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, verbose=True)
 
46
  result = agent_executor.run(question)
47
  except OutputParserException as e:
48
  result = '例外が発生しました: OutputParserException ' + str(e.args[0])
49
+ except HttpError as e:
50
+ print("An HTTP error %d occurred:\n%s" % (e.resp.status, e.content))
51
+ # reasonがrateLimitExceededの場合
52
+ if "rateLimitExceeded" in e.content.decode():
53
+ result = "検索APIリクエストの上限に達しました。"
54
+ else:
55
+ result = "検索API実行時に通信エラーが発生しました。"
56
  return result
57
 
58
  def search_and_generate_csv(csv_file):
 
87
 
88
  return result_csv
89
 
90
+ def process_input(str_question, file_csv=None):
91
  # file_csvが空でない場合はCSVファイルとして扱う
92
+ if file_csv:
93
+ return search_and_generate_csv(file_csv.name)
94
+ elif str_question:
95
+ return search_and_generate(str_question)
 
 
 
 
 
 
 
 
 
96
 
97
  def main():
98
  # パラメータに --csv がある場合、かつ、その次の引数がファイル名の場合
 
111
  print(result)
112
  else:
113
  gr.Interface(fn=process_input,
114
+ inputs=[gr.Text()],
115
  outputs="text",
116
  examples=[
117
+ "ChatGPTの最新のアップデートは?",
118
+ "日下部民藝館に伝わる伝承は?",
119
+ "箱根に伝わる伝説は?",
120
  ],
121
  ).launch()
122
 
sample.csv CHANGED
@@ -1,4 +1,7 @@
1
  question, answer
2
- 葛飾区に伝わる伝承は?50文字以内で答えてください,
3
- 品川区に伝わる伝承は?50文字以内で答えてください,
4
- 箱根に伝わる伝承は?50文字以内で答えてください,
 
 
 
 
1
  question, answer
2
+ 葛飾区に伝わる伝承は?
3
+ 品川区に伝わる伝承は?
4
+ 箱根に伝わる伝承は?
5
+ 日下部民藝館に伝わる伝承は?
6
+ 醍醐寺に伝わる伝承は?
7
+ 佐渡に伝わる伝承は?