Chat Completion API: Cách hoạt động và cách sử dụng

Khám phá cách hoạt động của Chat Completion API, tìm hiểu cách tích hợp với Python, nắm rõ các tham số chính, tính năng truyền phát trực tuyến và gọi công cụ, đồng thời khám phá cách các nhà cung cấp tương thích OpenAI như Kimi API có thể hỗ trợ phát triển ứng dụng AI linh hoạt.

9 phút đọcĐã cập nhật: 2026-11-14
Quy trình yêu cầu và phản hồi của Chat Completion API

Dù bạn đang xây dựng chatbot AI hay bổ sung tính năng hội thoại cho một ứng dụng, việc hiểu cách AI xử lý hội thoại là rất quan trọng. Chat Completion API giúp thực hiện điều này bằng cách kết nối ứng dụng với các mô hình AI để tạo ra phản hồi phù hợp, tự nhiên như con người. Với các tính năng như tích hợp Python, truyền phát và gọi công cụ, nhà phát triển có thể xây dựng những ứng dụng tương tác hơn. Hãy cùng tìm hiểu cách hoạt động, cách sử dụng và cách các nhà cung cấp như Kimi API hỗ trợ phát triển AI linh hoạt.

Chat Completions API là gì

Chat Completions API là một giao diện cho phép ứng dụng gửi một chuỗi tin nhắn đến mô hình AI và nhận phản hồi từ trợ lý, hỗ trợ cả hội thoại một lượt lẫn nhiều lượt. Ví dụ, bạn có thể dùng Kimi K3.1 Pro để trả lời câu hỏi về decorator trong Python, rồi đặt câu hỏi tiếp theo:

  • Yêu cầu đầu tiên: Gửi tin nhắn của người dùng: "Decorator trong Python là gì?" Kimi trả về một tin nhắn của trợ lý giải thích khái niệm này.

  • Yêu cầu thứ hai: Để tiếp tục cuộc hội thoại, hãy gửi tin nhắn trước đó của người dùng, toàn bộ tin nhắn phản hồi của Kimi và một tin nhắn mới của người dùng: "Bạn có thể cho tôi một ví dụ không?"

Mảng messages mang theo ngữ cảnh cần thiết cho mỗi yêu cầu. Ba quyết định thiết kế quan trọng giúp giao diện này được áp dụng rộng rãi:

  • Lịch sử do ứng dụng quản lý: Ứng dụng quản lý lịch sử hội thoại và đưa ngữ cảnh liên quan vào từng yêu cầu, giúp nhà phát triển kiểm soát những gì mô hình nhìn thấy.

  • Vai trò tin nhắn phổ biến: Các vai trò phổ biến gồm system (hướng dẫn), user (dữ liệu đầu vào), assistant (đầu ra của mô hình, được gửi lại để tạo ngữ cảnh nhiều lượt) và tool (kết quả gọi hàm). Kết hợp với nhau, chúng giúp thể hiện hướng dẫn, đối thoại và tương tác với công cụ.

  • Khả năng linh hoạt: Tùy thuộc vào mức độ hỗ trợ của mô hình, giao diện có thể xử lý truyền phát, gọi công cụ, dữ liệu đầu vào trực quan và đầu ra có cấu trúc. Kimi K3.1 Pro hỗ trợ các khả năng này.

Cách sử dụng Chat Completions API với Kimi

Các ví dụ sau dùng Kimi K3.1 Pro và OpenAI Python SDK để minh họa cách cấu hình client, gửi yêu cầu, xử lý phản hồi và triển khai gọi công cụ:

Bắt đầu nhanh: Gọi Kimi bằng OpenAI Python SDK

Cài đặt OpenAI Python SDK:

pip install --upgrade openai

Đặt khóa Kimi API của bạn làm biến môi trường:

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

Bạn không cần khóa OpenAI API. OpenAI Python SDK đóng vai trò là thư viện client, còn khóa Kimi API và URL cơ sở của bạn sẽ xác thực và định tuyến yêu cầu đến Kimi.

Khởi tạo client và gửi yêu cầu đầu tiên của bạn:

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)

Ví dụ này sử dụng điểm cuối API quốc tế của Kimi. Để biết thông tin thiết lập chính thức và chi tiết về mô hình, hãy xem Hướng dẫn bắt đầu nhanh Kimi K3.1 Pro.

Các tham số chính

Các tham số này bao quát những tùy chọn chính khi gọi Kimi K3.1 Pro thông qua Chat Completions API:

Tham sốMục đích
modelChỉ định ID mô hình, chẳng hạn như kimi-k3.1-pro.
messagesCung cấp các thông điệp trong cuộc hội thoại, bao gồm dữ liệu người dùng nhập trước đó và phản hồi của trợ lý. Hỗ trợ nội dung văn bản và đa phương thức.
reasoning_effortKiểm soát độ sâu suy luận. Chấp nhận low, high hoặc max (mặc định).
max_completion_tokensĐặt ngân sách tạo tối đa, bao gồm cả token suy luận và token câu trả lời cuối cùng. Token đầu vào được tính riêng, nhưng tổng token đầu vào và token được tạo phải nằm trong cửa sổ ngữ cảnh của mô hình.
streamĐặt thành true để nhận phản hồi theo từng phần thay vì chờ toàn bộ đầu ra hoàn tất.
toolsXác định các hàm mà mô hình có thể yêu cầu ứng dụng thực thi.
response_formatKiểm soát định dạng đầu ra. Hỗ trợ json_object cho chế độ JSON và json_schema cho đầu ra có cấu trúc bị ràng buộc theo lược đồ.

Lưu ý: Kimi K3.1 Pro sử dụng các thiết lập lấy mẫu cố định. Không thêm temperature hoặc top_p vào yêu cầu. Xem tài liệu tham chiếu Chat Completions API để biết chi tiết về tham số và các giá trị được hỗ trợ.

Đọc phản hồi

Sau khi yêu cầu thành công, bạn có thể truy cập các trường phản hồi chính thông qua đối tượng completion được trả về:

  • choices[0].message – Chứa phản hồi của trợ lý, bao gồm content hoặc tool_calls khi mô hình yêu cầu một hàm.

  • choices[0].finish_reason – Cho biết lý do quá trình tạo nội dung dừng lại, chẳng hạn như stop, length hoặc tool_calls.

  • usage – Cung cấp thông tin sử dụng token, bao gồm số lượng token đầu vào, đầu ra và token được lưu đệm khi có.

Đối với phản hồi văn bản cơ bản, hãy đọc choices[0].message.content. Nếu mô hình trả về tool_calls, ứng dụng của bạn cần thực thi các hàm được yêu cầu và gửi kết quả của chúng trong một yêu cầu tiếp theo

Ví dụ về truyền phát

Đặt stream=True để nhận phản hồi của Kimi theo từng phần tăng dần. Ví dụ sau tái sử dụng client đã được cấu hình ở trên và in câu trả lời cuối cùng ngay khi nhận được:

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 trả về nội dung suy luận tách biệt với câu trả lời cuối cùng. Ví dụ này chỉ in delta.content, nên sẽ hiển thị phản hồi cuối cùng mà không xử lý trường reasoning_content riêng biệt.

Tóm tắt về gọi công cụ

Tính năng gọi công cụ cho phép Kimi yêu cầu các hàm bên ngoài khi một tác vụ cần thông tin hoặc hành động vượt ngoài khả năng phản hồi của riêng mô hình. Ví dụ, nếu người dùng hỏi: "Hôm nay tôi có nên mang ô khi ở Tokyo không?", Kimi có thể yêu cầu hàm get_weather để lấy thông tin dự báo.

Quy trình gồm ba bước:

  1. Khai báo hàm: Xác định get_weather và các đối số dự kiến của hàm trong tham số tools.

  2. Thực thi công cụ: Kimi trả về một mục tool_calls chứa tên hàm và các đối số. Ứng dụng của bạn thực thi hàm tương ứng và lấy dữ liệu thời tiết.

  3. Gửi kết quả trở lại: Thêm thông điệp trợ lý hoàn chỉnh của Kimi và kết quả công cụ (sử dụng tool_call_id tương ứng) vào cuộc trò chuyện, rồi gọi lại Kimi để tạo câu trả lời dành cho người dùng.

Ví dụ sau tái sử dụng client đã được cấu hình ở trên. Trước khi chạy, hãy đảm bảo bạn đã triển khai hàm get_weather(city) trả về dữ liệu thời tiết có thể tuần tự hóa thành JSON. Hàm này do ứng dụng của bạn thực thi, không phải 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)

Ở đây, get_weather() đại diện cho một hàm do ứng dụng của bạn triển khai, không phải hàm được Kimi thực thi trực tiếp. Kimi quyết định khi nào cần yêu cầu hàm này và cung cấp các đối số; ứng dụng của bạn thực hiện thao tác thực tế và trả về kết quả.

Trong môi trường production, hãy triển khai một vòng lặp xử lý từng lệnh gọi công cụ, thêm các kết quả tương ứng vào cuộc trò chuyện và gửi lại các thông điệp đã cập nhật cho Kimi. Lặp lại chu trình này cho đến khi mô hình trả về câu trả lời cuối cùng mà không yêu cầu thêm công cụ nào.

Vì sao tính tương thích "OpenAI-compatible" quan trọng khi chọn nhà cung cấp

Nhiều nhà cung cấp hỗ trợ định dạng OpenAI Chat Completions, cho phép nhà phát triển tái sử dụng các SDK và cấu trúc yêu cầu quen thuộc. Việc chuyển đổi thường chỉ cần cập nhật URL cơ sở, khóa API và ID mô hình, sau đó kiểm tra các tham số được hỗ trợ cũng như cách xử lý phản hồi. Khi so sánh các nhà cung cấp, hãy cân nhắc những yếu tố sau:

  1. Mức độ tương thích: Hãy xác minh rằng tính năng streaming, gọi công cụ, đầu ra có cấu trúc và báo cáo usage hoạt động đúng như ứng dụng của bạn mong đợi. Tương thích cùng định dạng API không đảm bảo khả năng hỗ trợ tính năng hoặc hành vi phản hồi giống hệt nhau giữa các nhà cung cấp.

  2. Chất lượng mô hình cho khối lượng công việc của bạn: Sự kết hợp ngôn ngữ và các loại tác vụ của bạn quan trọng hơn các điểm chuẩn chung.

  3. Cửa sổ ngữ cảnh: Các mô hình ngữ cảnh dài có thể đơn giản hóa một số quy trình xử lý tài liệu nhờ xử lý nhiều tài liệu nguồn hơn trong một yêu cầu duy nhất.

  4. Cơ chế chi phí: Ưu đãi cho bộ nhớ đệm và xử lý theo lô thường có tác động lớn hơn mức giá token được quảng bá.

  5. Độ rộng hệ sinh thái: Các endpoint tương thích bổ sung, như Responses và Anthropic Messages, có thể mang lại nhiều lựa chọn tích hợp và tính linh hoạt hơn khi ứng dụng của bạn phát triển.

Kimi API: Nhà cung cấp tương thích OpenAI nổi bật

Kimi API, do Moonshot AI phát triển, là lựa chọn đáng cân nhắc nếu bạn đang tìm kiếm một nhà cung cấp tương thích OpenAI, đặc biệt cho các ứng dụng tiếng Trung, xử lý tài liệu dài và tác tử lập trình. API này kết hợp các mô hình tích hợp API quen thuộc với khả năng ngữ cảnh dài và suy luận của Kimi.

Tương thích thay thế trực tiếp

Nếu ứng dụng của bạn đã sử dụng OpenAI Python SDK, bạn có thể tích hợp Kimi mà không cần viết lại toàn bộ quy trình yêu cầu. Chỉ cần cập nhật cấu hình API, gồm base_url, api_key và ID mô hình, đồng thời vẫn sử dụng giao diện Chat Completions quen thuộc.

Ví dụ sau đọc một báo cáo cục bộ từ report.txt, gửi nội dung của báo cáo đến Kimi K3.1 Pro để tóm tắt và truyền trực tiếp phản hồi được tạo:

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)

Ở đây, client tái sử dụng ứng dụng khách Kimi đã được khởi tạo trước đó với khóa API đọc từ biến môi trường. Chọn URL cơ sở theo khu vực của bạn: https://api.moonshot.ai/v1 cho nền tảng quốc tế hoặc https://api.moonshot.cn/v1 cho người dùng truy cập API tại Trung Quốc đại lục.

Cách tiếp cận này cho phép bạn giữ nguyên quy trình OpenAI SDK hiện có trong khi sử dụng các mô hình Kimi cho những tác vụ như tóm tắt tài liệu và các ứng dụng khác dựa trên API.

Điểm khác biệt của Kimi

  • Mô hình chủ lực với cửa sổ ngữ cảnh 1M token: Kimi K3.1 Pro hỗ trợ cửa sổ ngữ cảnh lên đến 1M token và khả năng hiểu hình ảnh nguyên bản. Nhà phát triển có thể làm việc với các cơ sở mã lớn, tài liệu dài cỡ sách và dữ liệu đầu vào là hình ảnh trong một quy trình duy nhất, phù hợp cho các ứng dụng suy luận phức tạp, lập trình và đa phương thức.

  • Tối ưu hóa chi phí linh hoạt: Kimi API hỗ trợ lưu vào bộ nhớ đệm ngữ cảnh tự động cho các tiền tố yêu cầu lặp lại và suy luận Batch API cho các tác vụ quy mô lớn không cần phản hồi theo thời gian thực. Chi phí bộ nhớ đệm và giá Batch phụ thuộc vào mô hình cũng như các quy tắc định giá áp dụng. Hãy xem bảng giá Kimi API chính thức để biết mức giá và thông tin thanh toán hiện hành.

  • Khả năng tương thích giữa các hệ sinh thái API: Kimi cung cấp các endpoint API Chat Completions và Responses tương thích OpenAI, cũng như một endpoint tương thích Anthropic Messages. Nhà phát triển có thể tích hợp Kimi K3.1 Pro vào các quy trình hiện có bằng SDK và định dạng API quen thuộc, với các điều chỉnh tùy theo endpoint và tính năng được hỗ trợ.

Kết luận

Bắt đầu với Chat Completions API rất đơn giản: hãy cấu hình thông tin xác thực API, gửi yêu cầu và đọc phản hồi được tạo từ choices[0].message.content. Khi lệnh gọi API đầu tiên hoạt động, bạn có thể mở rộng việc tích hợp theo nhu cầu của ứng dụng bằng cách thêm hội thoại nhiều lượt, phản hồi truyền phát hoặc gọi công cụ. Sẵn sàng xây dựng với Kimi? Hãy lấy khóa Kimi API và bắt đầu gửi yêu cầu API.

Câu hỏi thường gặp

Không. Chat Completions API không dành riêng cho các mô hình OpenAI. Những nhà cung cấp AI khác, bao gồm Kimi, cũng cung cấp API theo định dạng Chat Completions tương thích OpenAI. Điều này cho phép nhà phát triển tái sử dụng các SDK và cấu trúc yêu cầu quen thuộc với những mô hình được hỗ trợ từ các nhà cung cấp khác nhau, dù khả năng hỗ trợ tính năng có thể khác nhau.
Cả hai API đều cho phép ứng dụng tương tác với các mô hình AI, nhưng sử dụng cấu trúc yêu cầu và phản hồi khác nhau. Chat Completions sử dụng mảng messages và trả về phản hồi qua mảng choices. Responses API sử dụng cấu trúc đầu vào và đầu ra linh hoạt hơn, hỗ trợ nhiều loại nội dung và tương tác với công cụ. Cách quản lý trạng thái hội thoại khác nhau tùy nhà cung cấp. Với Responses API của Kimi, ứng dụng nên đưa lịch sử hội thoại liên quan vào từng yêu cầu thay vì dựa vào việc liên kết theo ID phản hồi.
Nếu ứng dụng của bạn sử dụng OpenAI SDK, thông thường bạn có thể chuyển sang Kimi bằng cách cập nhật ba giá trị cấu hình: base_url thành điểm cuối API của Kimi, api_key thành khóa Kimi API của bạn và model thành ID mô hình Kimi được hỗ trợ. Sau đó, hãy kiểm thử phần tích hợp để xác minh các tham số và tính năng mà ứng dụng của bạn cần dùng, chẳng hạn như truyền phát và gọi công cụ, đều được hỗ trợ.
Có thể bạn cũng sẽ thích
API mô hình: Hướng dẫn cho nhà phát triển về Kimi API
API mô hình: Hướng dẫn cho nhà phát triển về Kimi API
2026-11-14
API tương thích OpenAI: Hướng dẫn thực tế cho nhà phát triển
API tương thích OpenAI: Hướng dẫn thực tế cho nhà phát triển
2026-11-14
API AI: Là gì, hoạt động như thế nào và cách sử dụng
API AI: Là gì, hoạt động như thế nào và cách sử dụng
2026-11-14
Cách cài đặt Tác tử Hermes: Hướng dẫn thiết lập dành cho người mới bắt đầu
Cách cài đặt Tác tử Hermes: Hướng dẫn thiết lập dành cho người mới bắt đầu
2026-11-05
Giá Kimi K3 | Gói, Thành viên & Chi phí API
Giá Kimi K3 | Gói, Thành viên & Chi phí API
2026-10-27