保姆级教程:用Python调用ChatGPT API,5分钟搞定你的第一个AI对话程序
5分钟极简实战用Python玩转ChatGPT API的保姆级指南ChatGPT API的开放让每个开发者都能轻松将AI对话能力集成到自己的应用中。但对于刚接触API调用的新手来说从零开始往往面临各种困惑如何正确设置请求该选择哪个模型消息格式有哪些讲究本文将用最简洁的方式带你5分钟跑通第一个ChatGPT对话程序所有代码可直接复制使用。1. 环境准备3步搭建基础在开始编写代码前我们需要确保开发环境已经就绪。这个过程就像准备厨房用具一样简单只需要完成三个基本步骤。安装Python环境推荐使用Python 3.8或更高版本。可以通过命令行输入python --version检查当前版本。如果尚未安装从Python官网下载安装包记得勾选Add Python to PATH选项。# 检查Python版本 python --version # 安装依赖库 pip install openai python-dotenv获取API密钥登录OpenAI平台在API密钥页面点击Create new secret key生成密钥。这个密钥相当于你的个人密码需要妥善保管。注意API密钥一旦生成只会显示一次请立即复制保存。如果丢失需要重新生成新密钥。配置环境变量最佳实践是将API密钥存储在环境变量中避免直接写在代码里。创建.env文件并添加OPENAI_API_KEY你的实际API密钥2. 核心代码解析从零编写对话程序现在进入最核心的部分 - 编写实际的API调用代码。我们将使用OpenAI官方提供的Python SDK这是目前最简单稳定的接入方式。首先创建一个新Python文件比如chatgpt_demo.py然后导入必要的库from openai import OpenAI from dotenv import load_dotenv import os # 加载环境变量 load_dotenv() # 初始化客户端 client OpenAI(api_keyos.getenv(OPENAI_API_KEY))基础对话功能只需要不到10行代码。下面是一个完整的交互式对话示例def simple_chat(): print(开始与AI对话(输入退出结束):) while True: user_input input(你: ) if user_input.lower() in [退出, exit]: break response client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: user_input}] ) print(fAI: {response.choices[0].message.content}) if __name__ __main__: simple_chat()这段代码的关键参数说明model指定使用的模型gpt-3.5-turbo是性价比最高的通用模型messages对话历史列表每个消息需要指定角色(user/assistant)和内容temperature控制回答的随机性(0-2)默认0.7平衡创造性和准确性3. 进阶技巧提升对话质量的5个秘诀基础功能跑通后下面这些技巧能让你的AI对话更加流畅自然。维持对话上下文ChatGPT本身是无状态的需要开发者自行维护对话历史。修改messages数组即可conversation [ {role: system, content: 你是一个乐于助人的AI助手}, {role: user, content: 推荐几本Python入门书籍} ] response client.chat.completions.create( modelgpt-3.5-turbo, messagesconversation ) # 将AI回复加入对话历史 conversation.append({ role: assistant, content: response.choices[0].message.content })调节回答风格通过system message可以设定AI的角色和回答风格messages [ { role: system, content: 你是一位经验丰富的Python开发专家回答要专业但简洁适当使用代码示例 }, {role: user, content: 如何用Python处理JSON数据} ]常用参数优化参数推荐值作用说明max_tokens500限制回答最大长度temperature0.7控制回答随机性top_p0.9另一种随机性控制方式frequency_penalty0.5降低重复内容presence_penalty0.5鼓励话题多样性错误处理健壮的程序需要妥善处理各种异常情况try: response client.chat.completions.create( modelgpt-3.5-turbo, messagesmessages, max_tokens500 ) except Exception as e: print(fAPI调用出错: {str(e)}) # 可以添加重试逻辑或降级处理4. 实战案例构建天气查询AI助手让我们把这些知识综合运用创建一个能查询天气的实用AI程序。这个例子展示了如何将ChatGPT与外部API结合。首先安装requests库用于调用天气APIpip install requests然后编写集成代码import requests from datetime import datetime def get_weather(city): # 这里使用模拟的天气API实际使用时替换为真实API weather_data { 北京: {temp: 22°C, condition: 晴}, 上海: {temp: 25°C, condition: 多云}, 广州: {temp: 28°C, condition: 阵雨} } return weather_data.get(city, {temp: 未知, condition: 未知}) def weather_assistant(): print(天气助手已启动(输入退出结束)) conversation [ { role: system, content: f你是一个智能天气助手今天是{datetime.now().strftime(%Y年%m月%d日)}。 当用户询问某地天气时先调用get_weather函数查询。 回答要友好且包含温度、天气状况和穿衣建议。 } ] while True: user_input input(\n你: ) if user_input.lower() in [退出, exit]: break conversation.append({role: user, content: user_input}) response client.chat.completions.create( modelgpt-3.5-turbo, messagesconversation, functions[ { name: get_weather, description: 获取指定城市的天气信息, parameters: { type: object, properties: { city: { type: string, description: 城市名称如北京、上海 } }, required: [city] } } ], function_callauto ) reply response.choices[0].message conversation.append(reply) # 处理函数调用 if reply.function_call: function_name reply.function_call.name if function_name get_weather: city eval(reply.function_call.arguments)[city] weather get_weather(city) conversation.append({ role: function, name: get_weather, content: str(weather) }) # 再次调用GPT处理函数结果 response client.chat.completions.create( modelgpt-3.5-turbo, messagesconversation ) reply response.choices[0].message conversation.append(reply) print(f助手: {reply.content}) if __name__ __main__: weather_assistant()