> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rockapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Chuyển sang API tương thích OpenAI: Python, Node.js và kiểm nhận

> Cấu hình Python, Node.js, curl rồi kiểm tra quyền mô hình, truyền luồng, công cụ, lỗi và mức sử dụng đã quyết toán trước khi chuyển ứng dụng.

**API tương thích OpenAI** hỗ trợ các dạng yêu cầu và phản hồi kiểu OpenAI đã được tài liệu hóa. Bạn có thể tái sử dụng ứng dụng khách cho thao tác được hỗ trợ, nhưng đổi URL cơ sở chỉ là bước đầu. ID mô hình, tham số, công cụ, sự kiện truyền luồng và cách xử lý lỗi vẫn phải được kiểm tra riêng.

## Chuẩn bị tài khoản và tham số

Chọn mô hình trò chuyện trong [danh mục hiện tại](https://rockapi.ai/pricing), sao chép đúng ID và xác nhận quyền của tài khoản cùng nhóm. Tạo khóa Rock API tại [trang khóa API](https://rockapi.ai/keys); khóa của nhà cung cấp gốc không thay thế được. Đọc [hướng dẫn tính phí](https://docs.rockapi.ai/vi/pricing-and-billing.md) và kiểm tra số dư cần thiết.

Lưu khóa phía máy chủ trong `ROCK_API_KEY`, đặt ID đã chọn vào `ROCK_API_MODEL`. Các ví dụ giả định máy đã có curl hoặc gói `openai` cho ngôn ngữ đang dùng. Chúng minh họa Chat Completions, không xác nhận mọi phương thức SDK hay API gốc đều được hỗ trợ. Người mua không cần cấu hình kênh nhà cung cấp.

## Tạo yêu cầu tối thiểu làm mốc

URL cơ sở đầy đủ của SDK là `https://rockapi.ai/v1`. Không thêm một `/v1` nữa và không đưa `/chat/completions` vào thiết lập URL cơ sở. curl dùng điểm cuối đầy đủ:

```bash theme={null}
curl --fail-with-body https://rockapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $ROCK_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$ROCK_API_MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"Hãy trả lời xin chào.\"}]}"
```

### Ví dụ Python

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://rockapi.ai/v1",
    api_key=os.environ["ROCK_API_KEY"],
)
response = client.chat.completions.create(
    model=os.environ["ROCK_API_MODEL"],
    messages=[{"role": "user", "content": "Hãy trả lời xin chào."}],
)
print(response.choices[0].message.content)
```

### Ví dụ Node.js

```javascript theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://rockapi.ai/v1",
  apiKey: process.env.ROCK_API_KEY,
});
const response = await client.chat.completions.create({
  model: process.env.ROCK_API_MODEL,
  messages: [{ role: "user", content: "Hãy trả lời xin chào." }],
});
console.log(response.choices[0].message.content);
```

## Kiểm nhận từng tính năng ứng dụng cần

Bắt đầu không có tham số tùy chọn, sau đó thêm từng chức năng cần thiết. Ghi lại phiên bản SDK, ID mô hình, dữ liệu vào và kết quả mong đợi để tái hiện khác biệt.

| Hạng mục | Bằng chứng đạt yêu cầu |
| - | - |
| Phản hồi cơ bản | Đủ trường cần dùng, nội dung hữu ích, lý do kết thúc phù hợp |
| Truyền luồng nếu hỗ trợ | Đọc SSE, kết thúc, hủy và ngắt luồng được xử lý |
| Công cụ nếu hỗ trợ | Kiểm tra đối số, kết quả công cụ và lượt mô hình tiếp theo |
| Dữ liệu có cấu trúc hoặc đa phương thức | Đúng lược đồ hay đầu vào truyền thông ứng dụng cần |
| Lỗi và giới hạn | Xử lý đầu vào sai, thiếu quyền, hết thời gian và `429` |
| Tính phí | Có nhật ký khớp, loại sử dụng, nhóm và phí cuối cùng |

Một câu trả lời văn bản thành công không xác nhận hình ảnh hoặc công cụ. Mỗi mô hình có thể có chức năng và hành vi khác nhau dù dùng chung điểm cuối. Xem [đánh giá mô hình theo nhiệm vụ](https://docs.rockapi.ai/vi/blog/buyers/ai-model-api-comparison.md).

## Chuyển dần và giữ khả năng quay lại

Phát lại các yêu cầu đại diện đã loại dữ liệu nhạy cảm trong môi trường thử nghiệm. So sánh chất lượng, độ trễ, lỗi và chi phí mỗi kết quả đạt. Giới hạn số lần thử lại để tránh công việc trùng và chi phí mất kiểm soát; không lặp vô hạn lỗi xác thực. Tra [lỗi và giới hạn](https://docs.rockapi.ai/vi/errors-and-rate-limits.md), giữ thời điểm và ID nhưng không lưu khóa hay lời nhắc riêng tư vào báo cáo.

Chỉ tăng lưu lượng thật sau khi kiểm nhận, đồng thời giữ cấu hình cũ để khôi phục. Đối chiếu mức sử dụng đã quyết toán; giảm số dư tạm thời hoặc lỗi HTTP không đủ để xác định khoản phí cuối cùng.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.