本文档介绍了使用 OpenAI 聊天补全 API 的基本模式,包括基本消息处理、流式响应和安全控制。它演示了如何实现与 OpenAI 模型的基于聊天的交互,通过流式传输优化响应交付,并通过内容审查和护栏保护应用程序。
有关高级函数调用和工具集成,请参阅函数调用和工具集成。有关检索增强生成模式,请参阅检索增强生成 (RAG)。
OpenAI 聊天补全 API 为对话式 AI 应用程序提供了基础。基本模式涉及向模型发送结构化消息并接收生成的响应。
聊天补全的 API 请求流程
client.chat.completions.create() 方法接受多个关键参数,这些参数控制模型行为和响应格式。messages 参数包含一个消息对象数组,其中包含 role 和 content 字段。
来源:examples/How_to_stream_completions.ipynb46-51 examples/gpt4o/introduction_to_gpt4o.ipynb89-98
| 角色 | 目的 | 使用示例 |
|---|---|---|
系统 (system) | 提供上下文和指令 | 设置助手的个性和约束 |
用户 (user) | 包含用户输入或问题 | 用户查询和请求 |
助手 (assistant) | 模型生成的响应 | 对话中之前的 AI 响应 |
基本消息结构遵循此模式
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello! Could you solve 2+2?"}
]
来源:examples/gpt4o/introduction_to_gpt4o.ipynb92-94
流式传输实现了实时响应交付,减少了长时间补全的感知延迟。应用程序不再需要等待整个响应,而是接收模型生成时的增量块。
流式响应处理流程
流式响应的关键区别在于访问 delta.content 而不是 message.content。响应以 ChatCompletionChunk 对象的迭代器形式到达,每个对象在 delta 字段中包含增量内容。
来源:examples/How_to_stream_completions.ipynb172-189
要获取流式响应的令牌使用统计信息,请设置 stream_options={"include_usage": True}。这将添加一个包含使用信息的最终块
nullchoices 数组来源:examples/How_to_stream_completions.ipynb579-584 examples/How_to_stream_completions.ipynb614-630
流式传输显著改善了长响应的用户体验
来源:examples/How_to_stream_completions.ipynb566-571
内容审查提供了对输入和输出中潜在有害内容的自动检测。审查 API 分析文本和图像是否存在跨多个类别的政策违规。
审查 API 请求和响应结构
审查检查返回一个布尔值 flagged 结果以及特定类别的标志。对于图像审查,使用 omni-moderation-latest 模型,图像 URL 作为输入格式。
来源:examples/How_to_use_moderation.ipynb90-93 examples/How_to_use_moderation.ipynb194-217
异步输入和输出审查流程
异步模式允许审查和聊天补全并行运行,如果审查标记了输入,则取消昂贵的聊天请求。输出审查会在将生成的响应返回给用户之前进行检查。
来源:examples/How_to_use_moderation.ipynb108-135 examples/How_to_use_moderation.ipynb316-351
护栏提供了超越基本审查的自定义内容控制,通过自定义提示和逻辑实现对输入和输出的应用程序特定验证。
自定义护栏实现流程
护栏使用单独的模型调用来根据自定义标准评估内容。主题护栏示例使用分类提示将对话限制在特定领域(猫和狗)。
来源:examples/How_to_use_guardrails.ipynb116-131 examples/How_to_use_guardrails.ipynb133-152
审查护栏模式使用自定义评分标准评估生成的内容
moderation_system_prompt = """
Your role is to assess whether the user question is allowed or not.
The allowed topics are {domain}.
Criteria: {scoring_criteria}
Instructions: {scoring_steps}
"""
此模式允许对通过验证的内容进行精细控制,具有可配置的阈值和特定领域规则。
来源:examples/How_to_use_guardrails.ipynb284-302 examples/How_to_use_guardrails.ipynb312-327
流式应用程序必须优雅地处理连接中断和模型错误。主要考虑因素包括
来源:examples/How_to_stream_completions.ipynb18-21
部署带有流式传输和安全控制的聊天补全系统时
异步方法支持复杂的流程,其中安全检查与内容生成并行运行,从而提供安全性和性能。
来源:examples/How_to_use_moderation.ipynb53-57 examples/How_to_use_guardrails.ipynb257-262