找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2697

积分

0

好友

353

主题
发表于 4 天前 | 查看: 23| 回复: 0

封面

导读:本文将与大家一起学习在几分钟内使用 Python 和 OpenAI 的 API 构建一个简单的聊天机器人,并提供初学者可直接运行的源代码示例。

插图

此时此刻,我对 ChatGPT 的存在,反而感到心安。

但它刚推出时,我确实有过一阵恐惧:它会不会让很多写作者、内容岗位失去价值?这种担忧并不罕见。多年以后再回头看,我依然在工作,而且我更愿意把 ChatGPT 当成真正的盟友。

为什么要说这些?因为“理解”是合作的第一步。与 AI 协作是一项很实用的技能,它不只是会在 ChatGPT 页面里提问,更关键的是:你能否把它接入自己的代码、自己的工作流,并让它在你的业务场景里跑起来。

学习如何与大语言模型一起写代码,是把 GPT 能力真正用起来的下一步。

本教程面向初学者,目标很明确:让你理解 ChatGPT API 的调用方式、响应结构以及如何维护一段持续对话。它不会直接带你搭建复杂应用,但会把最核心的“第一公里”打通。

本文会用 Jupyter Notebook 来演示,跟着复制粘贴即可。


OpenAI 入门准备

请先在 https://platform.openai.com 注册并登录。

OpenAI 平台界面

登录成功后:

  1. 进入 API 仪表板(Dashboard)
  2. 打开 API Keys 页面,点击“创建新密钥(Create new secret key)”
  3. 创建后立刻复制保存:该密钥通常只展示一次,后续无法再次查看

接下来添加账单信息:

  • OpenAI 可能提供免费试用,但不少情况下需要绑定支付方式才可正常调用
  • 例如充值 10 美元的额度,通常足够你试用 GPT-3.5

注意:你需要免费试用额度或有效计费,才能使用 GPT-3.5。


使用 ChatGPT-3.5 构建聊天机器人(Jupyter Notebook)

1)安装依赖

将以下命令粘贴到 Notebook 的第一个单元执行:

!pip install openai python-dotenv --quiet
  • openai:用于与 OpenAI 模型(如 GPT-3.5)交互
  • python-dotenv:用于安全管理 API Key 等敏感信息,从 .env 文件加载到环境变量中(避免把密钥硬编码到代码里)

2)导入模块

使用以下代码导入 openaiosdotenv

import openai
import os
from dotenv import load_dotenv

3)加载 API 密钥(写入 .env 并读取)

确保你已经在 OpenAI 控制台创建了 API Key。接下来我们创建一个 .env 文件来保存它:

api_key = "sk-proj-api-key-here"
# Save the key to a .env file
with open(".env", "w") as f:
    f.write(f"OPENAI_API_KEY={api_key}")
print(".env file created.")

把你真实的 API Key 粘贴到 sk-proj-api-key-here 位置。然后将密钥加载到当前环境:

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

到这里,你已经完成了最关键的鉴权准备。很多新手卡住的点,往往就出在“Key 放哪、怎么读、怎么不泄露”这一步。

如果你想系统补齐 Python 环境、虚拟环境与依赖管理等基础,也可以先把这些点梳理清楚,再继续往下做。


4)定义聊天机器人函数(封装 Chat Completions 调用)

下面我们定义机器人如何与 OpenAI API 通信,并把模型的回复提取成可用文本:

def chat_with_gpt(messages):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=0.7,
    )
    return response.choices[0].message.content
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello, who are you?"}
]

这里的 openai.chat.completions.create() 是专为对话交互设计的 API 调用方式:你发送一个 messages 列表,模型会结合历史上下文返回更相关的响应。

messages 的结构
列表中的每条消息都有 role 字段,用来标识“谁在说话”:

  • "user":用户输入
  • "assistant":模型回复
  • "system":系统指令(可选,用于设定行为、风格、边界等)

temperature 是什么?
temperature 控制回复的随机性/创造性,取值范围通常在 0 到 1:

  • 0:更稳定、更可预测(适合严谨问答、结构化输出)
  • 1:更发散、更有创造性(适合脑暴、写作灵感)

本文用 0.7,属于比较常见的平衡值。

如何拿到模型输出?
API 会返回一个响应对象,我们用 response.choices[0].message.content 提取真正的文本回复。


5)运行聊天循环(让对话“持续”起来)

现在让机器人进入交互式循环,支持连续对话,直到用户退出:

while True:
    user_input = input("You: ")
    if user_input.lower() in ["exit", "quit"]:
        print("Goodbye!")
        break
    messages.append({"role": "user", "content": user_input})
    reply = chat_with_gpt(messages)
    messages.append({"role": "assistant", "content": reply})
    print(f"Assistant: {reply}")

这一段做了三件关键的事:

  1. 持续读取用户输入:通过 input() 接收对话内容
  2. 维护对话历史:每次把 user/assistant 的消息都 appendmessages
  3. 把上下文带给模型:下一次请求时仍然传入完整 messages,模型就能“参考之前说过什么”

为什么要维护历史?
因为这会显著提升对话的连贯性:模型不是只回答“当前这一句”,而是在“已知前文”的前提下做出更贴近上下文的回应。


与机器人“交朋友”:你已经完成了第一步

现在你已经跑通了一个最小可用的 GPT-3.5 聊天机器人,并掌握了三件事:

  • 如何完成 OpenAI API 的鉴权与密钥管理(.env + 环境变量)
  • 如何用 messages 维护上下文,实现连续对话
  • 如何在 Jupyter Notebook 中快速测试、迭代你的对话逻辑

这当然只是开端。下一步你可以思考:要不要加上日志?要不要把对话存数据库?要不要接一个 Web UI 或命令行参数?当你开始提出这些问题,你就已经在“把能力做成产品”的路上了。

更多相关教程与资料,也可以在云栈社区的技术文档板块继续延伸阅读与检索。




上一篇:Python实战指南:智能匹配行业与概念ETF的三种算法方法对比
下一篇:掌握JsonPath:像查询XML一样轻松读写JSON数据
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 01:46 , Processed in 0.454098 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表