שפהעברית

AI שער

השתמש בחשבונות AI המחוברים לאירוע שלך AirCode Ø מהיישומים האישיים שלך. הזן את Base URLשל הדוגמה שלך, טוקן יישום נפרד ****, ו מודל מדויק ID. הדוגמה קוראת לספק המחובר שלה, CLI , ומחזירה את התשובה באמצעות תת-התמונה Chat Completions עבור טקסט ותת-התת-התמונה Images עבור תמונות.

Your application's backend
  → your instance URL + application token
    → a connected native provider account
      → validated answer + available usage counters

האתר מארח רק תיעוד. בקשות API הולכות ישירות לאינסטינקט שלך; aircodezero.com לא מקבל את כתובת האינסטינקט שלך, את התווית או את ההמלצות. השתמש בשירות זה רק עבור היישומים והחשבונות שלך. תנאי הספקים, גישה למנוי וקביעות עדיין חלים.

הגדרת האינסוף

  1. התחבר לחשבון ספקית מקורית תואם ב- AI שימוש. ה Gateway מפרט את מודלים החשבון המומחים על ידי האירוע המותקן; API-key ו חיבורי אשראי ממומנים אינם נכללים.
  2. במחשב או בדפדפן פתחו הגדרות → שער AI, ובנייד עוד → שער AI. תחת יצירת גישה הפעילו אפשר חיבורים פרטיים.
  3. הקפידו על Base URL. זה מסתיים ב- /api/ai-gateway/v1.
  4. תחת יצירת אסימון בחרו יישום, הזינו את שמו ובחרו יצירת אסימון. העתיקו את האסימון כשהוא מוצג בפעם היחידה. בחירה זו מאפשרת שימוש בטקסט ובתמונות דרך AI API, אך אינה מאפשרת הפעלות בין מופעים.
  5. הגדר את המשתנים האלה של הסביבה בצד השרת ביישום שלך:
משתנה ערך
AIRCODE_AI_BASE_URL הבסיס המלא URL עותק מהדוגמה, ללא תוספת /v1
AIRCODE_AI_TOKEN טוקן היישום שאתה רק יצר
AIRCODE_AI_MODEL מדויק id מ מודלים תואמים או GET /models

שמור את התוויות בסגנון הסודי של backend שלך, לא בקוד דפדפן, חבילה של אפליקציות ניידות, מחסן, URL או שיחה משותפת. הדוגמאות קוראות משתנים סביבתיים במקום להטביע אישורים. לעולם אל תשתמש בסיסמה של הדוגמה או בסיסמה לגישה של הבעלים בשדה API-key.

הדוגמה חייבת להישאר פועלת וגישה מהסוף האחורי של היישום שלך. localhost פירושו המחשב המפעיל את הספסל. השתמש בכתובת HTTPS של הדוגמה לגישה מרחוק, או חיבור הרשת המקומית/פרטית הנאמנה שלך. שער לא יוצר מקור ציבורי. ספק שאינו מופיע על ידי /models לא ניתן לבחור על ידי המצאת ID.

זיהוי וזיהוי מודל

שלח Authorization: Bearer YOUR_APPLICATION_TOKEN בכל שיחה. שלח JSON עם Content-Type: application/json. אין תמיכה בפרמטרים של בקשות או אימות קובצי Cookie. שיחות דפדפן בין מקורות אינן נתמכות; השתמש בסיפון שלך.

GET {BASE_URL}/models מחזיר אובייקט עם object: "list" ו- data . כל מודל מספק id תצוגת label, engine, engineLabel, provider, connectionLabel, efforts ו capabilities: chat.completions עבור דוגמאות טקסט, images.generations ו images.edits עבור מודל התמונה. העבירו את החזר id ללא שינוי; זה עשוי כבר להכיל אחוזים של קוד. הרשימה עשויה להשתנות כאשר משתנים חשבונות, גישה לספקים או מודלים מותקנים.

בשביל אחד OpenAI הגדרת יישום תואם, בחר צ’אט סיוםהשתמשו בבסיס מלא URL, לשים את היישום טוקן בתוכו API מפתח שדה, ולאחר מכן להעתיק אחד מזהה הדגם שהוחזר. התמונות משתמשות בתת קבוצת התמונות המתוארת למטה. יישום הדורש תשובות, כלים או פרמטרים של דגימה שאינם נתמכים אינו תואם את השער הנוכחי.

יצירת תגובה

POST {BASE_URL}/chat/completions מקבל את השדות הבאים. שדות לא ידועים נדחו במקום להתעלם בשתיקה.

שדה ערך נתמך
model דגם מדויק הנדרש ID החזר על ידי /models
messages מסדרה נדרשת של 1–100 הודעות; לפחות הודעת משתמש אחת שאינה ריקה
messages[].role system, developer, user או assistant
messages[].content שרשרת או סט של בלוקים { "type": "text", "text": "..." }
reasoning_effort ערך אופציונלי מ- effortsשל המודל הנבחר; תתעלם ממנו כברירת מחדל
stream Boolean אופציונלי; כברירת מחדל ל- false
stream_options רק { "include_usage": true } או false עבור דגל זה, עם stream: true
n הימנעות או שימוש 1
store הימנעות או שימוש false

הודעות מכילות רק role ו- content. בלוקי טקסט מצטרפים לניוזלטרים. דמויות אפס נדחו. המסדרת ההודעות הנורמליזציה חייבת להתאים בתוך 64 KiB של UTF-8 JSON; הגוף המלא של HTTP מוגבל ל- 80 KiB. התשובה המוסמכת מוגבלת ל-49,152 יחידות קוד שורת של JavaScript. אלה הם גבולות שערים, לא הבטחות על חלון הקשר של ספק או יכולת היציאה.

מספק את השיחה הרלוונטית המלאה בכל שיחה. כדי להמשיך בשיחה, להוסיף את התשובה הקודמת של העוזר ואת ההודעה הבאה של המשתמש. שער האינטרנט אינו יוצר או שומר שיחה, ישיבה או היסטוריית סיום. טוקן אינו מעניק גישה לפרויקטים, קבצים, טרמינלים, פגישות או הגדרות בעלים של דוגמאות.

התשובה הנורמלית היא object: "chat.completion"; קרא את הטקסט מ choices[0].message.content. זה כולל גם id, created, model, ו- finish_reason: "stop". חשבונות מקוריים מופיעים ב- usage כאשר הם מלאים מספיק כדי לדווח. הרחבה aircode_usage שומרת על פרטי חשבונאות ותחזיות לא מלאות. המחירים והמחירים שאינם ידועים, אף פעם לא אפס. API הערכות שווה ערך אינן תשלום מנוי נוסף.

זרימה

הגדר את stream: true כדי לקבל את Content-Type: text/event-stream. היישום הנוכחי משתמש ב- עם זרם מברק: הוא שולח הערה ראשונית מחכה ותגובות keepalive בזמן שהספק פועל, ולאחר מכן שולח את התשובה המלאה לאחר אימות. זה לא זרם מילים או טוקינים כפי שהם נוצרים.

זרם מוצלח מכיל:

  1. SSE הערות מתחילות עם : בזמן ההמתנה; התעלמו מהם.
  2. A data: JSON chat.completion.chunk עם תפקיד העוזר ומלא טקסט ב- choices[0].delta.content.
  3. חלק עם דלת ריקה ו- finish_reason: "stop".
  4. חתיכה אופציונלית עם choices: [], usage (אולי null) ו aircode_usage כאשר stream_options.include_usage הוא נכון.
  5. data: [DONE].

לאחר תחילת זרם, כשלונות מגיעים כאירוע SSE data: המכיל error; אל תתייחסו רק ל- HTTP 200 כאל הצלחה. זרם לא מוצלח נסגר ללא סימן ההצלחה. SSE מסגרות ניתן לחלק בין חתיכות תחבורה; השתמש SDK או SSE פרסר במקום לנתח כל חתיכת רשת כ JSON.

סגירת חיבור מבטל את בקשתו הפעילה. ביטול טוקן, ביטול השער או הפסקת האירוע גם מבטל את העבודה המתאימה. אין תרגום אוטומטי או חידוש. בקשות ממושכות דורשות לקוח מתאים ותקופה של פרוקסי הפוך; שומרים אינם יכולים להעלים את הגבול המוחלט של תקופת בקשה של רשת.

יצירת תמונה

מודל התמונה מופיע, בעוד שהחשבון המקורי של ההצגה Codex יכול להשתמש בכלי התמונה שלו, אשר דורש תוכנית ChatGPT הכוללת יצירת תמונה. id הוא codex/image-generation. Codex מחליט איזה מודל תמונה הוא משתמש; השער אינו בוחר אחד.

  • POST {BASE_URL}/images/generations לוקח JSON עם model, prompt (עד 32,000 תווים) וניתן לבחור size, n: 1 ו response_format: "b64_json".
  • POST {BASE_URL}/images/edits לוקח multipart/form-data עם אותם שדות ו-1 עד 4 תמונות הפניה ב- image או image[]. כל אחד חייב להיות PNG או JPEG של עד 4 MiB. שדות קבצים אחרים, כגון mask, נדחו.

size הוא auto או WIDTHxHEIGHT בין 64 ל 4096 פיקסלים. זה מועבר למודל כמנחה; התשובה מדווחת על הגודל האמיתי. כל שדה אחר נדחה במקום להתעלם.

curl -sS "$AIRCODE_AI_BASE_URL/images/edits" \
  -H "Authorization: Bearer $AIRCODE_AI_TOKEN" \
  -F model=codex/image-generation \
  -F "prompt=Place this product in a premium studio shot on a stone pedestal." \
  -F size=1024x1536 \
  -F image=@product.png

התשובה נושאת created, אחד data[0].b64_json, output_format (png, jpeg או webp), size ו- aircode_usage. החשבונאות מכסה את הסוכן שהניע את כלי התמונה; הספק אינו מדווח על העלות של כלי התמונה עצמו, ולכן costComplete הוא תמיד false. הדור בדרך כלל לוקח דקה עד שלוש דקות, חולק את הגבולות למטה עם שיחות טקסט ומבוטל כאשר הלקוח מתנתק. כאשר המודל עונה ללא תמונה, השיחה נכשלת עם 422 AI_GATEWAY_NO_IMAGE ואת המשפט של המודל, אם הוא נתן אחד.

חיבור אפליקציית AirCode Ø המאוחסנת באופן אוטומטי

יישום שנשמר ב- Apps המפעיל את השרת שלו יכול לקבל גישה זו מבלי להעתיק טוקן. בדף האפליקציה, פתח את הגדרות → גישה → AI חשבונות והפעיל אותו. AirCode Ø אז:

  1. פותח את שער הפרטי AI אם הוא היה מופעל;
  2. מחדש את האפליקציה, ובכל התחלה, נותן לשרת שלו טוקן חדש של משלה, ביטול ה- token של ההתחלה הקודמת;
  3. מצביע על AIRCODE_AI_BASE_URL (המשבר בכתובת שהדוגמה מקשיבה על), AIRCODE_AI_TOKEN ו, כאשר זמין, AIRCODE_AI_MODEL (מודל טקסט) ו- AIRCODE_AI_IMAGE_MODEL (מודל התמונה).

גרסה שפורסמה של האפליקציה מקבלת טוקן משלה באותו אופן. הפסקת חשבונות AI מבטלת את התוויות של האפליקציה מיד. התקשר לשער מהשרת של האפליקציה ולשמור את הטוקן שם: כל מי שיכול לפתוח את האפליקציה יכול להשתמש בחשבונות שלך דרך זה, והשימוש שלהם נחשב לתוכניות שלך.

ציונים, מחזור החיים של תוויות ושגיאות

השער מאפשר שתי שיחות פעילות ברחבי האירוע, שיחה פעילה אחת לכל טוקן, ו-30 בקשות ייצור מקובלות לכל טוקן לדקה. שיחות אינן מחייבות. גבולות מקומיים אלה אינם מחליפים את קווי הספק. טוקי נופלים לאחר 90 ימים; ליצור תחליף, לעדכן את היישום שלך, ולאחר מכן לבטל את הטוקי הקודם. הפחתת האפשרות של השער שומרת על טוקינים, אך מפסיקה את השימוש בהם. השחזור של מצב הדוגמה מבטל את השער ומסיר את סמכות הטוקן; ליצור טוקנים חדשים.

שגיאות משתמשים error.message, error.type, error.code ו- error.param. קרא את הקוד, כמו גם את מצב HTTP . אל תחזור באופן אוטומטי לדור אשר התוצאה לא ידועה: ייתכן שכבר השתמשו בקויית ספקים. הדוגמאות מכאיבות ל- SDK Retries.

מצב/קוד מה לעשות
401, AI_GATEWAY_AUTH_REQUIRED בדוק את הסימן, תאריך התפוגה, ביטול והמקרה היעד
403, AI_GATEWAY_DISABLED הפעלת השער באירוע היעד
403, AI_GATEWAY_ORIGIN_FORBIDDEN שיחת טלפון מאחורי הקצה שלך, לא מקור דפדפן זר
AI_GATEWAY_ACCESS_REFUSED בדוק את דרישות הגישה / המנוי של האירוע
400, פרמטרים או מאמץ שאינם נתמכים הסר שדות שאינם נתמכים; השתמש במאמצי הפרסום של המודל הנבחר
404/409, AI_GATEWAY_MODEL_UNAVAILABLE חידוש /models ולבחור בבירור ID זמין
413, AI_GATEWAY_INPUT_TOO_LARGE להקטין את ההיסטוריה, ההזמנה או התמונות התייחסות המוצעות; גוף גדול מדי HTTP גם מסרב
415 על /images/edits שלח multipart/form-data
422, AI_GATEWAY_NO_IMAGE המודל ענה ללא תמונה; קרא את משפטו ושינה את הבקשה
429, AI_GATEWAY_BUSY לחכות שהשיחה הפעילה תסתיים לפני שתנסה שוב
429, AI_GATEWAY_RATE_LIMIT הפסיקו את השינויים המיידיים וממתינים לחלון הדקות המקומי
SAFE_STRUCTURED_AI_QUOTA_EXHAUSTED ממתין לשחזור קווי הספק; error.resets_at עשוי להיות null
409, ביטול התייחס לשיחה כאל בוטלה; לא ממשיך באופן אוטומטי
502/503, ספק / שגיאה לא זמינה בדוק את חיבור החשבון ואת מצב האירוע לפני בדיקה מפורשת

זמן ההחזרה של ספק לא ידוע נשאר לא ידוע. לעולם לא להוציא אחד מן שם מודל או לוח הזמנים של ספקית שאינה קשורה.

שימוש בהופעה אחרת מהיישום

יישום חיצוני יכול לגשת למופע אחר שבבעלותך באמצעות ה־Base URL שלו ואסימון שנוצר בו. כל אסימון שייך למופע שהנפיק אותו. כדי שסוכן ב־B יעבוד על פרויקט של A, בחרו מופע אחר בעת יצירת האסימון ב־B ופעלו לפי מדריך ההפעלות המרוחקות. כברירת מחדל הקבצים והפקודות נשארים ב־A. שמרו את החיבור ב־A, בחרו B תחת הפעלה חדשה → הפעל על, והשאירו מיקום הפרויקט → המופע הזה. כדי לעבוד על פרויקט ב־B, בחרו המופע הזה ואת הפרויקט בזמן יצירת האסימון ב־B, ובזמן ההפעלה ב־A בחרו מיקום הפרויקט → מופע מרוחק. בשני המצבים האירועים מועברים בזמן אמת. אסימונים רגילים תומכים בטקסט ובתמונות, אך אינם מחברים את הלקוח כבעלים של המופע המרוחק. קריאות לכלים דרך Responses, Anthropic Messages ו־Chat Completions אינן חלק מממשק API הנתמך לטקסט.

עבור AI-assisted אינטגרציה, ראה תיעוד עבור AI, raw Markdown מדריך, OpenAPI תוכנית, ואת מיומנויות אינטגרציה.

דוגמאות קוד

הגדר את שלושת משתנים הסביבה לעיל לפני הפעלת דוגמה. חתיכות אלה זמינות גם בהגדרות ובמדריך המקור Markdown.

cURL

Bash, curl and jq. List models first, then use the exact model ID you selected.

set -euo pipefail
# The token is read from standard input, not a command-line argument.
curl --fail-with-body --silent --show-error --location --max-redirs 0 \
  "$AIRCODE_AI_BASE_URL/models" --header @- <<EOF
Authorization: Bearer $AIRCODE_AI_TOKEN
EOF

body=$(jq -n --arg model "$AIRCODE_AI_MODEL" \
  '{model: $model, messages: [{role: "user", content: "Hello!"}]}')
curl --fail-with-body --silent --show-error --location --max-redirs 0 \
  "$AIRCODE_AI_BASE_URL/chat/completions" \
  --header 'Content-Type: application/json' \
  --header @- --data "$body" <<EOF
Authorization: Bearer $AIRCODE_AI_TOKEN
EOF

Python

Install the OpenAI Python SDK 3 with python -m pip install "openai>=3,<4".

import os
from openai import OpenAI, DefaultHttpx2Client

client = OpenAI(
    base_url=os.environ["AIRCODE_AI_BASE_URL"],
    api_key=os.environ["AIRCODE_AI_TOKEN"],
    max_retries=0,
    http_client=DefaultHttpx2Client(follow_redirects=False),
)

for model in client.models.list():
    print(model.id)

response = client.chat.completions.create(
    model=os.environ["AIRCODE_AI_MODEL"],
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)

JavaScript streaming

Node.js and the OpenAI SDK: npm install openai. This is buffered SSE: the complete validated answer arrives at the end.

import OpenAI from "openai";

function required(name) {
  if (!process.env[name]) throw new Error("Set " + name + " first.");
  return process.env[name];
}

const client = new OpenAI({
  baseURL: required("AIRCODE_AI_BASE_URL"),
  apiKey: required("AIRCODE_AI_TOKEN"),
  maxRetries: 0,
  fetchOptions: { redirect: "error" },
});

const stream = await client.chat.completions.create({
  model: required("AIRCODE_AI_MODEL"),
  messages: [{ role: "user", content: "Hello!" }],
  stream: true,
  stream_options: { include_usage: true },
});

try {
  for await (const chunk of stream) {
    process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
    if (chunk.usage) console.error("Tokens:", chunk.usage.total_tokens);
  }
  process.stdout.write("\n");
} finally {
  stream.controller.abort();
}

תגית: SDK Configuration ReferencesOpenAI קובץ SDK Pythonו OpenAI JavaScript SDK. שער זה תומך במחלקה התחתונה המסומנת למעלה.