
直接输入“帮我写一篇关于大模型知识管理的专业文章”,模型往往会出现以下问题:
专业写作的关键不是“一次生成”,而是把写作拆成可验证的步骤。推荐四阶段流水线:
一个可用的专业写作提示词应包含六类信息:
要素 | 说明 |
|---|---|
角色 | 资深行业研究员、技术编辑、审校专家 |
任务 | 生成提纲、撰写章节、润色全文 |
上下文 | 主题、读者、字数、行业背景 |
约束 | 不编造数据、不虚构文献、标明需核实内容 |
格式 | Markdown、JSON、三级标题、代码块 |
示例 | 给出期望的输出结构,降低格式错误 |
例如,提纲阶段要求模型只输出 JSON:
{
"title": "文章标题",
"abstract": "摘要",
"sections": [
{"heading": "一级标题", "points": ["要点1", "要点2"]}
]
}程序解析 JSON 后,再逐节调用模型。这样比一次性生成全文更稳定,也更容易定位问题。
以下代码使用 OpenAI 兼容 API,也可接入 Ollama、vLLM、DeepSeek、通义千问等兼容接口。请先安装:
pip install -U openai代码文件:article_generator.py
import os
import json
import datetime
from openai import OpenAI
# ========== 配置 ==========
API_KEY = os.getenv("OPENAI_API_KEY")
BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini")
if not API_KEY:
raise SystemExit(
"请先设置环境变量 OPENAI_API_KEY。\n"
"如使用 Ollama,可设为:export OPENAI_API_KEY=ollama"
)
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
def chat(messages, temperature=0.6, max_tokens=4000):
"""统一模型调用入口。"""
resp = client.chat.completions.create(
model=MODEL,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
)
return resp.choices[0].message.content.strip()
def extract_json(text):
"""从模型输出中提取 JSON,增强鲁棒性。"""
start = text.find("{")
end = text.rfind("}")
if start == -1 or end == -1:
raise ValueError(f"未找到 JSON:{text[:300]}")
return json.loads(text[start:end + 1])
def build_outline(topic, audience, length, requirements):
"""第一阶段:生成结构化提纲。"""
system = (
"你是一位资深行业研究员和编辑,擅长将复杂主题拆解为逻辑严密的专业文章提纲。"
"你只输出 JSON,不输出解释。"
)
user = f"""请为以下文章生成提纲。
主题:{topic}
目标读者:{audience}
预计字数:{length}
额外要求:{requirements}
返回 JSON,格式如下:
{{
"title": "文章标题",
"abstract": "200字以内摘要",
"sections": [
{{"heading": "一级标题", "points": ["要点1", "要点2", "要点3"]}}
]
}}
"""
raw = chat(
[
{"role": "system", "content": system},
{"role": "user", "content": user},
],
temperature=0.3,
)
return extract_json(raw)
def write_section(article_title, heading, points, audience, tone):
"""第二阶段:逐节扩写。"""
system = (
"你是一位专业作者,写作严谨、结构清晰、避免空话。"
"不得编造具体数据、文献或政策条款;无法确认时写“示例”或“需核实”。"
)
user = f"""请撰写文章《{article_title}》中的一节。
本节标题:{heading}
必须覆盖的要点:{points}
目标读者:{audience}
语气风格:{tone}
要求:
1. 使用 Markdown 格式;
2. 600-1000 字;
3. 至少包含一个可操作建议、流程或代码示例;
4. 不要重复文章标题;
5. 不要虚构参考文献。
"""
return chat(
[
{"role": "system", "content": system},
{"role": "user", "content": user},
],
temperature=0.7,
)
def polish_article(draft):
"""第三阶段:审校与润色。"""
system = (
"你是一位资深编辑,负责事实风险检查、逻辑优化与语言润色。"
"保留 Markdown 结构。"
)
user = f"""请审校以下文章:
1. 删除重复和空泛表述;
2. 标出需要人工核实的事实性陈述;
3. 统一术语和语气;
4. 保持原意,不添加虚构引用。
文章:
{draft}
"""
return chat(
[
{"role": "system", "content": system},
{"role": "user", "content": user},
],
temperature=0.2,
)
def generate_article(
topic,
audience="专业人士",
length=2000,
tone="严谨、客观、可操作",
requirements="无",
):
"""端到端生成文章。"""
outline = build_outline(topic, audience, length, requirements)
parts = [
f"# {outline['title']}\n",
f"> 摘要:{outline['abstract']}\n",
]
for sec in outline["sections"]:
heading = sec["heading"]
points = ";".join(sec.get("points", []))
parts.append(f"## {heading}\n")
parts.append(
write_section(
article_title=outline["title"],
heading=heading,
points=points,
audience=audience,
tone=tone,
)
)
draft = "\n\n".join(parts)
final = polish_article(draft)
return final
if __name__ == "__main__":
article = generate_article(
topic="企业如何构建大模型驱动的知识管理系统",
audience="企业 CTO、IT 负责人与知识管理从业者",
length=2000,
requirements="包含架构、实施步骤、代码片段、风险与合规",
)
filename = f"article_{datetime.datetime.now():%Y%m%d_%H%M%S}.md"
with open(filename, "w", encoding="utf-8") as f:
f.write(article)
print(article)
print(f"\n已保存:{filename}")export OPENAI_API_KEY="你的密钥"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export OPENAI_MODEL="gpt-4o-mini"
python article_generator.py
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_MODEL=qwen2.5:7b
python article_generator.py如果接口报 max_tokens 参数错误,可将代码中的 max_tokens 改为 max_completion_tokens,具体以模型服务商文档为准。
代码能提升效率,但不能替代责任。正式发布前应执行:
AI 生成专业文章的最佳实践,不是追求“一键出稿”,而是构建可复用的写作流水线:结构化提纲、分节生成、自动审校、人工终审。本文给出的代码可以直接运行,也可以替换模型、提示词和输出模板,接入企业内部知识库、CMS 或文档系统。真正决定文章质量的,仍然是清晰的写作目标、可靠的知识来源和严格的人工把关。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。