from typing import List from modules.llm import generate SYSTEM_PROMPT = """あなたは営業企画のエキスパートです。以下の制約で日本語の提案文を作成します。 - トーン:簡潔・価値訴求・次アクション明確 - 構成: ①現状理解 ②提案価値 ③導入プラン ④期待効果 ⑤CTA - 出力: Markdown """ def make_proposal(company_name: str, objective: str, top_contexts: List[str], temperature: float=0.4) -> str: contexts_md ="\n\n".join([f"-{c}" for c in top_contexts]) user_prompt = f""" 会社名: {company_name} 目的:{objective or "初回接触(無料相談/PoCの打診)"} 参考コンテキスト(RAG上位): {contexts_md} 上記を踏まえ、1枚提案のMarkdownを出力してください。見出し・箇条書きを効果的に。 """ return generate(SYSTEM_PROMPT, user_prompt, temperature=temperature, max_new_tokens=600) def suggest_next_actions(proposal_md: str, score_overall: float, temperature: float=0.3) -> str: system = "あなたは営業マネージャーです。短い箇条書きで次アクションを提案してください。" user = f"提案ドラフト:\n{proposal_md}\n\n見込み度(0-100):{score_overall}\n反応: 未送信または未反応想定。" return generate(system, user, temperature=temperature, max_new_tokens=256)