Python 新手入门,用 AI 写个自动诗歌生成器

环境准备:让 Python ready for AI

在动手写代码之前,我们需要先搭好"舞台"。对于零基础的朋友来说,这一步其实非常简单,只需要确保你的电脑里安装了 Python,并准备好两个关键的"工具包"。

首先,请确认你已安装 Python 3.8 或更高版本。安装时务必勾选"Add Python to PATH",这样才能在命令行中直接调用它。安装完成后,打开终端(Windows 下是 cmd 或 PowerShell,Mac 下是终端),输入 python --version,如果能看到版本号,说明基础环境没问题。

接下来,我们需要安装两个核心库:

  • requests:它是 Python 中的"快递员",负责向大模型 API 发送请求并取回结果。
  • python-dotenv:它是你的"保险箱",用来安全地存储 API 密钥,避免将其硬编码在代码中泄露。

在终端中执行以下命令即可一键安装:

bash 复制代码
pip install requests python-dotenv

配置密钥:拿到通往 AI 世界的"钥匙"

要调用大模型,你需要一把"钥匙",也就是 API Key。这就好比你要使用外卖服务,必须先注册账号并获取令牌。

目前市面上有许多大模型提供商(如 OpenAI、月之暗面、阿里云等),注册流程大同小异。以通用的流程为例:

  1. 登录大模型平台的控制台。
  2. 找到"API Keys"管理页面,点击创建新的密钥。
  3. 复制生成的密钥(通常是一串长字符,如 sk-...)。

重要提示 :千万不要把这串字符直接写在代码文件里上传到 GitHub 或其他公开平台!最安全的做法是创建一个名为 .env 的文件,放在你的项目文件夹根目录下,内容如下:

text 复制代码
OPENAI_API_KEY=sk-你的真实密钥在这里

这样,我们的代码就可以通过读取这个文件来获取密钥,既方便又安全。

核心实战:5 分钟构建自动诗歌生成器

环境就绪,密钥在手,现在我们来完成今天的核心任务:编写一个能根据主题自动生成五言绝句的 Python 脚本。我们将把这个文件命名为 poem_generator.py

1. 导入模块与加载配置

首先,我们需要告诉 Python 要用哪些工具,并把刚才存好的密钥读出来。

python 复制代码
import os
import requests
from dotenv import load_dotenv

# 加载 .env 文件中的环境变量
load_dotenv()

# 获取 API 密钥
api_key = os.getenv("OPENAI_API_KEY")

if not api_key:
    raise ValueError("未找到 API 密钥,请检查 .env 文件配置")

这段代码做了两件事:一是引入必要的库,二是从环境变量中安全地提取密钥。如果没找到密钥,程序会立即报错提醒,避免后续无效运行。

2. 构造 Prompt:给 AI 下达精准指令

与大模型交互的核心在于 Prompt(提示词)。你可以把它理解为给 AI 的"任务说明书"。说明书写得越清晰,AI 生成的内容就越符合预期。

针对"写一首五言绝句"的需求,我们可以这样设计 Prompt:

python 复制代码
def build_prompt(topic):
    return f"""
    你是一位精通中国古典文学的诗人,擅长创作五言绝句。
    请以"{topic}"为主题,创作一首诗。
    要求:
    1. 严格遵循五言绝句格式(四句,每句五个字)。
    2. 押韵自然,意境优美。
    3. 只输出诗歌内容,不要包含标题或额外解释。
    """

这里我们运用了几个技巧:角色设定 (精通古典文学的诗人)、具体约束 (五言、押韵、无废话)以及变量插入{topic})。这种结构能让大模型迅速进入状态,输出高质量内容。

3. 发送请求与解析响应

这是整个流程中最具技术含量的部分。我们需要使用 requests 库向 API 接口发送 HTTP POST 请求,并将用户的 Prompt 包装成 JSON 格式。

python 复制代码
def generate_poem(topic):
    url = "https://api.openai.com/v1/chat/completions"  # 此处以通用接口为例,不同厂商地址可能不同
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    
    payload = {
        "model": "gpt-3.5-turbo",  # 选择模型,也可替换为其他兼容模型
        "messages": [
            {"role": "user", "content": build_prompt(topic)}
        ],
        "temperature": 0.7  # 控制创造性,0.7 是一个平衡点
    }

    try:
        response = requests.post(url, headers=headers, json=payload, timeout=10)
        response.raise_for_status()  # 如果状态码不是 200,抛出异常
        
        # 解析 JSON 响应
        result = response.json()
        poem_content = result["choices"][0]["message"]["content"]
        return poem_content.strip()
        
    except requests.exceptions.RequestException as e:
        return f"请求失败:{e}"

这段代码逻辑非常清晰:

  • 构建请求头:带上身份认证信息。
  • 构建载荷(Payload) :指定模型、传入消息列表。注意 messages 是一个列表,即使只有单轮对话也要遵循此格式。
  • 发送与处理 :使用 post 方法发送请求,并用 raise_for_status() 确保网络通畅。
  • 提取数据 :大模型返回的是复杂的 JSON 对象,我们需要层层深入,找到 choices -> message -> content 这条路径,那里才是我们要的诗句。

4. 运行与测试

最后,我们把所有部分组装起来,添加一个简单的用户交互入口:

python 复制代码
if __name__ == "__main__":
    print("🤖 欢迎使用 AI 诗歌生成器!")
    user_topic = input("请输入一个主题(例如:春天、月亮、离别):")
    
    if user_topic:
        print("\n正在构思诗句...\n")
        poem = generate_poem(user_topic)
        print(f"【{user_topic}】\n{poem}")
    else:
        print("未输入主题,程序退出。")

保存文件后,在终端运行 python poem_generator.py。当你输入"春天"时,几秒内你就能看到类似这样的输出:

春晨晓露润桃枝,

燕语莺啼入画池。

最是一年好光景,

东风拂柳惹相思。

理解背后的工作流

通过这个小小的诗歌生成器,你已经掌握了 AI 原生应用开发的最基本范式:输入 -> 构造 Prompt -> 调用 API -> 解析 JSON -> 输出

在这个过程中,Python 扮演了"胶水语言"的角色,它不需要懂如何写诗,只需要负责把用户的需求翻译成大模型能听懂的指令,然后把大模型的回复整理好展示给用户。requests 库处理了复杂的网络通信细节,而 JSON 格式则确保了数据交换的标准化。

对于初学者而言,不必一开始就纠结于深度学习算法的原理或神经网络的架构。利用现有的大模型 API,结合简单的 Python 脚本,就能快速构建出具有实际价值的应用。无论是写诗、生成文案,还是未来的多轮对话机器人,其核心逻辑都是一脉相承的。现在,你可以尝试修改 Prompt 中的要求,比如让 AI 写一首"现代诗"或者"藏头诗",看看会发生什么有趣的变化。