Chat Completion API:運作方式與使用方法

了解 Chat Completion API 的運作方式、學習如何透過 Python 整合、認識關鍵參數、串流與工具呼叫,並探索 Kimi API 等與 OpenAI 相容的供應商如何支援彈性的 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.ai/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 的總和必須符合模型的上下文視窗限制。
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 相容」為何重要

許多供應商支援 OpenAI Chat Completions 格式,讓開發者可重複使用熟悉的 SDK 和請求結構。切換時通常只需更新基礎 URL、API 金鑰和模型 ID,然後確認支援的參數及回應處理方式。比較供應商時,請考量以下因素:

  1. 相容性完整度:確認串流、工具呼叫、結構化輸出及 usage 報告是否能如您的應用程式預期般運作。採用相同 API 格式並不保證各供應商提供完全一致的功能支援或回應行為。

  2. 模型是否適合您的工作負載:相較於通用基準測試,您使用的語言組合和任務類型更重要。

  3. 上下文視窗:長上下文模型可在單一請求中處理更多來源內容,從而簡化部分文件工作流程。

  4. 成本機制:快取與批次折扣的影響往往超過表面上的每 token 價格。

  5. 生態系廣度:其他相容端點,例如 Responses 和 Anthropic Messages,可隨著您的應用程式演進,提供更多整合選項與彈性。

Kimi API:出色的 OpenAI 相容供應商

若您正在尋找 OpenAI 相容供應商,Kimi API 由 Moonshot AI 開發,值得納入考量,尤其適合中文應用程式、長篇文件處理及程式設計 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"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.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 相容的 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 相容的 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。接著測試整合,確認應用程式所依賴的參數與功能(例如串流和工具呼叫)皆受到支援。
相關推薦
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 詳解:功能與範例