BestPrivateAI API — מסמך עזר
endpoint אחד תואם OpenAI, מודל אחד, מפתח אחד. אם הקוד שלך כבר מדבר עם /v1/chat/completions, החלף את כתובת ה-URL הבסיסית ואת המפתח, והוא ידבר איתנו.
כתובת URL בסיסית ואימות
Base URL: https://api.bestprivateai.com/v1
Header: Authorization: Bearer sk-…
מפתחות נוצרים ב-עמוד המפתחות. מפתח מוצג פעם אחת בלבד, בעת היצירה; אנחנו שומרים hash ואת שש התווים האחרונים שלו. שלח אותו רק ב-HTTPS ורק בכותרת Authorization — לעולם לא בתוך URL.
הכול הוא JSON (Content-Type: application/json). התגובות משתמשות בסכימה של OpenAI, כך שה-SDK הרשמיים של openai וכל לקוח תואם OpenAI פועלים בלי שינוי.
מודלים
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
יש מודל אחד, notrack-uncensored: הכוונון שלנו, המוגש על החומרה שלנו. כל מה שתעביר בשדה model מנותב אליו; השתמש במזהה הציבורי כדי שהלוגים שלך יתאימו לשלנו.
Chat completions
POST /v1/chat/completions
{
"model": "notrack-uncensored",
"messages": [
{ "role": "system", "content": "You are Mira, a wry bartender in 1920s Berlin." },
{ "role": "user", "content": "Evening. What's good tonight?" }
],
"max_tokens": 400,
"temperature": 0.9
}
תגובה — הצורה הסטנדרטית, עם ספירת טוקנים אמיתית ב-usage (זה הבסיס לחיוב שלך):
{
"id": "chatcmpl-…", "object": "chat.completion", "model": "notrack-uncensored",
"choices": [ { "index": 0, "finish_reason": "stop",
"message": { "role": "assistant", "content": "…" } } ],
"usage": { "prompt_tokens": 41, "completion_tokens": 118, "total_tokens": 159 }
}
ה-system prompt שלך מנהל את השיחה. אנחנו מוסיפים בתחילה שורה אחת בלבד — הזהות של המודל (שהוא notrack-uncensored, שנוצר על ידי BestPrivateAI) — ולא יותר מזה: אין חוקים, אין מסנן נושאים. הודעת המערכת שלך מגיעה אחריה וקובעת את הפרסונה, הסגנון וכל השאר. החריג היחיד נמצא ב-מדיניות תוכן.
Streaming
הגדר "stream": true וקרא server-sent events, בדיוק כמו ב-OpenAI. הקטע האחרון נושא את usage (אנחנו כוללים אותו תמיד, בין אם ביקשת stream_options ובין אם לא), ואז data: [DONE].
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Ev"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"ening"}}]}
…
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":118,"total_tokens":159}}
data: [DONE]
פרמטרים
| שדה | הערות |
|---|---|
messages | שדה חובה. תפקידים system, user, assistant. טקסט בלבד לעת עתה — חלקי תמונה נדחים. |
model | השתמש ב-notrack-uncensored. |
stream | true עבור SSE. stream_options.include_usage מופעל תמיד. |
max_tokens | תקרה על ה-completion. ה-prompt + ה-completion צריכים להיכנס בחלון של 64,000 טוקנים. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | מועבר למודל כמו ב-OpenAI. אם לא תשלח temperature נשתמש ב-0.85, בדיוק כמו בצ'אט שלנו. n > 1 מכפיל את עלות הפלט. |
tools, tool_choice | נתמך: auto, none, required, או פונקציה בשם מוגדר. התגובה נושאת tool_calls ו-finish_reason: "tool_calls"; שלח את התוצאה בחזרה כהודעת role: "tool". כשקיימים tools, תגובה בזרימה מגיעה כקטע אחד לכל קריאה ולא טוקן אחר טוקן. |
response_format | {"type": "json_object"} נתמך (ציין ב-prompt איזה JSON אתה רוצה). json_schema והשדה הישן functions אינם נתמכים. |
מגבלות וכותרות תגובה
| מגבלה | ערך | כשחוצים אותה |
|---|---|---|
| בקשות מקבילות למפתח | 8 | 429 concurrency |
| בקשות בדקה למפתח | 300 | 429 rate_limit |
| חלון הקשר (prompt + completion) | 64,000 טוקנים | 400 context_limit — קצץ את ההיסטוריה וניסה שוב |
| הוצאה יומית למפתח (אופציונלי) | מוגדר על ידך בעמוד המפתחות | 402 key_daily_cap עד 00:00 UTC |
כל תגובה מוצלחת נושאת:
| כותרת | משמעות |
|---|---|
X-Request-Id | ציטוט שלו כשכותבים לתמיכה; זה הדבר היחיד שאנחנו שומרים על בקשה. |
X-NoTrack-Balance-USD | היתרה שלך לפני החיוב על בקשה זו, בדולרים. |
X-RateLimit-Limit-Requests | בקשות בדקה המותרות למפתח זה. |
X-RateLimit-Limit-Concurrency | בקשות מקבילות המותרות למפתח זה. |
X-NoTrack-Content-Flag | רק בסירוב תוכן: minor_in_sexual_context או child_safety. |
שגיאות
שגיאות הן JSON עם type יציב; ה-message מיועד לבני אדם ועשוי להשתנות.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
| HTTP | type | מה לעשות |
|---|---|---|
| 400 | body | JSON לא תקין או ללא messages. |
| 400 | context_limit | ה-prompt ארוך מכדי להיכנס לחלון של 64,000 טוקנים. הסר תורות ישנות יותר. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | הסצנה נקראת כמינית ודמות נקראת כקטינה. הפוך את הדמויות לחד-משמעית בוגרות ושלח מחדש; לא מחויב. |
| 401 | auth, invalid_key, key_revoked, key_expired | תקן או החלף את המפתח. |
| 402 | no_credit | היתרה היא אפס. טעינה; הבקשות מתחדשות באופן מיידי. |
| 402 | key_daily_cap | מפתח זה הגיע לתקרה היומית שהגדרת. העלה אותה או המתן ל-00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | נדחה ולא חויב. ראה מדיניות תוכן. |
| 429 | rate_limit, concurrency | האט וניסה שוב; כבד את שתי כותרות X-RateLimit-*. |
| 502 | upstream | המודל לא הגיב. ניסה שוב עם backoff; לא מחויב. |
| 503 | billing, safety | אחת מהתלויות שלנו לא זמינה. ניסה שוב בעוד כמה שניות; לא מחויב. |
חיוב
יתרה בתשלום מראש, מחויבת לפי טוקן על בסיס ה-usage האמיתי של כל תגובה: $0.25 ל-1M טוקני קלט, $1.00 ל-1M טוקני פלט. הקלט הוא כל מה שאתה שולח (system prompt, היסטוריה, ההודעה החדשה); הפלט הוא מה שהמודל כותב.
- המפתח הראשון שלך מגיע עם $0.50 יתרה חינם, בתוקף למשך 7 ימים — מספיק לאינטגרציה ובדיקה. דוא"ל מאושר נדרש למפתח (לשם נשלחת ההתראה "היתרה עומדת להסתיים"). יתרה בתשלום לעולם לא פגה.
- היתרה אינה פגה, אין מנוי ושום דבר לא מתחדש מעצמו. טען יתרה בכרטיס או ב-USDT/USDC בעמוד המפתחות.
- לא מחויב שום דבר עבור בקשות שנדחו (
4xx) או שנכשלו (5xx). בקשה מחויבת פעם אחת בלבד, אחרי התגובה, לפיX-Request-Idשלה. - היתרה מסתיימת ←
402 no_creditעד שתטען אותה מחדש. הגדר תקרה יומית על כל מפתח כדי שמפתח שדלף לא יוכל לרוקן את החשבון. - ניתן להחזיר קרדיטים שלא נוצלו תוך 24 שעות מהרכישה, או להחיל אותם מאוחר יותר על תוכנית. ראו קרדיטים והחזרים.
פרסונה — מודל עירום או הדמות של BestPrivateAI
לכל מפתח יש סגנון, שנבחר בעמוד המפתחות וניתן להחליף בכל עת:
- גולמי (ברירת מחדל) — ה-system prompt שלך הוא כל ה-prompt. אנחנו מוסיפים שורת זהות אחת ולא יותר מזה.
- פרסונת BestPrivateAI — הדמות והסגנון של הצ'אט ב-bestprivateai.com: ישיר, לא מסונן, לא מטיף מוסר, עונה בשפת המשתמש. אותו מודל, אותו מחיר, אותה מדיניות תוכן; רק ה-prompt שקודם להודעות שלך משתנה. הודעת המערכת שלך עדיין מגיעה אחריו ויכולה לכוונן אותו.
בקשה יכולה לעקוף את ההגדרה של המפתח, בין באמצעות שדה ובין באמצעות סיומת מודל (עבור לקוחות שיכולים להגדיר רק שם מודל):
{ "model": "notrack-uncensored", "notrack": { "persona": "notrack" }, "messages": [ … ] }
{ "model": "notrack-uncensored:notrack", "messages": [ … ] } // same thing, by model name
{ "model": "notrack-uncensored:bare", "messages": [ … ] } // force the bare model on a persona key
שמות פרסונה: notrack (הדמות הפשוטה), concise, detailed, creative (אותם וריאנטים שהצ'אט מציע), bare. כותרת התגובה X-NoTrack-Persona מציינת איזו מהן הופעלה.
מדיניות תוכן
אנחנו לא מוסיפים שום system prompt ולא מריצים מסנן נושאים. פיקציה למבוגרים, נושאים אפלים, שפה קשה, אלימות בפיקציה — המודל מגיב כפי שנכתב. כלל אחד מיושם בקוד ולא ניתן לכבות: כל תוכן מיני הכולל קטין נדחה.
403 child_safety— הבקשה חיפשה תוכן מיני הכולל ילד. נדחתה, לא חויבה, נרשמה כאירוע בטיחות.400 minor_in_sexual_context— הסצנה מינית ודמות נקראת כמתחת לגיל 18 (גיל מצוין, סביבה בית-ספרית, מסגור "ילדה/ילד"). זה לא איסור: הפוך את הגילאים ואת המסגור לחד-משמעית בוגרים ושלח מחדש.
403 חוזרים ונשנים על מפתח מובילים לסגירת המפתח, ולאחר מכן החשבון. הטקסט המלא נמצא ב-מדיניות השימוש המקובל.
פרטיות
prompts ו-completions לא נכתבים לדיסק — לא על ידי ה-gateway ולא על ידי שרתי המודל. מה שאנחנו שומרים לכל בקשה הוא מזהה הבקשה, מזהה המפתח, ספירות הטוקנים והמחיר, כי זה מה שמרכיב את החשבונית. סירובי בטיחות נרשמים לפי קטגוריה, בלי הטקסט. שום ספק מודל צד שלישי לא רואה אף פעם את התעבורה שלך: המודל רץ על חומרה שאנחנו שוכרים ושולטים בה.
לקוחות ו-SDK
האתר של BestPrivateAI והאפליקציה של BestPrivateAI הם הצ'אט שלנו — אין להם שדה למפתח API ולעולם לא יהיה. מפתח מיועד לתוכנות חיצוניות: הדבק אותו באחד מהלקוחות למטה, או בקוד שלך.
Python
from openai import OpenAI
client = OpenAI(base_url="https://api.bestprivateai.com/v1", api_key="sk-…")
stream = client.chat.completions.create(model="notrack-uncensored",
messages=[{"role": "user", "content": "Hello"}], stream=True)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.bestprivateai.com/v1", apiKey: process.env.API_KEY });
const r = await client.chat.completions.create({ model: "notrack-uncensored",
messages: [{ role: "user", content: "Hello" }] });
console.log(r.choices[0].message.content);
SillyTavern
API Connections ← API: Chat Completion ← Source: Custom (OpenAI-compatible) ← Custom Endpoint https://api.bestprivateai.com/v1 ← Custom API Key ← Connect ← Model notrack-uncensored. Streaming מופעל. שמור על גודל ההקשר ב-64,000 טוקנים או פחות.
Chatbox
Settings ← Model Provider ← Add ← Add Custom Provider, מצב OpenAI API Compatible ← הדבק את כתובת ה-URL הבסיסית והמפתח, ואז הוסף את notrack-uncensored כמודל.
NextChat
Settings ← הפעל Custom Endpoint (תואם OpenAI) ← כתובת URL בסיסית ומפתח, ואז הקלד את שם המודל בשדה המודל.
Cherry Studio
Settings ← Model Providers ← Add Provider ← הקלד OpenAI ← כתובת URL בסיסית ומפתח, ואז "Add model" ← notrack-uncensored.
LobeChat
Settings ← AI Service Provider ← OpenAI ← הפעל custom API endpoint, הדבק את כתובת ה-URL הבסיסית והמפתח, והוסף את המודל לרשימת המודלים.
כל דבר אחר
LangChain, LlamaIndex, Open WebUI, Continue, הגדרות ה-proxy של JanitorAI, curl — כל לקוח עם אפשרות "OpenAI-compatible" או "custom base URL".
הניסוח בתפריטים לעיל משתנה בין גרסאות האפליקציה — אם תווית מסוימת לא תואמת בדיוק, חפש הגדרה שמזכירה "custom", "OpenAI-compatible" או "base URL".
אם לקוח לא מתחבר
- 401 / "invalid API key" — המפתח לא הגיע כלל. ודא שהלקוח שולח
Authorization: Bearer sk-…עם המפתח המלא, כולל הקידומת. - 404 / endpoint לא מוכר — הלקוחות לא מסכימים אם הם מוסיפים
/v1בעצמם. אםhttps://api.bestprivateai.com/v1מחזיר 404, נסה במקום זאת אתhttps://api.bestprivateai.comככתובת URL בסיסית (או להפך). - "The Responses API is not supported yet" — חלק מהלקוחות החדשים יותר משתמשים כברירת מחדל ב-Responses API של OpenAI. אנחנו מספקים רק Chat Completions; החלף את הלקוח למצב הזה.
- רשימת מודלים ריקה — חלק מהלקוחות מאכלסים אותה רק אחרי בדיקת מפתח תקינה. הקלד את
notrack-uncensoredידנית. - שום דבר לא קורה בלקוח Ollama / llama.cpp — אלה מדברים בפרוטוקול שלהם, לא תואם OpenAI. השתמש באחד מהלקוחות שלמעלה במקום.
מפתחות
- עד 20 מפתחות פעילים לחשבון. תן לכל אפליקציה מפתח משלה ותקרה יומית משלה.
- תאריך תפוגה אופציונלי; ביטול מפתח מפסיק אותו באופן מיידי ולא ניתן לשחזור — הנפק מפתח חדש במקום.
- עמוד המפתחות מציג הוצאה לפי מפתח, שימוש אחרון והסכומים הכוללים של 30 הימים האחרונים בחשבון.
שאלות או מזהה בקשה לבדיקה: תמיכה · bestprivateai.com/support.