CalqBlitz / app.py
Dai1123's picture
Update app.py
21b73a9
raw
history blame contribute delete
No virus
3.73 kB
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": "あなたは戦略コンサルタントです。文字数は1000文字に収めること"},
# {"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, offer):
prompt = f"""
{offer}の戦略について、
[前提条件]
5W1Hで整理(箇条書き)
[施策立案](3つ、箇条書き)
[優先度付け]
売上、コスト、実現可能性、実現までの期間の4つの軸で5段階評価(表形式)
* 「5段階評価」と書いておく
[根拠]
最上位の施策に関して、数字を推定しながら売上のフェルミ推定を行ってください。
・結論ファースト、端的に数字のみ
・根拠となるロジックツリーを図示して数字も記載すること
・必要に応じて大学レベルの数式を用いて良い。(小学生でもわかるように補足すること)
[計画立案]
最上位の施策において売上とコストの軸で1年ごとに3年分計画立案 (億円単位、表形式)
*単位は億円です。と書いておく
"""
# 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(offer):
offer_reply = CalqOffer.generate_reply_mail_prompt(offer)
# print(offer_reply)
offer_reply = CalqOffer.post_process_mail_reply(offer_reply)
# print(offer_reply)
return offer_reply
input_offer = gr.Textbox(label="解決したい事業課題を書いてください(例:タクシー配車アプリの今後)")
output_offer = gr.Textbox(label="戦略提案文章(最大1分ほどお待ちください)")
description="""
"""
article = """
"""
iface = gr.Interface(
fn=greet,
inputs=[input_offer],
outputs=[output_offer],
title="",
description=description,
article=article
)
iface.launch()