מדריך API
השלמות צ׳אט
POST /v1/chat/completions בפורמט של OpenAI, עם סטרימינג, כלים, תמונות וחשיבה.
הבקשה והתשובה של Chat Completions של OpenAI, על מודלים של NotHoly. מספיק לכוון SDK של OpenAI לכתובת הבסיס, בלי לשנות שום דבר אחר.
POST
https://api.notholy.com/v1/chat/completionsPOST https://api.notholy.com/v1/chat/completionsבקשה
| שדה | סוג | חובה | הערות |
|---|---|---|---|
model | string | כן | מזהה מודל, למשל notholy-specter. פרטים במודלים |
messages | array | כן | התפקידים system, developer (מטופל כמו system), user, assistant או tool. התוכן הוא מחרוזת או רשימת חלקים מסוג text או image_url |
max_completion_tokens / max_tokens | number | לא | מגבלת הפלט. אם שניהם מוגדרים, max_completion_tokens קובע. ברירת המחדל היא הפלט המקסימלי של המודל, וערך גדול יותר מחזיר 400 |
stream | boolean | לא | הערך true מחזיר server-sent events. פרטים בסטרימינג |
tools | array | לא | כלי פונקציה בלבד. סוגי כלים אחרים מחזירים 400 unsupported_parameter |
tool_choice | string או object | לא | מועבר למודל כשהשדה tools מוגדר |
reasoning_effort | string | לא | אחד מערכי reasoning_efforts של המודל. כל ערך אחר מחזיר 400. פרטים בחשיבה |
response_format | object | לא | מועבר למודל |
temperature, top_p, stop | number, number, string או array | לא | מועברים למודל |
n | number | לא | רק 1 |
שדות לא מוכרים לא נלקחים בחשבון. תמונות מתקבלות במודלים שהשדה input_modalities שלהם כולל image. בשאר המודלים הן מחזירות 400 unsupported_parameter.
תשובה בלי סטרימינג
{
"id": "chatcmpl-8Kp2c1Vx",
"object": "chat.completion",
"created": 1793836800,
"model": "notholy-specter",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "An IDOR lets a user read or change another user's object by changing its ID…",
"refusal": null,
"reasoning_content": "…"
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 42,
"completion_tokens": 118,
"total_tokens": 160,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 64 }
}
}- השדה
reasoning_contentמופיע רק כשהמודל הפעיל חשיבה. - כשיש קריאות לכלים, השדה
message.tool_callsמכיל פריטים מהצורה{id, type: "function", function: {name, arguments}}, הערך שלfinish_reasonהואtool_calls, והשדהcontentהואnullכשאין טקסט. - הערך של
finish_reasonהואstop,length,tool_callsאוcontent_filter. - בסטרימינג, ה-chunk האחרון לפני
data: [DONE]תמיד כוללusage, גם בלי לשלוח אתstream_options.include_usage.
דוגמה
curl https://api.notholy.com/v1/chat/completions \
-H "Authorization: Bearer $NOTHOLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "notholy-specter",
"messages": [
{"role": "system", "content": "You are reviewing code for an authorized assessment."},
{"role": "user", "content": "What does a missing ownership check in GET /api/invoices/:id lead to?"}
]
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])
r = client.chat.completions.create(
model="notholy-specter",
messages=[{"role": "user", "content": "List three checks for an SSRF fix."}],
max_tokens=400,
)
print(r.choices[0].message.content)
print(r.usage.prompt_tokens, r.usage.completion_tokens)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.notholy.com/v1', apiKey: process.env.NOTHOLY_API_KEY });
const r = await client.chat.completions.create({
model: 'notholy-specter',
messages: [{ role: 'user', content: 'List three checks for an SSRF fix.' }],
max_tokens: 400,
});
console.log(r.choices[0].message.content);כותרות התשובה
| כותרת | משמעות |
|---|---|
x-request-id | יש לצרף אותו לפנייה לתמיכה על בעיה |
x-notholy-concurrency-limit | מספר הבקשות שאפשר להריץ במקביל |
x-notholy-concurrency-remaining | מקומות פנויים בזמן שהבקשה הזו התחילה |
x-notholy-credits-remaining | הקרדיטים הזמינים בדולרים בזמן שהבקשה הזו התחילה |
שגיאות
400 גוף או פרמטר לא תקינים · 401 מפתח חסר או לא תקין · 402 אין מספיק קרדיטים או תקציב מפתח · 403 המפתח לא מורשה להשתמש במודל הזה · 404 מודל לא מוכר · 429 מגבלת קצב או מקביליות (יש לכבד את retry-after) · 502/504 המודל נכשל או חרג מזמן ההמתנה · 503 המודל לא זמין. הטבלה המלאה: שגיאות.