当前位置: 首页 > news >正文

2. client.chat.completions.create 简单使用

client.chat.completions.create() 是 OpenAI Python SDK(v1.0+)中用于调用 ChatGPT 模型的核心方法。以下是该方法的 完整参数详解使用示例


一、基础必填参数

参数名类型必填说明
modelstr模型名称,如 "gpt-3.5-turbo""gpt-4-turbo"
messagesList[dict]对话消息列表,每条消息需包含 rolecontent(见下方消息格式)
📌 消息格式示例
messages = [
    {"role": "system", "content": "你是一个专业的翻译官"},  # 系统指令(可选)
    {"role": "user", "content": "将'Hello'翻译成中文"},    # 用户输入
    # 可包含历史消息 {"role": "assistant", "content": "你好"}
]

二、常用可选参数

参数名类型默认值说明
max_tokensintinf限制生成的最大token数(1个汉字≈1.3token)
temperaturefloat1.0控制随机性(0.0-2.0),值越低输出越确定
top_pfloat1.0核采样概率(与temperature二选一)
nint1生成几条候选回复
stopList[str]None遇到指定字符串时停止生成(如 ["\n"]
streamboolFalse是否流式输出(逐字返回)
presence_penaltyfloat0.0惩罚重复话题(-2.0~2.0)
frequency_penaltyfloat0.0惩罚重复用词(-2.0~2.0)
seedintNone固定随机种子(确保相同输入输出一致)

三、高级参数

参数名类型适用场景
response_formatdict强制返回JSON格式(如 {"type": "json_object"}
tools / tool_choiceList函数调用(Function Calling)
logprobsbool返回每个token的概率(调试用)
userstr终端用户ID(用于滥用监控)

四、完整代码示例

1. 基础调用
from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-3.5-turbo-0125",
    messages=[
        {"role": "system", "content": "你是一个幽默的助手"},
        {"role": "user", "content": "讲个程序员笑话"}
    ],
    max_tokens=100,
    temperature=0.7,
)
print(response.choices[0].message.content)
2. 流式输出(适合长文本)
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[{"role": "user", "content": "用100字介绍AI"}],
    stream=True
)

for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
3. 强制返回JSON
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "生成包含name和age的JSON,示例数据"}
    ],
    response_format={"type": "json_object"}  # 必须搭配system提示
)
print(response.choices[0].message.content)
# 输出示例: {"name": "张三", "age": 28}
4. 函数调用(Tools)
from openai.types.chat import ChatCompletionTool

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取城市天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"}
                },
                "required": ["city"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "上海今天天气如何?"}],
    tools=tools,
    tool_choice="auto"  # 让模型决定是否调用函数
)
print(response.choices[0].message.tool_calls)

五、响应对象结构

返回的 response 包含以下关键属性:

response.id                  # 本次调用的唯一ID
response.choices[0].message  # 主要回复内容
response.usage               # token消耗统计
典型响应示例:
ChatCompletion(
    id="chatcmpl-xxx",
    choices=[
        ChatCompletionChoice(
            finish_reason="stop",
            index=0,
            message=ChatCompletionMessage(
                content="你好!我是AI助手。",
                role="assistant",
                tool_calls=None
            )
        )
    ],
    created=1710000000,
    model="gpt-3.5-turbo-0125",
    usage=CompletionUsage(
        prompt_tokens=10,
        completion_tokens=20,
        total_tokens=30
    )
)

六、注意事项

  1. 模型兼容性
    response_format 仅支持 gpt-3.5-turbo-0125gpt-4-turbo 及以上版本
    • 函数调用需模型支持 tools 参数

  2. 费用控制
    • 通过 max_tokens 限制生成长度
    • 监控 response.usage.total_tokens

  3. 错误处理

    from openai import APIError
    
    try:
        response = client.chat.completions.create(...)
    except APIError as e:
        print(f"API错误: {e.status_code} - {e.message}")
    

掌握这些参数后,你可以精准控制AI的生成行为。建议从官方文档获取最新参数说明。

相关文章:

  • 【C++标准IO库】文件的输入输出
  • 批量合并 PDF 文档,支持合并成单个文档,也支持按文件夹合并 PDF 文档
  • 测试模版12
  • springboot453-基于协同过滤推荐算法的食品推荐系统(源码+数据库+纯前后端分离+部署讲解等)
  • GAMES101-现代计算机图形学入门(Animation/simulation)
  • 16-字符串/贪心-相同的字符串
  • docker启动nacos+redis
  • 每日算法----2716. 最小化字符串长度----2025/03/28
  • Android 系统ContentProvider流程
  • 【Hysteria】部署+测试
  • 深入了解Linux内核:task_struct结构详解
  • WinForm真入门-简介
  • react如何引用(按需加载)百度地图,并结合and组件化封装
  • 【leetcode】拆解与整合:分治并归的算法逻辑
  • ​​​​​​Spring Boot热部署插件
  • 【第33节】windows原理:初探PE文件
  • 用 pytorch 从零开始创建大语言模型(三):编码注意力机制
  • 详解CountDownLatch底层源码
  • SQL:CASE WHEN使用详解
  • 二层网络综合实验
  • 朝鲜新型驱逐舰“崔贤”号进行多项武器试验
  • 2024“好评中国”网络评论大赛结果揭晓
  • 中国公民在日本被机动车碾压身亡,我使馆发布提醒
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布
  • 国家发改委:建立实施育儿补贴制度
  • 百岁太极拳大师、陈氏太极拳第十一代嫡宗传人陈全忠逝世