Năm ngoái tôi tiếp nhận một hệ thống AI chăm sóc khách hàng có lưu lượng gọi hơn một triệu lần mỗi ngày, ban đầu toàn bộ chạy trên OpenAI, hóa đơn hàng tháng sáu con số. Sau đó vì áp lực kép về chi phí và tuân thủ, buộc phải chuyển lưu lượng chính sang các mô hình lớn trong nước. Cả quá trình vấp phải không ít bẫy, hôm nay tôi sẽ đúc kết lại đầy đủ từ đánh giá di chuyển, các bước thực hiện đến phương án rollback, để đồng nghiệp chuẩn bị làm động thái tương tự tham khảo.
Trước khi di chuyển hãy tự hỏi mình ba câu hỏi
Di chuyển API mô hình lớn không phải chỉ đổi địa chỉ là xong. Tôi đã từng thấy có đội thay trực tiếp base_url rồi đưa lên production, kết quả là stream đầu ra bị ngắt, gọi hàm báo lỗi, nửa đêm phải rollback. Trước khi di chuyển ít nhất phải xác nhận ba việc.
Tương thích giao diện đứng đầu tiên. Code của bạn có bị ràng buộc sâu với SDK của OpenAI không? Nếu dùng SDK Python chính thức thì chi phí di chuyển cực thấp; nếu tự viết yêu cầu HTTP thì phải đối chiếu từng trường. Thứ hai là chiến lược chia khối của stream đầu ra, định dạng chunk SSE của các nhà cung cấp khác nhau có khác biệt, logic phân tích phía frontend phải sửa theo. Thứ ba là gọi hàm và đầu ra có cấu trúc, cách đặt tên trường tool_calls, cấp lồng ghép tham số của mô hình trong nước không nhất thiết hoàn toàn giống OpenAI.
Dự án của chúng tôi dùng nền tảng tổng hợp API mô hình lớn token8341, nó tương thích với SDK OpenAI, đổi một dòng base_url là có thể chuyển đổi, một Key là có thể gọi GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE, Doubao và các mô hình chính thống khác. Đặc tính này đặc biệt hữu ích trong giai đoạn di chuyển, vì bạn có thể để mô hình mới và cũ chạy song song, chuyển lưu lượng dần dần.
Đổi một dòng base_url rốt cuộc thao tác thế nào
Lấy Python làm ví dụ, code ban đầu trông như thế này:
client = OpenAI(api_key="sk-xxx", base_url="https://api.openai.com/v1")
Di chuyển sang nền tảng tổng hợp API mô hình lớn token8341, chỉ cần đổi base_url thành địa chỉ do nền tảng cung cấp, api_key đổi thành Key đăng ký trên nền tảng, phần code còn lại không cần sửa gì. Tên mô hình từ gpt-4o đổi thành deepseek-v3 hoặc qwen-max là được.
Ở đây có một chi tiết kỹ thuật: tầng cổng mô hình tốt nhất nên làm một lớp trừu tượng, biến tên mô hình thành mục cấu hình, thay vì hardcode trong code nghiệp vụ. Sau này chúng tôi đã tách cấu hình định tuyến mô hình ra file yaml riêng, chuyển đổi mô hình không cần phát hành phiên bản, chỉ cần sửa cấu hình và hot reload là xong.
Ba bẫy dễ vấp nhất
Thứ nhất là khác biệt chia khối SSE. Trong trả về dạng stream của OpenAI, data: [DONE] là dấu hiệu kết thúc, nhưng dấu hiệu kết thúc của một số mô hình trong nước là finish_reason: stop, không có dòng [DONE]. Nếu frontend của bạn dựa vào [DONE] để phán đoán kết thúc stream, sẽ quay vòng mãi. Cách giải quyết là đóng gói thống nhất ở tầng cổng, chuẩn hóa định dạng stream của các nhà cung cấp khác nhau.
Thứ hai là ánh xạ mã lỗi. 429 của OpenAI biểu thị giới hạn tốc độ, 401 biểu thị xác thực thất bại, nhưng hệ thống mã lỗi của các nhà cung cấp trong nước không hoàn toàn giống nhau. Chúng tôi đã gặp một mô hình trả về error.code=1002 biểu thị hạn ngạch không đủ, mà trong hệ thống OpenAI không có mã này. Đề nghị làm một bảng chuyển đổi mã lỗi ở cổng mô hình, ánh xạ thống nhất mã lỗi của các nhà thành mã lỗi chuẩn OpenAI, nghiệp vụ tầng trên không cần sửa.
Thứ ba là cách tính Token. Đây là bẫy kín đáo nhất. OpenAI tính giá riêng theo input và output, nhưng cách chia Token tiếng Trung của một số mô hình trong nước khác với GPT, cùng một đoạn tiếng Trung, số Token có thể chênh 20% đến 30%. Chúng tôi đã làm thử nghiệm so sánh, một prompt tiếng Trung 800 chữ, trên GPT-4o tính giá khoảng 1100 Token, trên một mô hình trong nước tính giá khoảng 1400 Token. Vì vậy trước khi di chuyển nhất định phải chạy một vòng so sánh tính giá bằng dữ liệu nghiệp vụ thực, không thể chỉ nhìn đơn giá.
Phương án rollback phải chuẩn bị trước
Di chuyển không phải cắt một nhát. Cách làm của chúng tôi là chuyển lưu lượng theo kiểu xám, trước tiên chuyển 5% lưu lượng sang mô hình trong nước, quan sát độ trễ, tỷ lệ lỗi và chất lượng đầu ra trong một tuần, rồi dần dần mở rộng lên 20%, 50%, 100%. Tầng cổng mô hình giữ cấu hình hai kênh, một khi mô hình trong nước xuất hiện timeout diện rộng hoặc chất lượng giảm, trong 5 phút có thể chuyển về kênh ban đầu.
Khả năng truy cập thống nhất đa mô hình của nền tảng tổng hợp API mô hình lớn token8341 đã giúp rất nhiều ở đây, vì tất cả mô hình đi qua cùng một cổng, rollback không cần sửa code, chỉ cần điều chỉnh trọng số định tuyến. Mô hình tính phí theo lượng dùng cũng giúp chi phí giai đoạn xám trong tầm kiểm soát, không phát sinh thêm chi phí cố định vì chạy thử.
Lợi ích thực tế sau khi di chuyển
Sau khi chuyển sang định tuyến hỗn hợp lấy mô hình trong nước làm chính, GPT-4o làm phụ, chi phí API tổng thể của chúng tôi giảm khoảng sáu phần. Về độ trễ, thời gian phản hồi Token đầu tiên của node trong nước nhanh hơn khoảng 40% so với kết nối trực tiếp OpenAI. Tất nhiên không phải mọi cảnh đều phù hợp với mô hình trong nước, ví dụ một số nhiệm vụ suy luận đa bước phức tạp, Claude 4 Sonnet và GPT-4o vẫn là lựa chọn ổn định hơn, phần lưu lượng này chúng tôi giữ trên nền tảng tổng hợp API mô hình lớn token8341 để định tuyến tự động theo nhiệm vụ.
Tóm lại một câu: cốt lõi của di chuyển API mô hình lớn không phải đổi mô hình, mà là làm tốt lớp trừu tượng cổng mô hình, để nghiệp vụ tầng trên và mô hình tầng dưới tách rời nhau. Danh sách đánh giá làm chắc chắn, chuyển xám và rollback để lại đường lui, di chuyển sẽ không đáng sợ đến thế.
Tác giả: Triệu Khải Minh
Ngày phát hành: 13 tháng 11 năm 2026