Skip to content

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}")

下一步