onayami-debug commited on
Commit
5552745
1 Parent(s): 52b9d19
Files changed (3) hide show
  1. README.md +2 -2
  2. app.py +88 -0
  3. requirements.txt +3 -0
README.md CHANGED
@@ -1,10 +1,10 @@
1
  ---
2
  title: Onayami Evaluation
3
- emoji: 🐠
4
  colorFrom: green
5
  colorTo: yellow
6
  sdk: gradio
7
- sdk_version: 3.27.0
8
  app_file: app.py
9
  pinned: false
10
  license: mit
 
1
  ---
2
  title: Onayami Evaluation
3
+ emoji: 🐛
4
  colorFrom: green
5
  colorTo: yellow
6
  sdk: gradio
7
+ sdk_version: 3.23.0
8
  app_file: app.py
9
  pinned: false
10
  license: mit
app.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ from langchain.chat_models import ChatOpenAI
4
+
5
+ # お悩み回答の評価
6
+ system_setting = """
7
+ あなたはお悩みに対する回答を評価する天才です。
8
+ 以下の基準に従い回答を評価します。
9
+ 思考の過程がわかるように各基準ごとにレビューし、その後に採点を行います。採点は0-100点です。
10
+ 各基準を箇条書きで書くとわかりやすいことを知っています。
11
+ そして各基準を回答した後に総合点(0-100点)を発表します。
12
+
13
+ ### 基準
14
+ * 共感度:
15
+ * 悩みに寄り添っているか
16
+ * 個人のプロフィールに触れているか
17
+ * 網羅度:
18
+ * 悩みの全てを網羅しているか
19
+ * 悩みの概要をリスト化してチェックします
20
+ * 解決度:
21
+ * 悩みの解決になっているか
22
+ * 相談者の悩みを根本的に解決しているか
23
+ * 文章正確度:
24
+ * 段落ごとはつながっているか
25
+ * 主語、修飾語、述語のつながりが問題がないか
26
+ * ユニーク度:
27
+ * 一般的な考えだけでなく独自な視点で回答しているか
28
+ * オリジナリティのある言い回しをしているか
29
+
30
+ * 総合点:
31
+ * 上記の基準を総合的に評価した点数を付けます
32
+
33
+ """
34
+
35
+ # お悩み回答のメイン部分
36
+ def evaluate(apikey, issue, advice):
37
+
38
+ response_message = ""
39
+
40
+ if not apikey:
41
+ response_message = 'OpenAIのAPIキーを入力してください'
42
+ yield response_message
43
+ else:
44
+ os.environ["OPENAI_API_KEY"] = apikey
45
+
46
+ messages = [
47
+ {"role": "system", "content": system_setting},
48
+ {"role": "user", "content":
49
+ "以下が、エンジニアの悩みと回答です。回答を基準に従い評価してください。\n### エンジニアの悩み\n"+issue+"\n\n### 悩みへの回答\n"+advice}
50
+ ]
51
+
52
+ model_name = "gpt-3.5-turbo"
53
+ chat = ChatOpenAI(model_name=model_name, streaming=True, temperature=0.0)
54
+ chat_generator = chat.client.create(messages=messages, stream=True, model=model_name)
55
+
56
+ # AIの回答をストリーミングで表示
57
+ for chunk in chat_generator:
58
+ if "choices" in chunk:
59
+ for choice in chunk["choices"]:
60
+ if "delta" in choice and "content" in choice["delta"]:
61
+ new_token = choice["delta"]["content"]
62
+ response_message += new_token
63
+
64
+ if "finish_reason" in choice and choice["finish_reason"] == "stop":
65
+ break
66
+
67
+ yield response_message
68
+
69
+ # gradioのインターフェイス部分
70
+ with gr.Blocks() as app:
71
+ with gr.Row():
72
+ with gr.Column(min_width=100):
73
+ pass
74
+ with gr.Column(min_width=800):
75
+ gr.Markdown("# お悩みへの回答を評価")
76
+
77
+ apikey = gr.Textbox(placeholder="sk-**************", label="OpenAIのAPIキー", type="password")
78
+ input_issue = gr.Textbox(value="", lines=5, label="元のお悩みを入力してください", placeholder="",)
79
+ input_advice = gr.Textbox(value="", lines=10, label="お悩みへの回答を入力してください", placeholder="",)
80
+ button = gr.Button(value="評価する")
81
+
82
+ output_text = gr.Textbox(value="", lines=15, interactive=False, label="お悩み回答の評価")
83
+
84
+ button.click(evaluate, inputs=[apikey, input_issue, input_advice], outputs=[output_text])
85
+ with gr.Column(min_width=100):
86
+ pass
87
+
88
+ app.queue().launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio==3.23.0
2
+ openai==0.27.2
3
+ langchain==0.0.121