| import os, gradio as gr | |
| from openai import OpenAI | |
| OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] | |
| MODEL = os.environ.get("OPENAI_MODEL", "gpt-4o-mini") | |
| client = OpenAI(api_key=OPENAI_API_KEY) | |
| SYSTEM = "あなたは一流のB2B営業コピーライターです。日本語で、簡潔・丁寧に。" | |
| TEMPLATE = """業界:{industry} | |
| 相手企業:{company} | |
| 担当者:{persona} | |
| 課題:{pains} | |
| 価値:{value} | |
| 製品:{product} | |
| CTA:{cta} | |
| トーン:{tone} | |
| # 出力 | |
| 件名: | |
| 本文:""" | |
| def generate(industry, company, persona, pains, value, product, cta, tone): | |
| user = TEMPLATE.format( | |
| industry=industry, company=company, persona=persona, | |
| pains=pains, value=value, product=product, cta=cta, tone=tone | |
| ) | |
| resp = client.chat.completions.create( | |
| model=MODEL, | |
| messages=[{"role":"system","content":SYSTEM},{"role":"user","content":user}], | |
| temperature=0.6 | |
| ) | |
| text = resp.choices[0].message.content | |
| return text | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 営業メールジェネレーター(デモ)") | |
| with gr.Row(): | |
| industry = gr.Textbox(label="業界", value="ITサービス") | |
| company = gr.Textbox(label="相手企業", value="株式会社○○") | |
| with gr.Row(): | |
| persona = gr.Textbox(label="担当者", value="情報システム部の部長") | |
| product = gr.Textbox(label="製品", value="Aroundabout Suite") | |
| pains = gr.Textbox(label="課題", value="SaaS乱立によるコスト・運用負荷増大", lines=2) | |
| value = gr.Textbox(label="提供価値", value="運用統合と可視化によりTCOを30%削減", lines=2) | |
| cta = gr.Textbox(label="CTA", value="15分のオンライン面談をご提案") | |
| tone = gr.Textbox(label="トーン", value="フォーマルで簡潔") | |
| out = gr.Textbox(label="出力", lines=12) | |
| btn = gr.Button("生成") | |
| btn.click(generate, [industry, company, persona, pains, value, product, cta, tone], out) | |
| demo.launch() | |