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