Spaces:
Sleeping
Sleeping
onayami-debug
commited on
Commit
•
5552745
1
Parent(s):
52b9d19
init
Browse files- README.md +2 -2
- app.py +88 -0
- 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.
|
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
|