import os import gradio as gr import openai class OpenAIUtils: @classmethod def use_openai_chatgpt_base(cls, prompt): """ Use OpenAI's GPT-3 model, Davinci, to generate text based on the given prompt """ openai.api_key = os.getenv('OPENAI_API_KEY') # print("prompt") # print(prompt) try: res = openai.ChatCompletion.create( # res = openai.Completion.create( # model="gpt-3.5-turbo", model="gpt-4", messages=[ {"role": "system", "content": "あなたは企業の採用担当です"}, # {"role": "user", "content": prompt}, {"role": "user", "content": f"{prompt}"}, ] ) string = res.choices[0]['message']['content'] except openai.error.InvalidRequestError as e: print(f"Error: {e}") return None return string @classmethod def use_openai_davinci_base(cls, prompt): """ Use OpenAI's GPT-3 model, Davinci, to generate text based on the given prompt """ openai.api_key = os.getenv('OPENAI_API_KEY') try: res = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=1024, temperature=0.5 ) string = res.choices[0].text except openai.error.InvalidRequestError as e: print(f"Error: {e}") return None return string class CalqOffer: @classmethod def generate_reply_mail_prompt(cls, pr, personal_info, school, company, certification, lang, hobby): # print('personal_info', personal_info) # print('school', school) # print('company', company) # print('certification', certification) from datetime import date today = date.today() prompt = f""" 以下を元に履歴書を書いてください。年月は{today}から逆算して類推して適当に埋めて 氏名、生年月日、性別、住所、電話番号、メールアドレスは{personal_info}をいかに埋めてください 氏名 生年月日 性別 住所 電話番号 メールアドレス 学歴 (古いものから順に) {school}  学校名  期間 職歴 (古いものから順に) {company}  会社名  期間 資格・免許 {certification}  取得年月 語学力 {lang} 趣味・特技 {hobby} 自己PR(700文字){pr}  強み、実績、今後貴社で実現したいことの順に """ # print(prompt) # return OpenAIUtils.use_openai_davinci_base(prompt) return OpenAIUtils.use_openai_chatgpt_base(prompt) def post_process_mail_reply(offer_reply): remove_list = ["(箇条書き)"] for item in remove_list: offer_reply = offer_reply.replace(item, "") offer_reply = offer_reply.replace("(3つ提案して)", "(3つ)") return offer_reply def greet(pr, personal_info, school, company, certification, lang, hobby): offer_reply = CalqOffer.generate_reply_mail_prompt(pr, personal_info, school, company, certification, lang, hobby) # print(offer_reply) offer_reply = CalqOffer.post_process_mail_reply(offer_reply) # print(offer_reply) return offer_reply input_pr = gr.Textbox(label="自己PRを列挙してください(例:野球部キャプテン、リーダー経験あり、明るい、営業実績会社No1)") input_personal_info = gr.Textbox(label="氏名、生年月日、性別、住所、電話番号、メールアドレスの順に記載ください") input_school = gr.Textbox(label="古い方から高校以降の学校全てを記載してください(例:ABC高校、ABC大学") input_company = gr.Textbox(label="古い方から順にこれまで所属した会社名全て(例:ABC商事、ABCホールディングス)") input_certification = gr.Textbox(label="お持ちの資格や免許を全て書いてください") input_lang = gr.Textbox(label="語学スキルを書いてください") input_hobby = gr.Textbox(label="趣味・特技を書いてください") output_resume = gr.Textbox(label="求人票提案文章(最大1分ほどお待ちください)") description=""" """ article = """ """ iface = gr.Interface( fn=greet, inputs=[input_pr, input_personal_info, input_school, input_company, input_certification, input_lang, input_hobby], outputs=[output_resume], title="", description=description, article=article ) iface.launch()