Chat Completion API:工作原理与使用方法

了解 Chat Completion API 的工作原理,学习如何通过 Python 集成,掌握关键参数、流式输出和工具调用,并探索 Kimi API 等兼容 OpenAI API 的服务商如何支持灵活的 AI 应用开发。

阅读时长:9 分钟更新于:2026-11-14
Chat Completion API 请求与响应流程

无论是构建 AI 聊天机器人,还是为应用添加对话功能,了解 AI 如何处理对话都很重要。Chat Completion API 通过连接应用与 AI 模型,生成相关且自然的回复,实现这一功能。借助 Python 集成、流式输出和工具调用等功能,开发者可以构建更具交互性的应用。下面了解它的工作原理、使用方法,以及 Kimi API 等服务商如何支持灵活的 AI 开发。

什么是 Chat Completions API

Chat Completions API 是一种接口,应用可通过它向 AI 模型发送一系列消息,并接收助手回复,支持单轮和多轮对话。例如,你可以使用 Kimi K3.1 Pro 回答有关 Python 装饰器的问题,然后继续追问:

  • 首次请求: 发送用户消息“什么是 Python 装饰器?”,Kimi 会返回一条解释该概念的助手消息。

  • 第二次请求: 若要继续对话,请发送此前的用户消息、Kimi 的完整助手消息,以及一条新的用户消息:“你能举个例子吗?”

messages 数组承载每次请求所需的上下文。以下三项关键设计使这一接口得到广泛采用:

  • 应用管理历史记录: 应用负责管理对话历史,并在每次请求中包含相关上下文,让开发者能够控制模型看到的内容。

  • 常见消息角色: 常见角色包括 system(指令)、user(输入)、assistant(模型输出,会回传以保留多轮对话上下文)和 tool(函数调用结果)。这些角色共同用于表达指令、对话和工具交互。

  • 灵活的能力: 具体支持哪些能力取决于模型,接口可处理流式传输、工具调用、视觉输入和结构化输出。Kimi K3.1 Pro 支持这些能力。

如何使用 Kimi 的 Chat Completions API

以下示例使用 Kimi K3.1 Pro 和 OpenAI Python SDK,演示如何配置客户端、发送请求、处理响应及实现工具调用:

快速开始:使用 OpenAI Python SDK 调用 Kimi

安装 OpenAI Python SDK:

pip install --upgrade openai

将 Kimi API 密钥设置为环境变量:

export MOONSHOT_API_KEY="sk-your-kimi-key"

你无需 OpenAI API 密钥。OpenAI Python SDK 用作客户端库,而 Kimi API 密钥和基础 URL 则用于验证身份,并将请求路由至 Kimi。

初始化客户端并发送第一个请求:

import os from openai import OpenAI client = OpenAI( api_key=os.environ["MOONSHOT_API_KEY"], base_url="https://api.moonshot.cn/v1", ) resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ {"role": "user", "content": "Explain REST in one paragraph."} ], ) print(resp.choices[0].message.content)

本示例使用 Kimi 的国际 API 端点。有关官方配置方法和模型详情,请参阅 Kimi K3.1 Pro 快速开始。

关键参数

以下参数涵盖通过 Chat Completions API 调用 Kimi K3.1 Pro 时可用的主要选项:

参数用途
model指定模型 ID,例如 kimi-k3.1-pro。
messages提供对话消息,包括此前的用户输入和助手回复。支持文本和多模态内容。
reasoning_effort控制推理深度。可设为 low、high 或 max(默认值)。
max_completion_tokens设置最大生成预算,包括推理 token 和最终回答 token。输入 token 单独计数,但输入 token 与生成 token 的总数必须在模型的上下文窗口范围内。
stream设为 true 后,可增量接收响应,无需等待完整输出。
tools定义模型可请求应用执行的函数。
response_format控制输出格式。支持用于 JSON 模式的 json_object,以及用于受 schema 约束的结构化输出的 json_schema。

注意: Kimi K3.1 Pro 使用固定的采样设置。请勿在请求中添加 temperature 或 top_p。有关参数详情和支持的取值,请参阅 Chat Completions API 参考。

读取响应

请求成功后,你可以通过返回的 completion 对象访问主要响应字段:

  • choices[0].message – 包含 assistant 的回复;当模型请求函数时,其中会包含 content 或 tool_calls。

  • choices[0].finish_reason – 表示生成停止的原因,例如 stop、length 或 tool_calls。

  • usage – 提供 token 用量信息,包括输入、输出以及可用时的缓存 token 数量。

对于基本的文本响应,读取 choices[0].message.content 即可。如果模型返回 tool_calls,你的应用需要执行所请求的函数,并在后续请求中提交执行结果

流式传输示例

设置 stream=True,即可分块增量接收 Kimi 的响应。以下示例复用上文配置的 client,并在最终答案到达时将其打印出来:

stream = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ {"role": "user", "content": "Write a haiku about autumn."} ], stream=True, ) for chunk in stream: if not chunk.choices: continue delta = chunk.choices[0].delta if delta.content: print(delta.content, end="", flush=True)

Kimi K3.1 Pro 会将推理内容与最终答案分开返回。本示例仅打印 delta.content,因此会显示最终响应,而不会处理单独的 reasoning_content 字段。

工具调用简介

当任务需要模型自身回复之外的信息或操作时,工具调用可让 Kimi 请求外部函数。例如,如果用户询问“今天在东京要带伞吗?”,Kimi 可以请求 get_weather 函数来获取天气预报。

工作流程分为三步:

  1. 声明函数: 在 tools 参数中定义 get_weather 及其预期参数。

  2. 执行工具: Kimi 会返回包含函数名称和参数的 tool_calls 条目。你的应用执行相应函数并获取天气数据。

  3. 回传结果: 将 Kimi 完整的 assistant 消息和工具结果(使用匹配的 tool_call_id)添加到对话中,然后再次调用 Kimi,生成面向用户的回答。

以下示例复用上文配置的 client。运行前,请确保你已实现 get_weather(city) 函数,该函数返回可 JSON 序列化的天气数据。此函数由你的应用执行,而非 Kimi。

import json tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Get the weather forecast for a city.", "parameters": { "type": "object", "properties": { "city": {"type": "string"} }, "required": ["city"] } } } ] messages = [ {"role": "user", "content": "Should I bring an umbrella in Tokyo today?"} ] # Ask Kimi whether it needs to call a tool resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=messages, tools=tools, ) assistant_message = resp.choices[0].message # Preserve the complete assistant message, including tool_calls messages.append(assistant_message) # Execute the requested function in your application for tool_call in assistant_message.tool_calls or []: if tool_call.function.name == "get_weather": args = json.loads(tool_call.function.arguments) # Call your own weather service or API weather_result = get_weather(city=args["city"]) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(weather_result) }) # Let Kimi interpret the tool result and answer the user final_resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=messages, tools=tools, ) print(final_resp.choices[0].message.content)

此处的 get_weather() 表示由你的应用实现的函数,并非由 Kimi 直接执行。Kimi 决定何时请求该函数并提供参数;你的应用执行实际操作并返回结果。

在生产环境中,应实现一个循环来处理每次工具调用,将相应结果添加到对话中,并将更新后的消息发送回 Kimi。重复此过程,直至模型返回无需请求额外工具的最终答案。

选择服务商时,“兼容 OpenAI API”为何重要

许多服务商支持 OpenAI Chat Completions 格式,开发者可以复用熟悉的 SDK 和请求结构。切换服务商通常只需更新基础 URL、API 密钥和模型 ID,再检查支持的参数和响应处理方式。比较服务商时,可考虑以下因素:

  1. 兼容性还原度: 确认流式传输、工具调用、结构化输出和 usage 报告是否符合你的应用预期。采用相同 API 格式并不意味着不同服务商对功能的支持或响应行为完全一致。

  2. 适合你工作负载的模型质量: 语言组合和任务类型比通用基准测试更重要。

  3. 上下文窗口: 长上下文模型可以在单次请求中处理更多源材料,从而简化部分文档工作流程。

  4. 成本机制: 缓存和批量折扣的影响往往大于表面上的每 token 价格。

  5. 生态系统广度: 其他兼容端点(如 Responses 和 Anthropic Messages)可随着应用发展,提供更多集成选项和灵活性。

Kimi API:值得关注的兼容 OpenAI API 服务商

Kimi API 由月之暗面开发。如果你正在寻找兼容 OpenAI API 的服务商,尤其面向中文应用、长文档处理和编程 agent,Kimi API 值得考虑。它将熟悉的 API 集成模式与 Kimi 的长上下文和推理能力相结合。

即插即用的兼容性

如果你的应用已使用 OpenAI Python SDK,无需重写整个请求流程即可集成 Kimi。只需更新 API 配置,包括 base_url、api_key 和模型 ID,同时保留熟悉的 Chat Completions 接口。

例如,以下代码从本地 report.txt 读取报告,将其内容发送给 Kimi K3.1 Pro 进行摘要,并以流式方式返回生成的响应:

from pathlib import Path report_text = Path("report.txt").read_text(encoding="utf-8") resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ { "role": "user", "content": f"Summarize the following report:\n\n{report_text}" } ], stream=True, ) for chunk in resp: if not chunk.choices: continue content = chunk.choices[0].delta.content if content: print(content, end="", flush=True)

这里的 client 复用了此前初始化的 Kimi 客户端,其 API 密钥从环境变量中读取。请根据所在地区选择基础 URL:国际平台使用 https://api.moonshot.cn/v1,在中国大陆访问 API 的用户使用 https://api.moonshot.cn/v1。

这种方式让你保留现有的 OpenAI SDK 工作流程,同时使用 Kimi 模型完成文档摘要等由 API 驱动的应用任务。

Kimi 的差异化优势

  • 支持 100 万 token 上下文窗口的旗舰模型: Kimi K3.1 Pro 支持最长 100 万 token 的上下文窗口和原生视觉理解。开发者可在同一工作流程中处理大型代码库、书籍篇幅的文档和图像输入,适用于复杂推理、编程和多模态应用。

  • 灵活的成本优化: Kimi API 为重复的请求前缀提供自动上下文缓存,并为不要求实时响应的大规模任务提供 Batch API 推理。缓存计费和 Batch 定价取决于模型及适用的定价规则。请查看 Kimi API 官方定价,了解当前费率和计费详情。

  • 兼容多种 API 生态: Kimi 提供兼容 OpenAI API 的 Chat Completions 和 Responses API 端点,以及兼容 Anthropic Messages 的端点。开发者可使用熟悉的 SDK 和 API 格式,将 Kimi K3.1 Pro 集成到现有工作流程中,并根据端点和支持的功能进行调整。

结语

开始使用 Chat Completions API 很简单:配置 API 凭证,发送请求,然后从 choices[0].message.content 读取生成的响应。首次 API 调用成功后,你可以根据应用需求扩展集成,例如添加多轮对话、流式响应或工具调用。准备好使用 Kimi 开发了吗?获取你的 Kimi API 密钥,开始发送 API 请求。

常见问题

不是。Chat Completions API 并非 OpenAI 模型专属。包括 Kimi 在内的其他 AI 服务商,也提供遵循兼容 OpenAI API 的 Chat Completions 格式的 API。开发者可以通过熟悉的 SDK 和请求结构,调用不同服务商支持的模型,但具体功能支持可能有所不同。
两种 API 都允许应用与 AI 模型交互,但请求和响应结构不同。Chat Completions 使用 messages 数组,并通过 choices 数组返回响应。Responses API 采用更灵活的输入和输出结构,支持不同内容类型和工具交互。对话状态管理方式因服务商而异。使用 Kimi 的 Responses API 时,应用应在每次请求中包含相关对话历史,而非依赖通过响应 ID 串联。
如果你的应用使用 OpenAI SDK,通常只需更新三项配置即可切换至 Kimi:将 base_url 改为 Kimi 的 API 端点,将 api_key 改为你的 Kimi API 密钥,并将 model 改为受支持的 Kimi 模型 ID。随后测试集成情况,确认应用依赖的参数和功能(如流式输出和工具调用)均受支持。
相关推荐
LLM API 指南:功能、优势和常见应用
LLM API 指南:功能、优势和常见应用
2026-11-14
模型 API:Kimi API 开发者指南
模型 API:Kimi API 开发者指南
2026-11-14
兼容 OpenAI API:开发者实用指南
兼容 OpenAI API:开发者实用指南
2026-11-14
AI API:是什么、如何工作及如何使用
AI API:是什么、如何工作及如何使用
2026-11-14
Hermes Agent 安装指南:适合初学者的设置教程
Hermes Agent 安装指南:适合初学者的设置教程
2026-11-05