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 支持这些能力。

如何通过 Chat Completions API 使用 Kimi

以下示例使用 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.ai/v1", ) resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=[ {"role": "user", "content": "用一段话解释 REST。"} ], ) 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": "写一首关于秋天的俳句。"} ], 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": "获取某个城市的天气预报。", "parameters": { "type": "object", "properties": { "city": {"type": "string"} }, "required": ["city"] } } } ] messages = [ {"role": "user", "content": "今天去东京需要带伞吗?"} ] # 询问 Kimi 是否需要调用工具 resp = client.chat.completions.create( model="kimi-k3.1-pro", messages=messages, tools=tools, ) assistant_message = resp.choices[0].message # 保留完整的助手消息,包括 tool_calls messages.append(assistant_message) # 在应用中执行请求的函数 for tool_call in assistant_message.tool_calls or []: if tool_call.function.name == "get_weather": args = json.loads(tool_call.function.arguments) # 调用你自己的天气服务或 API weather_result = get_weather(city=args["city"]) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(weather_result) }) # 让 Kimi 解读工具结果并回复用户 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 服务提供商

如果你正在寻找兼容 OpenAI API 的服务提供商,Kimi API 值得考虑,尤其适合中文应用、长文档处理和编程 agent。它结合了熟悉的 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"请总结以下报告:\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.ai/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 时,应用应在每次请求中包含相关的对话历史,而非依赖 response ID 链接。
如果你的应用使用 OpenAI SDK,通常只需更新三项配置即可切换到 Kimi:将 base_url 改为 Kimi 的 API 端点,将 api_key 改为你的 Kimi API 密钥,并将 model 改为受支持的 Kimi 模型 ID。随后测试集成,确认应用依赖的参数和功能(如流式输出和工具调用)均受支持。
相关推荐
OpenAI Chat Completions API:完整指南
OpenAI Chat Completions API:完整指南
2026-11-14
10 种用于 AI 开发的免费和付费 LLM API
10 种用于 AI 开发的免费和付费 LLM API
2026-11-14
LLM API 指南:功能、优势和常见应用
LLM API 指南:功能、优势和常见应用
2026-11-14
模型 API:Kimi API 开发者指南
模型 API:Kimi API 开发者指南
2026-11-14
兼容 OpenAI API:开发者实用指南
兼容 OpenAI API:开发者实用指南
2026-11-14
Chat Completion API 详解:功能与示例