Qwen2 7B Instruct
Qwen2-7B-Instruct هو نموذج نصي مضبوط لاتباع التعليمات، للحوار متعدد اللغات والبرمجة والرياضيات والاستدلال. يوثّق مطوّره سياقًا يصل إلى 131,072 توكن عند تمكين إعداد السياق الطويل.
- Ailoot Ultra · محادثة OpenAI
POST /v1/chat/completionsqwen2-7b-instruct - Ailoot Ultra · رسائل Anthropic
POST /v1/messagesqwen2-7b-instruct
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.
Qwen2-7B-Instruct هو إصدار Qwen2 بحجم 7B المضبوط لاتباع التعليمات، للمحادثة والمهام المعبر عنها باللغة الطبيعية. إنه نموذج بمدخلات نصية ومخرجات نصية: قد تكون الإجابة شرحًا أو ترجمة أو مسودة مستند أو شيفرة برنامج. يحدّد المطوّر فهم اللغة والتوليد والعمل متعدد اللغات والبرمجة والرياضيات والاستدلال بوصفها مجالات استخدامه الرئيسية.
تفاصيل النموذج
يشمل Qwen2 إصدارات أساسية وأخرى مضبوطة لاتباع التعليمات بشكل منفصل. تتعلّق هذه البطاقة بإصدار Instruct، لا بالنموذج الأساسي Qwen2-7B ولا بإصدار خليط الخبراء من العائلة. يذكر جدول معلومات النموذج لدى المطوّر 7.07 مليار معامل للنموذج بحجم 7B. يستخدم Transformer مفكّك الترميز فيه SwiGLU وانحياز انتباه QKV وانتباه الاستعلامات المجمّعة، مع مقسّم إلى توكنات مصمّم للغات الطبيعية والشيفرة. هذه اختيارات للبنية والتمثيل، وليست وسائط إدخال إضافية.
يصف إعلان الإصدار التدريب بالإنجليزية والصينية إضافة إلى 27 لغة أخرى. تشمل تلك اللغات الروسية والتشيكية والبولندية؛ والألمانية والفرنسية والإسبانية؛ والعربية والفارسية والتركية؛ واليابانية والكورية؛ ولغات أخرى في جنوب آسيا وجنوب شرقها. يمكن لمساعد متعدد اللغات لذلك تلقّي تعليمات ومواد مصدرية بلغات مختلفة، لكنه ينبغي مع ذلك أن يحدّد لغة الناتج النهائي ومصطلحاته وجمهوره.
التدريب وتمييز Instruct
بعد التدريب المسبق، يستخدم المطوّر الضبط الدقيق الخاضع للإشراف وتحسين التفضيلات المباشر. الإصدار المضبوط لاتباع التعليمات مخصّص للاستجابة لطلب داخل محادثة، بينما للإصدار الأساسي دور مختلف كأساس لنموذج لغة. أبقِ اسم الإصدار صريحًا عند اختيار نموذج أو مقارنة سلوك التعليمات. تدريب نموذج على اتباع التعليمات وتقديم تعليمات دقيقة عند الاستخدام جزءان متكاملان من سير العمل ذلك.
إعداد مدخلات محادثة
تفصل البداية السريعة في بطاقة النموذج تعليمات النظام عن سؤال المستخدم وتطبّق قالب المحادثة المطابق قبل التوليد. للمهمة على مستوى التطبيق، يفيد التمييز العملي نفسه: حدّد دور المساعد وقواعد الإجابة بشكل منفصل عن المقطع الأصلي أو الشيفرة التي يجب أن يعمل عليها. لا تحل تسمية نصية مكتوبة داخل مستند محل أدوار المحادثة المنسّقة بشكل صحيح في الواجهة التي تستخدم النموذج.
يمكن لمهمة شرح تقني أن تقدّم دالة ومثال إدخال واحدًا، ثم تسأل عما يفعله كل فرع والشروط التي تؤثّر في النتيجة. ويمكن لمهمة برمجة أن تحدّد المدخل المقبول وقيمة الإرجاع المتوقّعة والقيود على تغيير السلوك الحالي. اطلب التنفيذ متبوعًا بأمثلة لحالة عادية وحالة حدّية. هذه تطبيقات لقدرات اللغة والبرمجة الموثّقة؛ وتوليد الشيفرة نتيجة نصية، بينما تشغيلها يخص بيئة التطبيق.
للتحرير متعدد اللغات، قدّم المقطع الأصلي والجمهور المستهدف وقائمة مصطلحات صغيرة. اطلب تنقيحًا يحافظ على الأسماء والشروط الأصلية، ثم شرحًا قصيرًا للتغييرات. هذا أكثر تحديدًا من طلب تحسين النص: فهو يحدّد المعنى الذي يجب أن يبقى والمخرج القابل للاستخدام الذي ينبغي إرجاعه.
معالجة النصوص الطويلة
يوثّق المطوّر دعم سياق يصل إلى 131,072 توكن، لكن تعليمات السياق الطويل مهمة. تتطلّب المدخلات التي تتجاوز 32,768 توكن إعداد تمديد YaRN الموثّق. يستخدم المثال المنشور معامل تحجيم 4.0 مع إعداد المواضع الأصلي 32,768. يشير المطوّر إلى أن إعداد التمديد الثابت قد يؤثّر في سلوك النصوص الأقصر ويوصي بتمكينه عندما تكون معالجة السياق الطويل مطلوبة فعلًا.
جهّز مهمة المستند الطويل بسؤال محدّد وأقسام مصدرية مُسمّاة وبنية مخرجات صريحة. مثلًا، قدّم عدة أجزاء من مواصفات تقنية واطلب المتطلبات ذات الصلة بتغيير معيّن، مع الاحتفاظ بالقسم المصدري بجانب كل نتيجة. تفيد نافذة إدخال كبيرة في الاحتفاظ بتلك الأجزاء معًا؛ ويمكن أن تظل الإجابة جدولًا موجزًا بدلًا من إعادة سرد المستند كاملًا.
حدود مهمة
رقم 131,072 توكن هو دعم للسياق الموسّع، وليس إذنًا بتجاهل إعداد السياق الطويل. التوليد من 512 توكن في مثال البداية السريعة إعداد للمثال، وليس سعة مخرجات قصوى منشورة. هذا الإصدار Instruct نموذج نصي، وينبغي ألا يرث قدرات الصور أو الفيديو من Qwen-VL، أو التدريب الرياضي المتخصّص المدمج مع الأدوات في Qwen2.5-Math. اختر الإصدار المُسمّى وجهّز النص للشرح أو الشيفرة أو المستند المحدّد الذي تحتاج إليه.
Ailoot Ultra · محادثة OpenAI POST /v1/chat/completions qwen2-7b-instruct
qwen2-7b-instructالبداية
Qwen2-7B-Instruct هو نموذج نصي مضبوط لاتباع التعليمات، للحوار متعدد اللغات والبرمجة والرياضيات والاستدلال. يوثّق مطوّره سياقًا يصل إلى 131,072 توكن عند تمكين إعداد السياق الطويل.
- المدخلات المقبولة
- النص
- النتائج
- النص
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · محادثة OpenAI POST /v1/chat/completions
- الإدخال
text- الإخراج
text- صيغة الإخراج
- json أو SSE
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود qwen2-7b-instruct | القيمة الافتراضية— |
الحقلmessages | النوعmessage[] | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: 1 | القيمة الافتراضية— |
الحقلmessages[].role | النوعstring | المتطلبمطلوب | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلmessages[].content | النوعstring | المتطلباختياري | القيم والحدود ينطبق عندما: محادثة نصية | القيمة الافتراضية— |
الحقلstream | النوعboolean | المتطلباختياري | القيم والحدود | القيمة الافتراضيةfalse |
تركيبات مواد الإدخال
النص · نص UTF8
messages[].content
معلمات الطريقة ودورة حياتها
| المعلمة | المواصفات |
|---|---|
المعلمةcontent_type | المواصفاتapplication/json |
المعلمةrequired | المواصفاتmodel, messages |
المعلمةmaterial_types | المواصفاتtext |
المعلمةmessages | المواصفاتمصفوفة رسائل ببنية role/content |
المعلمةfile_material | المواصفاتمستند UTF-8 الفعلي مُدرج كنص حرفي؛ لا يُستنتَج معرّف ملف |
المعلمةoptional_controls | المواصفاتstream |
المعلمةcontrol_scope | المواصفاتمحادثة نصية؛ stream قيمة منطقية، وقيمتها الافتراضية false. |
المعلمةoutput_modalities | المواصفاتtext |
المعلمةhosted_operations | المواصفاتfalse |
المعلمةmultimodal_input_binding | المواصفاتnull |
الأسماء البديلة للطريقة: /chat/completions
دورة الحياة: synchronous_or_streamed
أرسل معرّف النموذج الدقيق مع messages.
طول السياق ليس حدًا أقصى للإخراج.
يمكن لملف نصي تقديم نص حرفي؛ وتحتاج مدخلات الصور/الصوت/كائنات الملفات إلى ربط دقيق.
الباقات
مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.
- الوضع السريع
- غير محدد عند اختيار الوضع السريع
- الوضع المرن
- غير محدد عند اختيار وضع flex
- أقصى جهد للاستدلال
- غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
تعرفات Ailoot
الأسعار حسب الإعدادات
| الإعدادات | جدول التعرفة | الرسوم |
|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | الرسوم الإدخال · رموز الإدخال $0.000286 / 1K من الرموز الإخراج · رموز الإخراج $0.00058 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت $0 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
أمثلة للطلبات
Ailoot Ultra · محادثة OpenAI
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"qwen2-7b-instruct","messages":[{"role":"user","content":"hello"}],"stream":false}')
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="qwen2-7b-instruct", messages=[{"role":"user","content":"hello"}], stream=False)
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"))
استلام النتائج وحفظها
Ailoot Ultra · محادثة OpenAI
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 qwen2-7b-instruct
الأسماء البديلة لمسارات الطرائق
/chat/completions
معرّفات النماذج ذات الصلة IDs
Ailoot Ultra · رسائل Anthropic POST /v1/messages qwen2-7b-instruct
qwen2-7b-instructالبداية
Qwen2-7B-Instruct هو نموذج نصي مضبوط لاتباع التعليمات، للحوار متعدد اللغات والبرمجة والرياضيات والاستدلال. يوثّق مطوّره سياقًا يصل إلى 131,072 توكن عند تمكين إعداد السياق الطويل.
- المدخلات المقبولة
- النص
- النتائج
- json · sse
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · رسائل Anthropic POST /v1/messages
- الإدخال
text- الإخراج
json,sse- صيغة الإخراج
- JSON أو SSE
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود qwen2-7b-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
- أقصى جهد للاستدلال
- غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
تعرفات Ailoot
الأسعار حسب الإعدادات
| الإعدادات | جدول التعرفة | الرسوم |
|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | الرسوم الإدخال · رموز الإدخال $0.000286 / 1K من الرموز الإخراج · رموز الإخراج $0.00058 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت $0 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
أمثلة للطلبات
Ailoot Ultra · رسائل Anthropic
{
"model": "qwen2-7b-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': 'qwen2-7b-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': 'qwen2-7b-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
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 qwen2-7b-instruct
الأسماء البديلة لمسارات الطرائق
/chat/completions
معرّفات النماذج ذات الصلة IDs
FAQ · Pro/Qwen/Qwen2-7B-Instruct
- ما المدخلات والنتائج المتاحة؟
POST /v1/chat/completions·qwen2-7b-instruct:text→textPOST /v1/messages·qwen2-7b-instruct:text→json,sse- ما الحقول التي يستخدمها الطلب؟
POST /v1/chat/completions·qwen2-7b-instruct:model,messages,streamPOST /v1/messages·qwen2-7b-instruct:model,messages,max_tokens,stream- ما الحدود المطبقة؟
POST /v1/chat/completions·qwen2-7b-instruct:messages.min_items:1