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()