通八洲科技

Python生成式AI教程_使用transformer模型生成文本

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

用 Python 和 Transformer 模型生成文本,核心是加载预训练模型、准备输入、调用生成接口——不需从头训练,Hugging Face 的 transformers 库让这件事变得非常直接。

安装依赖与加载基础模型

先确保安装了关键库:

选一个轻量又实用的开源模型,比如 distilgpt2(GPT-2 的精简版,速度快、显存友好):

from transformers import pipeline

generator = pipeline("text-generation", model="distilgpt2")

简单生成:给提示词,得续写结果

只需一行代码就能生成文本:

output = generator("今天天气不错,我想去", max_length=50, num_return_sequences=1)
print(output[0]["generated_text"])

进阶控制:手动 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)

本地部署小贴士

在消费级显卡(如 RTX 3060 12G)上跑 distilgpt2 完全没问题;若换更大模型(如 facebook/opt-1.3bgoogle/gemma-2b):

不复杂但容易忽略:生成质量高度依赖提示词(prompt)设计。一个清晰、带语境、有风格指示的开头,比调参更能提升结果可用性。