ChatGPT 使用笔记
简介
ChatGPT 是 OpenAI 开发的大型语言模型,能够进行对话、回答问题、生成文本等多种任务。
基本使用
API 调用
import openai
openai.api_key = "your-api-key"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "你好,请介绍一下自己。"}
]
)
print(response.choices[0].message.content)
常用参数
model: 模型版本(gpt-3.5-turbo, gpt-4 等)temperature: 控制随机性(0-2,默认 1)max_tokens: 最大生成 token 数top_p: 核采样参数
使用技巧
这些是我在使用 ChatGPT 过程中总结的技巧:
1. System Prompt 设计
System prompt 可以设定 AI 的角色和行为模式:
你是一位专业的 Python 开发工程师,擅长编写清晰、高效的代码。
请用中文回答,并提供代码示例。
2. 上下文管理
对于长对话,需要维护消息历史:
messages = [
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "什么是 Python?"},
{"role": "assistant", "content": "Python 是一种编程语言..."},
{"role": "user", "content": "它有什么特点?"}
]
3. 流式输出
对于长文本生成,使用流式输出提升用户体验:
stream = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.get("content"):
print(chunk.choices[0].delta["content"], end="")
常见问题
以下是我在使用过程中遇到的常见问题和解决方案:
Q: 如何处理 API 限流?
A: 实现重试机制和指数退避:
import time
import random
def retry_with_backoff(func, max_retries=5):
for i in range(max_retries):
try:
return func()
except Exception as e:
if i == max_retries - 1:
raise
wait_time = (2 ** i) + random.uniform(0, 1)
time.sleep(wait_time)
Q: 如何控制输出长度?
A: 使用 max_tokens 参数,并在 prompt 中明确要求:
请用不超过 100 字回答这个问题。
最佳实践
- 明确任务目标:在 prompt 中清晰描述需求
- 提供示例:Few-shot learning 可以提升效果
- 迭代优化:根据结果调整 prompt
- 错误处理:妥善处理 API 错误和异常情况
- 成本控制:监控 token 使用量,优化 prompt 长度