Python 示例
完整的 Python 使用示例,帮助你快速上手 Next API。
环境准备
安装 OpenAI SDK
bash
pip install openai验证安装
bash
python -c "import openai; print(openai.__version__)"基础用法
简单对话
python
from openai import OpenAI
# 初始化客户端
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.nextapi.pro/v1"
)
# 发送请求
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "你好!请介绍一下你自己。"}
]
)
# 打印响应
print(response.choices[0].message.content)多轮对话
python
messages = [
{"role": "system", "content": "你是一个友好的助手。"},
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": "你好!有什么可以帮助你的吗?"},
{"role": "user", "content": "请介绍一下 Python。"}
]
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages
)
print(response.choices[0].message.content)高级用法
流式响应
python
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "写一首关于春天的诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)控制参数
python
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "给我讲个笑话"}],
temperature=0.7, # 控制随机性(0-2)
max_tokens=100, # 最大输出长度
top_p=0.9, # 核采样参数
frequency_penalty=0.5, # 频率惩罚
presence_penalty=0.5 # 存在惩罚
)
print(response.choices[0].message.content)图片理解
python
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.jpg"
}
}
]
}
],
max_tokens=300
)
print(response.choices[0].message.content)函数调用
python
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,例如:北京"
}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
tools=tools,
tool_choice="auto"
)
print(response.choices[0].message.tool_calls)错误处理
基本错误处理
python
from openai import OpenAI, APIError, RateLimitError, APIConnectionError
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.nextapi.pro/v1"
)
try:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
except RateLimitError as e:
print(f"请求频率超限: {e}")
except APIConnectionError as e:
print(f"网络连接错误: {e}")
except APIError as e:
print(f"API 错误: {e}")重试机制
python
import time
from openai import RateLimitError
def chat_with_retry(messages, max_retries=3):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages
)
return response
except RateLimitError as e:
if attempt < max_retries - 1:
wait_time = (attempt + 1) * 2 # 指数退避
print(f"遇到频率限制,等待 {wait_time} 秒后重试...")
time.sleep(wait_time)
else:
raise e
return None
# 使用示例
response = chat_with_retry([{"role": "user", "content": "你好"}])
if response:
print(response.choices[0].message.content)完整示例
聊天机器人
python
from openai import OpenAI
class ChatBot:
def __init__(self, api_key, base_url="https://api.nextapi.pro/v1"):
self.client = OpenAI(api_key=api_key, base_url=base_url)
self.messages = []
def chat(self, user_input):
# 添加用户消息
self.messages.append({"role": "user", "content": user_input})
# 发送请求
response = self.client.chat.completions.create(
model="gpt-4o-mini",
messages=self.messages
)
# 获取助手回复
assistant_message = response.choices[0].message.content
# 添加助手消息到历史
self.messages.append({"role": "assistant", "content": assistant_message})
return assistant_message
def clear_history(self):
self.messages = []
# 使用示例
bot = ChatBot("sk-你的密钥")
print("聊天机器人已启动!输入 'quit' 退出,输入 'clear' 清空历史。")
while True:
user_input = input("你: ")
if user_input.lower() == 'quit':
break
elif user_input.lower() == 'clear':
bot.clear_history()
print("历史已清空")
continue
response = bot.chat(user_input)
print(f"助手: {response}")