AI聊天机器人配置:用Python脚本和API密钥快速搭建
如果你想配置一个能对话的AI聊天机器人,最直接的方式是用Python脚本调用大模型API,而不是从零开发框架。
下面从环境准备到验证回复,给出可执行的步骤。
准备条件:API密钥和Python环境
开始前需要两样东西:一个可用的大模型API密钥(以OpenAI为例),以及Python 3.8以上版本的服务器或本地电脑。
如果还没有密钥,去对应平台的控制台创建,注意不要将密钥直接写在代码里,建议用环境变量保存。
在服务器上设置环境变量(Linux/macOS):
export OPENAI_API_KEY="你的密钥"
Windows命令行用set OPENAI_API_KEY=你的密钥。
为了让变量永久生效,可以写入~/.bashrc或系统环境变量。
接着安装官方SDK:
pip install openai
如果网络较慢,可以临时换用国内镜像源,例如pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple。
编写基础对话脚本
新建一个chatbot.py文件,写入以下代码。
这段代码会保持一个消息列表,每次将用户输入追加进去,调用模型后把回复也加入列表,从而实现多轮对话。
import os
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
messages = [
{"role": "system", "content": "你是一个乐于助人的助手。"}
]
while True:
user_input = input("你:")
if user_input.lower() in ["exit", "quit"]:
break
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.7
)
reply = response.choices[0].message.content
print("机器人:", reply)
messages.append({"role": "assistant", "content": reply})
运行python chatbot.py,在终端输入问题就能看到回复。注意:模型名称gpt-3.5-turbo可能随平台更新变化,请以你所用平台文档为准,不要照搬过时名称。
避免上下文过长和密钥泄露
上面的脚本会一直累积消息,对话轮次多了可能超出模型上下文限制,导致请求失败。
简单做法是只保留最近N轮对话,例如在每次追加前检查len(messages) > 20,然后删除最早的非系统消息:
if len(messages) > 20:
messages = [messages[0]] + messages[-19:]
另外,不要把API密钥硬编码在脚本里,也不要把脚本上传到公开仓库。
如果密钥意外泄露,立即在平台控制台吊销并重新生成。
如果使用宝塔面板管理服务器,可以在“网站”->“Python项目”中创建项目,设置环境变量时注意面板的重启生效机制;
或者直接用nohup python chatbot.py &在后台运行。
验证与排错
运行脚本后,输入“你好”应得到自然语言回复。
如果出现AuthenticationError,检查环境变量是否生效:在Python中执行import os; print(os.getenv("OPENAI_API_KEY")),确认输出非空。
如果报RateLimitError,说明请求频率或额度受限,检查账户余额或降低调用频率。
若回复内容不符合预期,可以调整temperature参数(0~2之间,越低越确定),或者修改system消息中的角色设定。
例如加入“请用简短中文回答”来约束输出长度。
常见疑问
必须用OpenAI的API吗? 不一定。
国内也有多家平台提供兼容OpenAI接口的API,只需替换base_url和模型名称即可,但需自行确认其稳定性和合规性。
怎样让机器人记住更多轮对话? 可以增大保留的消息数量,但需同时考虑模型上下文窗口限制和成本。
更复杂的记忆方案需要引入向量数据库,不适合新手首次配置。
脚本只能在服务器上跑吗? 本地电脑同样可以,只要网络能访问API地址。
服务器上运行便于长期在线,但要注意防火墙放行出站请求。
配置完成后,建议先小范围测试对话质量,再根据实际需求调整提示词和参数。
遇到报错时优先检查密钥、网络和模型名称这三个最常见的问题点。