当前位置: 首页 > news >正文

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 密钥,避免将其硬编码在代码中泄露。

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

pipinstallrequests python-dotenv

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

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

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

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

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

OPENAI_API_KEY=sk-你的真实密钥在这里

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

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

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

1. 导入模块与加载配置

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

importosimportrequestsfromdotenvimportload_dotenv# 加载 .env 文件中的环境变量load_dotenv()# 获取 API 密钥api_key=os.getenv("OPENAI_API_KEY")ifnotapi_key:raiseValueError("未找到 API 密钥,请检查 .env 文件配置")

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

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

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

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

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

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

3. 发送请求与解析响应

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

defgenerate_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"]returnpoem_content.strip()exceptrequests.exceptions.RequestExceptionase:returnf"请求失败:{e}"

这段代码逻辑非常清晰:

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

4. 运行与测试

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

if__name__=="__main__":print("🤖 欢迎使用 AI 诗歌生成器!")user_topic=input("请输入一个主题(例如:春天、月亮、离别):")ifuser_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 写一首“现代诗”或者“藏头诗”,看看会发生什么有趣的变化。

http://www.cnnetsun.cn/news/2609912.html

相关文章:

  • rtx3060把一个10个中等零件组成的装配体变成点云要多久
  • 信号处理避坑指南:当你的Welch法谱估计分辨率上不去,问题可能出在这几个参数上
  • CC Debugger在Keil μVision中的配置与调试技巧
  • 开发者速围观!Android 17 适配关键全解读丨OTalk 直播回顾
  • PyCharm 2024.1 新UI搭配 Anaconda 2024.02:从安装到创建第一个AI项目的完整流程
  • 腾讯会议共享PPT时,如何偷偷看备注?用这个隐藏技巧,演讲者模式秒开启
  • 别再满屏找配置文件了!Windows 11下DOSBox窗口大小调整保姆级教程(含隐藏文件夹显示)
  • Win10家庭版也能用组策略!保姆级DISM命令安装gpedit.msc教程(附一键脚本)
  • 别再满盘找nvidia-smi了!Win10下CUDA 11.0+的GPU监控工具藏在这儿
  • 别再浪费钢网了!嘉立创/捷配下单时,这个关于Mark点的勾选项你注意了吗?
  • 别再只看准确率了!用Python手把手教你计算混淆矩阵、精准率和召回率(附完整代码)
  • Ubuntu 装英伟达显卡驱动
  • OpenMV串口数据收发的那些坑:解码错误、数据丢失?手把手教你调试与避雷
  • 拆开家里坏掉的LED灯,发现厂家用这个‘发热电阻’故意缩短寿命,教你一招搞定
  • 新手别乱买!保姆级盘点:FPV穿越机遥控器/接收机品牌怎么选(从乐迪到黑羊)
  • Outfit字体终极指南:为什么这款开源几何无衬线字体值得你立即使用?
  • Java AI Agent内存架构:分层模型、检索优化与生产实践
  • GR-RL 具身强化学习框架 内部未公开原始技术密档(接续续篇·纯工业裸数据)
  • GD32单片机环境搭建避坑实录:从Keil 5安装到固件库配置,我踩过的雷你别踩
  • 避坑指南:CentOS 7.6下bond模式从1改到4,为什么网络服务重启后不生效?
  • 别再手动改稿了!ChatGPT抖音脚本自动化流水线(含自动分镜/口型同步/违禁词实时拦截模块)
  • 告别环境噩梦:基于Docker与VSCode的gem5-GCN3 GPU模拟器一站式开发指南
  • intel 有没有挖台积电的墙角 ,否则怎么突然行了呢
  • SAP EWM - 存储类型配置精解:从参数定义到仓储效率优化
  • Docker 从 0 到 1 再到 Kubernetes 实战:第4篇 编写你的第一个 Dockerfile
  • 从DK117E-G4开发板硬件图到STM32G431代码:手把手教你点亮第一个LED
  • “以旧换新”政策下,东北不锈钢水箱产业迎来2026-2030黄金发展期
  • 别再只用KNN了!用Python手写LOF算法,实战识别信用卡欺诈与异常用户
  • 多级重叠Schwarz预处理技术在CFD中的应用与优化
  • UE4玻璃和水面材质实战:从折射率到光照模式,手把手调出真实半透明效果