commit
Browse files- README.md +4 -4
- app.py +113 -0
- requirements.txt +1 -0
README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: gradio
|
7 |
sdk_version: 3.19.1
|
8 |
app_file: app.py
|
|
|
1 |
---
|
2 |
+
title: CalqResume
|
3 |
+
emoji: 🦀
|
4 |
+
colorFrom: pink
|
5 |
+
colorTo: green
|
6 |
sdk: gradio
|
7 |
sdk_version: 3.19.1
|
8 |
app_file: app.py
|
app.py
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import gradio as gr
|
3 |
+
import openai
|
4 |
+
|
5 |
+
class OpenAIUtils:
|
6 |
+
|
7 |
+
@classmethod
|
8 |
+
def use_openai_chatgpt_base(cls, prompt):
|
9 |
+
"""
|
10 |
+
Use OpenAI's GPT-3 model, Davinci, to generate text based on the given prompt
|
11 |
+
"""
|
12 |
+
openai.api_key = os.getenv('OPENAI_API_KEY')
|
13 |
+
print("prompt")
|
14 |
+
print(prompt)
|
15 |
+
|
16 |
+
try:
|
17 |
+
res = openai.ChatCompletion.create(
|
18 |
+
# res = openai.Completion.create(
|
19 |
+
model="gpt-3.5-turbo",
|
20 |
+
messages=[
|
21 |
+
{"role": "system", "content": "あなたは企業の採用担当です"},
|
22 |
+
# {"role": "user", "content": prompt},
|
23 |
+
{"role": "user", "content": f"{prompt}"},
|
24 |
+
]
|
25 |
+
)
|
26 |
+
string = res.choices[0]['message']['content']
|
27 |
+
except openai.error.InvalidRequestError as e:
|
28 |
+
print(f"Error: {e}")
|
29 |
+
return None
|
30 |
+
return string
|
31 |
+
@classmethod
|
32 |
+
def use_openai_davinci_base(cls, prompt):
|
33 |
+
"""
|
34 |
+
Use OpenAI's GPT-3 model, Davinci, to generate text based on the given prompt
|
35 |
+
"""
|
36 |
+
openai.api_key = os.getenv('OPENAI_API_KEY')
|
37 |
+
try:
|
38 |
+
res = openai.Completion.create(
|
39 |
+
model="text-davinci-003",
|
40 |
+
prompt=prompt,
|
41 |
+
max_tokens=1024,
|
42 |
+
temperature=0.5
|
43 |
+
)
|
44 |
+
string = res.choices[0].text
|
45 |
+
except openai.error.InvalidRequestError as e:
|
46 |
+
print(f"Error: {e}")
|
47 |
+
return None
|
48 |
+
return string
|
49 |
+
|
50 |
+
class CalqOffer:
|
51 |
+
@classmethod
|
52 |
+
def generate_reply_mail_prompt(cls, offer):
|
53 |
+
prompt = f"""
|
54 |
+
{offer}の戦略について、
|
55 |
+
[前提条件]
|
56 |
+
5W1Hで整理(箇条書き)
|
57 |
+
[施策立案](3つ、箇条書き)
|
58 |
+
[優先度付け]
|
59 |
+
売上、コスト、実現可能性、実現までの期間の4つの軸で5段階評価(表形式)
|
60 |
+
* 「5段階評価」と書いておく
|
61 |
+
[根拠]
|
62 |
+
最上位の施策に関して、数字を推定しながら売上のフェルミ推定を行ってください。(ざっくりで良いから)
|
63 |
+
|
64 |
+
[計画立案]
|
65 |
+
最上位の施策において売上とコストの軸で1年ごとに3年分計画立案 (億円単位、表形式)
|
66 |
+
*単位は億円です。と書いておく
|
67 |
+
"""
|
68 |
+
print(prompt)
|
69 |
+
# return OpenAIUtils.use_openai_davinci_base(prompt)
|
70 |
+
return OpenAIUtils.use_openai_chatgpt_base(prompt)
|
71 |
+
|
72 |
+
def post_process_mail_reply(offer_reply):
|
73 |
+
remove_list = ["(箇条書き)"]
|
74 |
+
|
75 |
+
for item in remove_list:
|
76 |
+
offer_reply = offer_reply.replace(item, "")
|
77 |
+
|
78 |
+
offer_reply = offer_reply.replace("(3つ提案して)", "(3つ)")
|
79 |
+
return offer_reply
|
80 |
+
|
81 |
+
|
82 |
+
def greet(offer):
|
83 |
+
offer_reply = CalqOffer.generate_reply_mail_prompt(offer)
|
84 |
+
# print(offer_reply)
|
85 |
+
offer_reply = CalqOffer.post_process_mail_reply(offer_reply)
|
86 |
+
print(offer_reply)
|
87 |
+
return offer_reply
|
88 |
+
|
89 |
+
input_offer = gr.Textbox(label="解決したい事業課題を書いてください(例:タクシー配車アプリの今後)")
|
90 |
+
output_offer = gr.Textbox(label="戦略提案文章(最大1分ほどお待ちください)")
|
91 |
+
description="""
|
92 |
+
"""
|
93 |
+
|
94 |
+
|
95 |
+
article = """
|
96 |
+
<h5>注意事項</h5>
|
97 |
+
<p><small>*当商品は、GPT API[gpt-3.5-turbo]を利用した株式会社KandaQuantumが提供するGenAI(ジェネレーションAI)ソリューションです。</small></p>
|
98 |
+
<p><small>*本プロダクトに内蔵されるGPTのAPI提供元OpenAIはAPIを介してユーザーから送信されたデータをモデルのトレーニングや改善に使わないことを明示しました。</small></p>
|
99 |
+
<p><small>*当社のプライバシーポリシー次の通りです。 https://kandaquantum.com/privacypolicy</small></p>
|
100 |
+
<p><small>*等商品はhugging faceのSaas上に立ち上げられています。次のプライバシーポリシーに準拠します。https://huggingface.co/privacy</small></p>
|
101 |
+
<p><small>*当社は、製品の使用により発生したいかなる損害についても一切の責任を負いません。</small></p>
|
102 |
+
"""
|
103 |
+
|
104 |
+
iface = gr.Interface(
|
105 |
+
fn=greet,
|
106 |
+
inputs=[input_offer],
|
107 |
+
outputs=[output_offer],
|
108 |
+
title="戦略立案AI CalqBlitz",
|
109 |
+
description=description,
|
110 |
+
article=article
|
111 |
+
|
112 |
+
)
|
113 |
+
iface.launch()
|
requirements.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
openai==0.27.0
|