Dai1123 commited on
Commit
4507365
1 Parent(s): 94c43c5
Files changed (2) hide show
  1. app.py +115 -0
  2. requirements.txt +1 -0
app.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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, company, depart):
53
+ prompt = f"""
54
+ {offer}
55
+ 上記の内容をもとにして以下を必須項目として、求人票を作成してください(1000文字程度)。
56
+ 【法人名】:{company}
57
+ 【部門】:{depart}
58
+ 【求人票のタイトル案】
59
+ [落ち着いたタイトル案(3つ提案して)]
60
+ [ポップなタイトル案(3つ提案して)]
61
+ 【仕事内容】
62
+ 【必要なスキル・経験(箇条書き)】
63
+ 【歓迎するスキル・経験(箇条書き)】
64
+ 【給与】
65
+ 【勤務地】
66
+ 【雇用形態】
67
+ 【待遇】
68
+ """
69
+ print(prompt)
70
+ # return OpenAIUtils.use_openai_davinci_base(prompt)
71
+ return OpenAIUtils.use_openai_chatgpt_base(prompt)
72
+
73
+ def post_process_mail_reply(offer_reply):
74
+ remove_list = ["(箇条書き)"]
75
+
76
+ for item in remove_list:
77
+ offer_reply = offer_reply.replace(item, "")
78
+
79
+ offer_reply = offer_reply.replace("(3つ提案して)", "(3つ)")
80
+ return offer_reply
81
+
82
+
83
+ def greet(offer, company, depart):
84
+ offer_reply = CalqOffer.generate_reply_mail_prompt(offer, company, depart)
85
+ # print(offer_reply)
86
+ offer_reply = CalqOffer.post_process_mail_reply(offer_reply)
87
+ print(offer_reply)
88
+ return offer_reply
89
+
90
+ input_offer = gr.Textbox(label="採用したい人材の情報を列挙してください(例:マネージャー、年収500万円、東京)")
91
+ input_company = gr.Textbox(label="あなたの会社名(オプション)")
92
+ input_depart = gr.Textbox(label="部門(オプション)")
93
+ output_offer = gr.Textbox(label="求人票提案文章(最大1分ほどお待ちください)")
94
+ description="""
95
+ """
96
+
97
+
98
+ article = """
99
+ <h5>注意事項</h5>
100
+ <p><small>*当商品は、GPT API[gpt-3.5-turbo]を利用した株式会社KandaQuantumが提供するGenAI(ジェネレーションAI)ソリューションです。</small></p>
101
+ <p><small>*本プロダクトに内蔵されるGPTのAPI提供元OpenAIはAPIを介してユーザーから送信されたデータをモデルのトレーニングや改善に使わないことを明示しました。</small></p>
102
+ <p><small>*当社もデータ保持に関してOpenAIと同様の方針です(ユーザービリティ向上のため変更する可能性はございます)。</small></p>
103
+ <p><small>*当社は、製品の使用により発生したいかなる損害についても一切の責任を負いません。</small></p>
104
+ """
105
+
106
+ iface = gr.Interface(
107
+ fn=greet,
108
+ inputs=[input_offer, input_company, input_depart],
109
+ outputs=[output_offer],
110
+ title="求人票作成AI CalqOffer",
111
+ description=description,
112
+ article=article
113
+
114
+ )
115
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ openai==0.27.0