ChatGPT API 调用教程——用 Python 接入 OpenAI
ChatGPT API 调用教程——用 Python 接入 OpenAI
作者: CaoZH
日期: 2023-02-15
本文为原创教程
2023 年初,OpenAI 开放了 ChatGPT API,开发者可以在自己的应用中集成对话式 AI 能力。本文手把手教你用 Python 调用 ChatGPT API,从申请 Key 到写一个命令行聊天机器人。
一、准备工作
1. 注册 OpenAI 账号并获取 API Key
- 访问 platform.openai.com 注册账号
- 进入 API Keys 页面,点击 Create new secret key
- 复制并保存好 Key(关闭后不再显示)
2. 安装依赖
1 2 3 4 5 6 7 8 9 10
| mkdir chatgpt-demo && cd chatgpt-demo
python -m venv venv source venv/bin/activate
pip install openai
|
二、基础调用
最简单的对话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import openai
openai.api_key = "sk-your-api-key-here"
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "用一句话解释什么是 API"} ] )
print(response.choices[0].message.content)
|
多轮对话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import openai
openai.api_key = "sk-your-api-key-here"
messages = [ {"role": "system", "content": "你是一个友好的AI助手,请用简洁的语言回答。"}, {"role": "user", "content": "什么是 Docker?"}, ]
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages )
messages.append(response.choices[0].message)
messages.append({"role": "user", "content": "和虚拟机有什么区别?"})
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages )
print(response.choices[0].message.content)
|
三、参数调优
1 2 3 4 5 6 7 8 9 10 11 12
| response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "写一个 Python 快速排序"} ], temperature=0.3, max_tokens=500, top_p=0.9, frequency_penalty=0, presence_penalty=0, stop=["\n\n", "```"], )
|
| 参数 |
作用 |
推荐值 |
temperature |
控制输出随机性 |
0.2-0.8 |
max_tokens |
控制回复长度 |
根据需求设置 |
top_p |
核采样阈值 |
0.9 |
frequency_penalty |
减少重复 |
0.5-1.0 |
四、实战:命令行聊天机器人
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
import openai import os from datetime import datetime
openai.api_key = os.getenv("OPENAI_API_KEY") if not openai.api_key: print("请设置环境变量: export OPENAI_API_KEY='your-key'") exit(1)
SYSTEM_PROMPT = "你是一个有帮助的AI助手。当前时间:" + datetime.now().strftime("%Y-%m-%d")
def chat(): messages = [{"role": "system", "content": SYSTEM_PROMPT}] print("ChatGPT CLI (输入 'quit' 退出, 'clear' 清空历史)") print("-" * 50)
while True: user_input = input("\n👤: ").strip() if user_input.lower() == 'quit': break elif user_input.lower() == 'clear': messages = [{"role": "system", "content": SYSTEM_PROMPT}] print("对话历史已清空") continue
messages.append({"role": "user", "content": user_input})
try: response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, temperature=0.7, ) reply = response.choices[0].message.content print(f"\n🤖: {reply}") messages.append({"role": "assistant", "content": reply}) except Exception as e: print(f"\n❌ 错误: {e}")
if __name__ == "__main__": chat()
|
运行:
1 2
| export OPENAI_API_KEY='sk-your-key-here' python chat.py
|
五、流式输出(打字机效果)
1 2 3 4 5 6 7 8 9 10 11 12 13
| import openai openai.api_key = "sk-your-key-here"
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "讲一个程序员笑话"}], stream=True, )
for chunk in response: if chunk.choices[0].delta.get("content"): print(chunk.choices[0].delta.content, end="", flush=True) print()
|
六、Token 管理与计费
1 2 3 4 5 6 7 8 9 10 11 12 13
| import tiktoken
enc = tiktoken.encoding_for_model("gpt-3.5-turbo")
text = "Hello, how are you?" tokens = enc.encode(text) print(f"Token 数: {len(tokens)}") print(f"解码: {enc.decode(tokens)}")
|
七、总结
通过本教程,你学会了:
- ✅ 申请 OpenAI API Key
- ✅ 基础对话调用
- ✅ 多轮对话保持上下文
- ✅ 参数调优控制输出
- ✅ 构建命令行聊天机器人
- ✅ 流式输出和 Token 管理
ChatGPT API 的发布开启了 AI 应用开发的新纪元。结合你自己领域的业务场景,可以构建出非常有趣的应用。
首发于 CaoZH 的笔记