Qwen2 VL 72B Instruct
Qwen2-VL-72B-Instruct משלב טקסט, תמונות ווידאו לשאלות חזותיות, לקריאת מסמכים ולטקסט רב-לשוני בתמונות. היצרן מתאר הבנת וידאו מעבר ל-20 דקות, רזולוציית תמונה דינמית ואינטגרציות לסוכנים חזותיים; התשובה היא טקסט.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsQwen/Qwen2-VL-72B-Instruct - Ailoot Ultra · Anthropic Messages
POST /v1/messagesQwen/Qwen2-VL-72B-Instruct
על המודל
התיאור הזה מציג את יכולות המודל. הקלט, הפלט והאפשרויות הזמינים ב-Ailoot מפורטים בהמשך לפי השיטה שנבחרה.
Qwen2-VL-72B-Instruct היא גרסת ראייה ושפה בגודל 72B המכווננת להוראות ונבנית סביב Qwen2. היא מקבלת טקסט יחד עם תמונות או וידאו ומייצרת תשובה טקסטואלית. היצרן מדגיש הבנת תמונות ברזולוציות וביחסי רוחב-גובה שונים, פירוש טקסט בתוך תמונות, חשיבה על קשרים גלויים ומענה לשאלות על סרטונים שאורכם עולה על 20 דקות.
יכולות תמונה ווידאו
בעמוד מסמך, בקשו את התוכן המסוים הדרוש: פסקה, שורת טבלה, נוסחה או התנאים המצורפים לאמירה. שמרו על קריאות העמוד וציינו אם התוצאה צריכה לתמלל את הניסוח, לסכם אותו או להסביר את משמעותו. פלט מסמך שימושי יכול לשמור את תווית הסעיף המקורית לצד התוכן שחולץ. בתרשים, שאלו כיצד הרכיבים המסומנים מתחברים וציינו את הקשר שדורש הסבר.
השימוש המתועד בווידאו כולל שאלות, דיאלוג ותוכן כתוב המבוססים על הרצף הגלוי. הגדירו את האירוע או השינוי לבדיקה: מתי עצם מופיע, מה קורה לפני שלב מסוים או כיצד פעולה מודגמת קשורה לנוהל כתוב. בקשו תיאור אירועים מסודר או השוואה בין השלבים הגלויים לבין הנוהל שסופק. אמירת היצרן על יותר מ-20 דקות מתארת הבנת וידאו ארוך; היא אינה משך וידאו מרבי קבוע או הבטחה שכל קטע גולמי מתאים לתצורת קלט ללא שינוי.
שימוש בסוכנים חזותיים
הגרסה ממקמת את Qwen2-VL גם לשימוש בסוכנים חזותיים המחוברים למכשירים ניידים, לרובוטים ולכלים אחרים. ההודעה שלה מתארת תרחישי קריאה לפונקציות ומפרש קוד, כגון יצירת קוד מתרשים או שימוש בשאלה חזותית לבקשת חיפוש חיצוני. היישום המשתמש במודל מספק את הכלים, מבצע את הפעולה המוצעת ומחזיר את התוצאה. תשובת הטקסט של המודל לבדה אינה לוחצת על פקד, מזיזה מכשיר או מריצה את התוכנית שנוצרה.
משימת ממשק מעשית יכולה לספק צילום מסך ואת מטרת המשתמש, ואז לבקש את הפקד הגלוי הרלוונטי לשלב הבא ואת הראיות התומכות בבחירה. שמרו תצפית, פעולה מוצעת וביצוע בפועל כחלקים נפרדים בתהליך. כך משתמשים בדגש על סוכן חזותי תוך הגדרת תוצאה מסוימת מספיק כדי שהיישום יוכל לפעול על פיה.
טקסט רב-לשוני בתוך תמונות
היצרן מתאר זיהוי טקסט בתמונות באנגלית ובסינית, ברוב השפות האירופיות ובשפות ובהן יפנית, קוריאנית, ערבית ווייטנאמית. אפשר לכן לגשת לעמוד רב-לשוני כמשימת קריאה חזותית. בקשו תחילה את התמלול המקורי כשהניסוח המדויק חשוב, ואז תרגום או הסבר בשפה שנבחרה. שמרו תוויות ומספרים במקום לערבב זיהוי עם שכתוב שלא הוגדר.
רזולוציה דינמית ומידע מיקומי
Qwen2-VL משלב מקודד ראייה עם מודל השפה Qwen2. Naive Dynamic Resolution ממפה גדלי תמונה שונים למספרים שונים של טוקנים חזותיים. Multimodal Rotary Position Embedding מפריד מידע מיקומי כדי שהמודל יוכל לייצג סדר טקסט, תמונות דו-ממדיות ואת המבנה הזמני והמרחבי של וידאו. תכונות אלה מסבירות כיצד אותה משפחה מטפלת בעמוד, בכמה תמונות או ברצף וידאו.
מעבד התמונה בכרטיס המודל מתעד טווח ברירת מחדל של 4 עד 16,384 טוקנים חזותיים לתמונה. היישום יכול להתאים את מינימום ומקסימום הפיקסלים תוך שמירת יחס רוחב-גובה, או לבקש ממדים שמעוגלים לכפולה של 28. טווח הדוגמה של 256 עד 1,280 טוקנים הוא המחשה הניתנת להגדרה, ולא מגבלת תמונה אוניברסלית נפרדת. פרטים רבים יותר בתמונה דורשים יותר חישוב וטוקנים חזותיים, ולכן שמרו את התוויות, הכותרות והעצמים הקטנים הדרושים לשאלה בהכנת התמונה.
הכנת הקלט וההקשר
היצרן מדגים תמונה אחת, כמה תמונות, וידאו המסופק כרצף פריימים או כקובץ מקומי ושיחות באצוות. הכנת תמונות כוללת קבצים מקומיים, נתוני תמונה מקודדים והפניות לתמונות. דוגמת הווידאו בכרטיס משתמשת בקצב פריימים נבחר; היא אינה קובעת קצב דגימה נדרש אחד לכל וידאו. ציינו את הסדר ואת התפקיד של כמה תמונות וספקו את המידע הדרוש לפירוש רצף במקום להתייחס לפריימים לא קשורים כסצנה אחת.
התצורה ששוחררה מגדירה מספר מיקומים מרבי של 32,768. יש לתכנן חומר חזותי והוראות טקסט בתוך ההקשר המוגדר בפועל. דוגמת היצירה של 128 טוקנים בכרטיס היא רק הגדרת דוגמה; היא אינה מפרסמת קיבולת פלט מרבית נפרדת. גרסת 72B צריכה לשמור על התצורה שלה במקום לרשת הגדרות הקשר ארוך של Qwen2.5-VL או של מודל Qwen אחר.
מגבלות מהותיות
היצרן מציין במפורש ש-Qwen2-VL אינו מבין שמע שנמצא בסרטונים. לכן יש לספק מידע מדובר בנפרד אם השאלה תלויה בו. מערך האימון של התמונות מתואר כמעודכן עד יוני 2023; זו אמירה על מערך נתונים זה ולא הבטחה לידע חזותי עדכני.
המגבלות המתועדות כוללות גם זיהוי לא מלא של אנשים מסוימים או של קניין רוחני בעל שם, קושי בהוראות מורכבות מרובות שלבים, ספירה חלשה בסצנות מורכבות ומגבלות בחשיבה מרחבית תלת-ממדית. כשהמשימה תלויה באחת מיכולות אלה, מקדו את השאלה בעצמים או בקשר הדרושים ושמרו את הראיות החזותיות לצד התשובה. חומר מקור ברור ופלט מוגדר מקלים על בדיקת התוצאה בלי להחליף מגבלות אלה בהבטחת דיוק.
משימה מעשית
משימה מעשית
דוגמה טכנית באנגלית
Read a supplied document transcription
Use this text transcription of page P2, section Limits: 'Store below 25 C. Once opened, use within seven days. Do not freeze.' Return the original wording first, then a plain-English explanation separating the temperature, time and freezing conditions. Preserve P2 as the source label. No image or video is attached.התוצאה הצפויה
A labelled transcription followed by three source-grounded explanations of the conditions.בדיקת התוצאה
Below 25 C is not rewritten as at or below 25 C, and the seven-day period starts at opening.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions Qwen/Qwen2-VL-72B-Instruct
Qwen/Qwen2-VL-72B-Instructהתחלה
Qwen2-VL-72B-Instruct משלב טקסט, תמונות ווידאו לשאלות חזותיות, לקריאת מסמכים ולטקסט רב-לשוני בתמונות. היצרן מתאר הבנת וידאו מעבר ל-20 דקות, רזולוציית תמונה דינמית ואינטגרציות לסוכנים חזותיים; התשובה היא טקסט.
- סוגי קלט נתמכים
- טקסט
- תוצאות
- טקסט
זמין ב-Ailoot · קלט ושיטות
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- סוגי קלט
text- סוגי פלט
text- פורמט פלט
- json או SSE
| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
|---|---|---|---|---|
שדהmodel | סוגstring | דרישהחובה | ערכים ומגבלות Qwen/Qwen2-VL-72B-Instruct | ברירת מחדל— |
שדהmessages | סוגmessage[] | דרישהחובה | ערכים ומגבלות מספר פריטים מזערי: 1 | ברירת מחדל— |
שדהmessages[].role | סוגstring | דרישהחובה | ערכים ומגבלות דוגמאות: system, user, assistant, tool, function תנאים: התפקידים האלה מיוצגים במפורש בטיפוסי התאימות בקוד המקור; מערך התפקידים המדויק נשאר ייחודי לכל מודל. תלוי במודל | ברירת מחדל— |
שדהmessages[].content | סוגstring|content_part[]|null | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
שדהmessages[].tool_calls | סוגtool_call[] | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
שדהmessages[].tool_call_id | סוגstring | דרישהרשות | ערכים ומגבלות חל כאשר: role=tool; השתמשו במזהה שהוחזר בפועל | ברירת מחדל— |
שדהmessages[].name | סוגstring | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
שדהmessages[].reasoning_content | סוגstring | דרישהרשות | ערכים ומגבלות חל כאשר: החזירו בהמשך את ההנמקה שהתקבלה בפועל כאשר המודל הזה משתמש בה | ברירת מחדל— |
שדהmessages[].reasoning_details | סוגobject|array | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהmax_tokens | סוגinteger | דרישהרשות | ערכים ומגבלות מינימום: 1 תלוי במודל | ברירת מחדל— |
שדהmax_completion_tokens | סוגinteger | דרישהרשות | ערכים ומגבלות מינימום: 1 תלוי במודל | ברירת מחדל— |
שדהstream | סוגboolean | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |
שדהstream_options.include_usage | סוגboolean | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהtemperature | סוגnumber | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהtop_p | סוגnumber | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהstop | סוגstring|string[] | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהtools | סוגfunction_tool[] | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהtools[].type | סוגstring | דרישהרשות | ערכים ומגבלות function תלוי במודל | ברירת מחדל— |
שדהtools[].function.name | סוגstring | דרישהחובה | ערכים ומגבלות חל כאשר: סופק כלי פונקציה | ברירת מחדל— |
שדהtools[].function.description | סוגstring | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
שדהtools[].function.parameters | סוגJSON_schema | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
שדהtool_choice | סוגstring|object | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהparallel_tool_calls | סוגboolean | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהresponse_format | סוגobject | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהreasoning_effort | סוגstring | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהreasoning | סוגobject | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהservice_tier | סוגstring | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהinstructions | סוגstring | דרישהרשות | ערכים ומגבלות שדה תאימות | ברירת מחדל— |
שדהfunctions | סוגfunction[] | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהfunction_call | סוגstring|object | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהprompt_cache_options | סוגobject | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
שדהmodalities | סוגstring[] | דרישהרשות | ערכים ומגבלות text | ברירת מחדל— |
שדהprovider | סוגobject | דרישהרשות | ערכים ומגבלות תנאים: provider.options נדחה במסלול הטקסט הזה של Ultra | ברירת מחדל— |
שדהcache_control.ttl | סוגstring | דרישהרשות | ערכים ומגבלות תנאים: 1h נדחה במיקומים המשמשים בפועל למטמון הנחיות | ברירת מחדל— |
שילובים של חומרי קלט
טקסט · טקסט UTF8
messages[].content
פרמטרים ומחזור חיים של השיטה
| פרמטר | מפרט |
|---|---|
פרמטרcontent_type | מפרטapplication/json |
פרמטרrequired | מפרטmodel, messages |
פרמטרmaterial_types | מפרטtext |
פרמטרmessages | מפרטמערך הודעות במבנה role/content |
פרמטרfile_material | מפרטמסמך UTF-8 בפועל מוכנס כטקסט מילולי; לא מוסק מזהה קובץ |
פרמטרoptional_controls | מפרטstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
פרמטרcontrol_scope | מפרטייחודי למודל; כלי פונקציות של המשתמש שונים מכלים מתארחים |
פרמטרoutput_modalities | מפרטtext |
פרמטרhosted_operations | מפרטfalse |
פרמטרmultimodal_input_binding | מפרטnull |
מחזור חיים: synchronous_or_streamed
שלחו את מזהה המודל המדויק עם messages.
אורך ההקשר אינו תקרת פלט.
קובץ טקסט יכול לספק טקסט מילולי; קלטי תמונה/אודיו/אובייקט קובץ דורשים קישור מדויק.
תעריפים
מידע תעריפים אינו מוסיף אפשרויות לבקשה. הפרמטרים הנתמכים מפורטים בשיטה שנבחרה.
- מצב מהיר
- לא צוין כאשר נבחר מצב מהיר
- מצב Flex
- לא צוין כאשר נבחר מצב flex
- מאמץ חשיבה מרבי
- לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)
תעריפי Ailoot
מחירים לפי תצורה
| תצורה | טבלת תעריפים | חיוב |
|---|---|---|
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | חיוב קלט · טוקני קלט $0.00118 / 1K טוקנים פלט · טוקני פלט $0.00118 / 1K טוקנים קלט · קריאה מהמטמון $0 / 1K טוקנים קלט · כתיבה למטמון $0 / 1K טוקנים קלט · כתיבה למטמון, 1 שעה — / 1K טוקנים |
לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. איך פועלים שריון הסכום והסדרת החיוב →
דוגמאות לבקשות
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "Qwen/Qwen2-VL-72B-Instruct", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='Qwen/Qwen2-VL-72B-Instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='Qwen/Qwen2-VL-72B-Instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
קבלה ושמירה של תוצאות
Ailoot Ultra · OpenAI Chat
json או SSE
שמירת כל התוצאות שהושלמו
שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.
שמרו כל בחירה ואת התוכן, קריאות הכלים וההנמקה שלה. ב-SSE הרכיבו עדכונים לפי אינדקס הבחירה/הכלי ושמרו את סיבת הסיום הסופית ואת השימוש.
כשצריך לבדוק את התגובה המקורית
שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.
שדות התגובה
| שדה | סוג |
|---|---|
שדהchoices[].index | סוגinteger |
שדהchoices[].message.content | סוגstring|null |
שדהchoices[].message.tool_calls | סוגtool_call[] |
שדהchoices[].message.reasoning_content | סוגstring |
שדהchoices[].message.reasoning_details | סוגobject|array |
שדהchoices[].finish_reason | סוגstring|null |
שדהusage | סוגobject |
שגיאות והשלבים הבאים
| תגובה | תנאי | השלב הבא |
|---|---|---|
תגובה400 · invalid_request_error | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |
כינויים
כינויים למודל
Ailoot Ultra Qwen/Qwen2-VL-72B-Instruct
כינויים לנתיבי שיטות
השתמשו בנתיבי השיטות המוצגים למעלה.
מזהי מודלים קשורים IDs
Ailoot Ultra · Anthropic Messages POST /v1/messages Qwen/Qwen2-VL-72B-Instruct
Qwen/Qwen2-VL-72B-Instructהתחלה
Qwen2-VL-72B-Instruct משלב טקסט, תמונות ווידאו לשאלות חזותיות, לקריאת מסמכים ולטקסט רב-לשוני בתמונות. היצרן מתאר הבנת וידאו מעבר ל-20 דקות, רזולוציית תמונה דינמית ואינטגרציות לסוכנים חזותיים; התשובה היא טקסט.
- סוגי קלט נתמכים
- טקסט
- תוצאות
- json · sse
זמין ב-Ailoot · קלט ושיטות
Ailoot Ultra · Anthropic Messages POST /v1/messages
- סוגי קלט
text- סוגי פלט
json,sse- פורמט פלט
- JSON או SSE
| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
|---|---|---|---|---|
שדהmodel | סוגstring | דרישהחובה | ערכים ומגבלות Qwen/Qwen2-VL-72B-Instruct | ברירת מחדל— |
שדהmessages | סוגmessage[] | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
שדהmessages[].role | סוגstring | דרישהחובה | ערכים ומגבלות user, assistant | ברירת מחדל— |
שדהmessages[].content | סוגstring | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
שדהmax_tokens | סוגinteger | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
שדהstream | סוגboolean | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |
שילובים של חומרי קלט
טקסט · טקסט UTF-8
מחרוזת messages[].content
פרמטרים ומחזור חיים של השיטה
| פרמטר | מפרט |
|---|---|
פרמטרcontent_type | מפרטapplication/json |
פרמטרrequired | מפרטmodel, messages, max_tokens |
פרמטרoptional_controls | מפרטstream |
פרמטרmaterial_types | מפרטtext |
פרמטרtext_file_material | מפרטקראו את מסמך UTF-8 בפועל והכניסו את הטקסט שלו לקלט שצוין או למחרוזת תוכן ההודעה. |
מחזור חיים: synchronous_or_streamed
תעריפים
מידע תעריפים אינו מוסיף אפשרויות לבקשה. הפרמטרים הנתמכים מפורטים בשיטה שנבחרה.
- מצב מהיר
- לא צוין כאשר נבחר מצב מהיר
- מצב Flex
- לא צוין כאשר נבחר מצב flex
- מאמץ חשיבה מרבי
- לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)
תעריפי Ailoot
מחירים לפי תצורה
| תצורה | טבלת תעריפים | חיוב |
|---|---|---|
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | חיוב קלט · טוקני קלט $0.00118 / 1K טוקנים פלט · טוקני פלט $0.00118 / 1K טוקנים קלט · קריאה מהמטמון $0 / 1K טוקנים קלט · כתיבה למטמון $0 / 1K טוקנים קלט · כתיבה למטמון, 1 שעה — / 1K טוקנים |
לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. איך פועלים שריון הסכום והסדרת החיוב →
דוגמאות לבקשות
Ailoot Ultra · Anthropic Messages
{
"model": "Qwen/Qwen2-VL-72B-Instruct",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'Qwen/Qwen2-VL-72B-Instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'Qwen/Qwen2-VL-72B-Instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
קבלה ושמירה של תוצאות
Ailoot Ultra · Anthropic Messages
JSON או SSE
שמירת כל התוצאות שהושלמו
שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.
שמרו את כל בלוקי התוכן, חתימות החשיבה ומזהי השימוש בכלים בפועל. הרכיבו את כל עדכוני הבלוקים של SSE; בלוק הטקסט הראשון אינו הפלט המלא.
כשצריך לבדוק את התגובה המקורית
שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.
שדות התגובה
| שדה | סוג |
|---|---|
שדהid | סוגstring |
שדהmodel | סוגstring |
שדהcontent[] | סוגtext|thinking|tool_use|other content block |
שדהstop_reason | סוגstring|null |
שדהusage | סוגobject |
שגיאות והשלבים הבאים
| תגובה | תנאי | השלב הבא |
|---|---|---|
תגובה400 · invalid_request_error | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |
כינויים
כינויים למודל
Ailoot Ultra Qwen/Qwen2-VL-72B-Instruct
כינויים לנתיבי שיטות
השתמשו בנתיבי השיטות המוצגים למעלה.
מזהי מודלים קשורים IDs
FAQ · Qwen/Qwen2-VL-72B-Instruct
- אילו קלטים ותוצאות זמינים?
POST /v1/chat/completions·Qwen/Qwen2-VL-72B-Instruct:text→textPOST /v1/messages·Qwen/Qwen2-VL-72B-Instruct:text→json,sse- באילו שדות הבקשה משתמשת?
POST /v1/chat/completions·Qwen/Qwen2-VL-72B-Instruct:model,messages,stream,modalities,providerPOST /v1/messages·Qwen/Qwen2-VL-72B-Instruct:model,messages,max_tokens,stream- אילו מגבלות חלות?
POST /v1/chat/completions·Qwen/Qwen2-VL-72B-Instruct:messages.min_items:1