用模板加LLM API批量生成方案初稿,交付提速的实操做法
做自由职业或接单的人常遇到一类重复劳动:每个客户都要出一份结构相同、内容不同的方案或报告初稿。这类工作适合模板化:固定结构用Jinja2模板,个性化部分交给大模型生成,最后导出成Word。本文给出完整实现。 ## 模板先行:把结构固化下来 ``` # pip install jinja2 from jinja2 import Template PROPOSAL_TEMPLATE = Template(""" # {{ client_name }} 项目方案初稿 ## 需求理解 {{ requirement_summary }} ## 执行思路 {{ approach }} ## 周期与报价 {{ schedule_price }} """) ``` 模板只负责结构,三个变量由模型按客户背景填充。 ## 用模型生成个性化内容 ``` from openai import OpenAI client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.hunyuan.cloud.tencent.com/v1") def fill_section(client_info: str, section: str) -> str: prompt = ( f"客户背景:{client_info}\n" f"请为项目方案的「{section}」部分撰写内容,150字以内," "语气专业,不使用夸大词汇,不承诺确定结果。" ) resp = client.chat.completions.create( model="hunyuan-turbo", messages=[{"role": "user", "content": prompt}], temperature=0.4, # 交付物场景调低随机性,减少跑题 ) return resp.choices[0].message.content def build_proposal(client_info: str, client_name: str) -> str: return PROPOSAL_TEMPLATE.render( client_name=client_name, requirement_summary=fill_section(client_info, "需求理解"), approach=fill_section(client_info, "执行思路"), schedule_price=fill_section(client_info, "周期与报价"), ) ``` `temperature`调到0.4是交付场景的经验值:太高容易发挥过度,太低又容易千篇一律,0.3到0.5之间通常比较合适。 ## 导出Word交付 ``` # pip install python-docx from docx import Document def export_docx(markdown_text: str, path: str): doc = Document() for line in markdown_text.strip().split("\n"): if line.startswith("# "): doc.add_heading(line[2:], level=1) elif line.startswith("## "): doc.add_heading(line[3:], level=2) elif line.strip(): doc.add_paragraph(line.strip()) doc.save(path) text = build_proposal("一家本地餐饮连锁,想做短视频获客,预算有限", "某餐饮品牌") export_docx(text, "proposal.docx") ``` ## 量产时的两个注意点 批量调用要加间隔和重试,避免触发限流(第五篇会详细讲重试写法)。更重要的是,生成结果必须人工过一遍再发客户:模型对客户行业的理解可能出错,初稿的价值是省掉"从空白页开始"的时间,而不是替代专业判断。