用Python和Transformer生成文本的核心是加载预训练模型、准备输入、调用generate接口;借助Hugging Face的transformers库,可快速通过pipeline或手动tokenizer+model实现生成,并支持temperature、top_k等参数调控及bad_words_ids等进阶控制。

用 Python 和 Transformer 模型生成文本,核心是加载预训练模型、准备输入、调用生成接口——不需从头训练,Hugging Face 的 transformers 库让这件事变得非常直接。
安装依赖与加载基础模型
先确保安装了关键库:
-
pip install transformers torch(PyTorch 是默认后端) - 推荐加装
accelerate以支持显存优化和多卡推理
选一个轻量又实用的开源模型,比如 distilgpt2(GPT-2 的精简版,速度快、显存友好):
from transformers import pipeline
generator = pipeline("text-generation", model="distilgpt2")
简单生成:给提示词,得续写结果
只需一行代码就能生成文本:
立即学习“Python免费学习笔记(深入)”;
培训招生教育类网站模板(响应式)安装即用,自带人人站CMS内核,支持响应式,前端banner轮播图文本均已进行可视化配置,伪静态页面生成,支持内容模型、多语言、自定义表单、筛选、多条件搜索等功能,支持多种URL模式及模型。模板特点:1、安装即用,自带人人站CMS内核及企业站展示功能(产品,新闻,案例展示等),并可根据需要增加表单 搜索等功能(自带模板) 2、支持响应式 3、前端banner轮播图文
output = generator("今天天气不错,我想去", max_length=50, num_return_sequences=1)
print(output[0]["generated_text"])
-
max_length控制总长度(含输入),不是只生成多少字 -
num_return_sequences=3可一次返回多个不同版本,便于对比选择 - 若想控制“创造性”,可调整
temperature=0.7(越低越保守,越高越随机)或启用top_k=50/top_p=0.9进行采样过滤
进阶控制:手动 tokenizer + model 调用
当需要更精细干预(如禁止某些词、添加前缀、控制停止符),建议绕过 pipeline,直接操作模型:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilgpt2")
input_text = "Python 中列表推导式的语法是"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output_ids = model.generate(
input_ids,
max_new_tokens=64,
do_sample=True,
temperature=0.85,
pad_token_id=tokenizer.eos_token_id
)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
-
max_new_tokens更直观:只限制新生成的 token 数量 -
pad_token_id设为 eos_token_id 可避免警告,尤其在 batch 推理时必要 - 如需禁止生成特定词(如“错误”、“bug”),可用
bad_words_ids参数传入 token ID 列表
本地部署小贴士
在消费级显卡(如 RTX 3060 12G)上跑 distilgpt2 完全没问题;若换更大模型(如 facebook/opt-1.3b 或 google/gemma-2b):
- 加
device_map="auto"让 accelerate 自动分配显存 - 用
load_in_4bit=True加载量化模型,显存占用直降 60%+ - 中文任务优先选专为中文微调的模型,如
uer/roberta-base-finetuned-jd-binary-chinese(分类)或IDEA-CCNL/Ziya-LLaMA-13B-v1(生成),别硬套英文模型
不复杂但容易忽略:生成质量高度依赖提示词(prompt)设计。一个清晰、带语境、有风格指示的开头,比调参更能提升结果可用性。









