Lý do phản hồi JSON của bạn đang thất bại xác thực
Phân tích cú pháp JSON thất bại khi mô hình nối thêm văn bản hội thoại bên ngoài khối mã. Các mô hình không kiểm duyệt ưu tiên luồng ngôn ngữ tự nhiên, vì vậy chúng thường thêm "Đây là JSON" trước hoặc sau dữ liệu thô. Điều này làm hỏng các trình phân tích cú pháp nghiêm ngặt chỉ mong đợi đối tượng.
Sử dụng response_format tham số đặt thành {"type": "json_object"}. Điều này buộc mô hình chỉ xuất ra JSON hợp lệ. Nó loại bỏ nhu cầu về các kịch bản dọn dẹp regex trong mã của bạn. Tuy nhiên, lưu ý rằng điều này tiêu tốn nhiều token hơn cho mỗi yêu cầu vì mô hình bị ràng buộc.
- Đặt
response_formatđểjson_objecttrong phần tải trọng yêu cầu. - Đảm bảo prompt hệ thống của bạn yêu cầu rõ ràng đầu ra JSON.
- Xử lý các dấu phẩy thừa hoặc lỗi cú pháp nhỏ một cách duyên dáng nếu mô hình bị trượt.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Xử lý đúng giới hạn cửa sổ ngữ cảnh
Cửa sổ ngữ cảnh của bạn chứa 100.000 token tổng cộng, kết hợp cả đầu vào và đầu ra. Nếu bạn gửi một lịch sử dài, bạn phải giảm độ dài đầu ra tối đa. Độ dài đầu ra tối đa mặc định là 2.048 token trừ khi bạn chỉ định khác.
Tính toán số token còn lại bằng cách trừ kích thước đầu vào của bạn khỏi 100,000. Nếu bạn đang thực hiện nhập vai, hãy giữ cho lời nhắc hệ thống ngắn gọn. Chỉ lưu các lượt hội thoại gần đây trong yêu cầu API. Ngữ cảnh cũ có thể được tóm tắt hoặc cắt bớt. Điều này ngăn chặn việc chạm giới hạn cứng trong quá trình tạo nội dung.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Lỗi gọi hàm với các mô hình không kiểm duyệt
Gọi hàm thất bại khi mô hình bỏ qua các định nghĩa công cụ hoặc trả về các đối số không hợp lệ. Các mô hình không kiểm duyệt có thể ưu tiên các phản ứng sáng tạo hơn việc sử dụng công cụ nghiêm ngặt. Chúng có thể bịa đặt các tham số không tồn tại trong lược đồ của bạn.
Xác định công cụ của bạn rõ ràng trong tools mảng. Sử dụng tool_choice để bắt buộc hành vi cụ thể. Nếu mô hình từ chối gọi công cụ, hãy kiểm tra lời nhắc hệ thống của bạn xem có hướng dẫn mâu thuẫn không. Đảm bảo tên công cụ và mô tả không mơ hồ. Kiểm tra với các truy vấn đơn giản trước để xác minh tích hợp.
- Cung cấp tên công cụ và mô tả rõ ràng.
- Sử dụng
tool_choiceđể kiểm soát việc gọi. - Xác thực các đối số theo lược đồ của bạn trước khi thực thi.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'
Các gián đoạn luồng và xử lý SSE
Streaming qua Sự kiện gửi máy chủ (SSE) có thể làm mất token nếu máy khách ngắt kết nối hoặc mạng gặp sự cố. Chunk cuối cùng chứa thống kê sử dụng token. Bạn phải phân tích chunk này để lấy số lượng đầu vào và đầu ra.
Triển khai máy khách SSE robust xử lý logic kết nối lại. Không giả sử mọi chunk đều chứa dữ liệu. Một số chunk có thể trống hoặc chỉ chứa khoảng trắng. Xử lý chunk cuối cùng để cập nhật số dư tín dụng hoặc bộ đếm token của bạn. Điều này đảm bảo tính chính xác trong việc tính phí và theo dõi sử dụng.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Cài đặt nhiệt độ ảnh hưởng đến đầu ra NSFW
Nhiệt độ kiểm soát độ ngẫu nhiên trong đầu ra của mô hình. Các giá trị cao như 0.8 hoặc 0.9 tăng cường khả năng sáng tạo và khó dự đoán. Các giá trị thấp như 0.2 khiến đầu ra mang tính xác định và tập trung hơn. Đối với nhập vai NSFW, nhiệt độ cao tạo ra các phản hồi đa dạng và mãnh liệt hơn.
Thử nghiệm với các giá trị khác nhau để tìm sự cân bằng phù hợp. Nhiệt độ quá cao có thể dẫn đến văn bản không mạch lạc hoặc lặp lại. Nhiệt độ quá thấp có thể dẫn đến hội thoại máy móc hoặc nhàm chán. Điều chỉnh dựa trên giọng điệu và tính nhất quán mong muốn. Mô hình không kiểm duyệt phản ứng tốt với các cài đặt sáng tạo cao hơn.
- Sử dụng 0.7-0.9 cho đóng vai sáng tạo.
- Sử dụng 0.2-0.5 cho các nhiệm vụ thực tế hoặc lập trình.
- Theo dõi chất lượng đầu ra khi bạn điều chỉnh.
Top P and diversity in roleplay generation
Top P (nucleus sampling) limits the model to consider only the top percentage of probability mass. It works with temperature to control diversity. A low Top P value makes the output more predictable. A high value allows for more varied word choices.
Kết hợp Top P với nhiệt độ để kiểm soát tinh vi. Ví dụ: nhiệt độ cao kết hợp với Top P thấp có thể tạo ra văn bản sáng tạo nhưng tập trung. Điều này hữu ích để duy trì giọng điệu nhân vật trong khi vẫn cho phép các hành động ngẫu hứng. Hãy thử nghiệm các kết hợp khác nhau để phù hợp với phong cách kể chuyện của bạn.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Hiểu giới hạn token và chi phí
Sử dụng token ảnh hưởng trực tiếp đến tín dụng trả trước của bạn. API tính phí $0.15 cho mỗi triệu token đầu vào và $0.50 cho mỗi triệu token đầu ra. Token đầu ra đắt hơn vì chúng đại diện cho công việc của mô hình. Streaming không thay đổi chi phí; bạn trả tiền cho tất cả các token được tạo.
Theo dõi việc sử dụng token để tránh các khoản phí không mong muốn. Chunk SSE cuối cùng cung cấp số lượng token chính xác. Sử dụng dữ liệu này để cập nhật số dư hoặc bảng điều khiển thanh toán cục bộ của bạn. Lỗi và từ chối đều miễn phí, vì vậy bạn chỉ trả tiền cho các kết quả hoàn thành thành công. Mô hình trả tiền theo mức sử dụng này đảm bảo bạn không bao giờ trả quá nhiều.
- Token đầu vào có giá $0.15 mỗi triệu.
- Token đầu ra tốn $0.50 cho mỗi triệu token.
- Các lần từ chối và lỗi đều miễn phí.
Thay thế khóa API và giới hạn tốc độ
Mỗi tài khoản chỉ cho phép một khóa API hoạt động. Nếu bạn tạo lại khóa, khóa cũ sẽ không còn hiệu lực ngay lập tức. Điều này đảm bảo bảo mật nhưng yêu cầu bạn cập nhật các máy khách của mình kịp thời. Giới hạn tốc độ được đặt ở mức 300 yêu cầu mỗi phút và 8 yêu cầu đồng thời mỗi khóa.
Vượt quá các giới hạn này sẽ dẫn đến lỗi HTTP 429. Triển khai backoff theo cấp số nhân trong logic thử lại của bạn. Theo dõi khối lượng yêu cầu của bạn để duy trì trong giới hạn. Nếu bạn cần thông lượng cao hơn, hãy cân nhắc chia khối lượng công việc của bạn trên nhiều tài khoản hoặc tối ưu hóa kích thước lời nhắc của bạn. Khóa được hiển thị ngay lập tức sau khi đăng ký, vì vậy hãy giữ nó an toàn.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Khắc phục các lỗi HTTP phổ biến
Lỗi HTTP cho biết vấn đề với yêu cầu của bạn hoặc phản hồi từ máy chủ. Các lỗi phổ biến bao gồm 400 Bad Request, 401 Unauthorized và 429 Too Many Requests. Lỗi 400 thường có nghĩa là JSON không đúng định dạng hoặc tham số không hợp lệ. Lỗi 401 cho biết khóa API không chính xác hoặc đã hết hạn.
Kiểm tra các tiêu đề và tải trọng yêu cầu của bạn xem có lỗi cú pháp không. Xác minh rằng khóa API của bạn chính xác và còn hiệu lực. Nếu bạn nhận được lỗi 429, hãy đợi và thử lại với cơ chế backoff theo cấp số nhân. Sử dụng các SDK chính thức của OpenAI để xử lý các lỗi này tự động. Chúng cung cấp các thông báo lỗi rõ ràng và logic thử lại. Điều này giảm thời gian phát triển và cải thiện độ tin cậy.
- 400: Kiểm tra cú pháp JSON và các tham số.
- 401: Xác minh tính hợp lệ của khóa API.
- 429: Triển khai logic thử lại với backoff.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'