أصدرت ميسترال الإصدار Medium 3.5 في 29 أبريل 2026. معرف نموذج الـ API هو mistral-medium-3.5، ونقطة النهاية هي https://api.mistral.ai/v1/chat/completions. شكل الطلب قريب من معيار OpenAI، لذلك غالبًا ما يكون الترحيل مجرد تغيير base_url ومعرف النموذج. أهم ما تحصل عليه: نافذة سياق 256 ألف رمز، رؤية مدمجة، استدعاء وظائف، دعم 24 لغة، ونتيجة 77.6% على SWE-Bench Verified.
في هذا الدليل ستنفّذ استدعاءات فعلية لـ Mistral Medium 3.5: المصادقة، المعلمات المهمة، أمثلة Python وNode، إدخال الصور، استدعاء الأدوات، JSON Mode، البث، معالجة الأخطاء، وتتبع التكلفة باستخدام Apidog. وللمقارنة مع نماذج مشابهة، راجع كيفية استخدام DeepSeek V4 API وكيفية استخدام GPT-5.5 API.
ملخص سريع
- نقطة النهاية:
POST https://api.mistral.ai/v1/chat/completions. - المصادقة:
Authorization: Bearer <MISTRAL_API_KEY>. - معرف النموذج:
mistral-medium-3.5. - نافذة السياق: 256 ألف رمز.
- التسعير: 1.5 دولار لكل مليون رمز إدخال، و7.5 دولار لكل مليون رمز إخراج.
- يدعم الرؤية، استدعاء الوظائف، JSON المهيكل، والبث عبر SSE.
- الأوزان المفتوحة متوفرة على Hugging Face باسم
mistralai/Mistral-Medium-3.5-128Bبموجب ترخيص MIT معدل مع استثناء للإيرادات الكبيرة. - يمكنك تنزيل Apidog لاختبار الطلبات، تخزين المفتاح كمتغير سري، ومقارنة تكلفة كل تشغيل.
ما الذي تغير في Medium 3.5
كان Medium 3 نموذجًا نصيًا فقط بسياق 128 ألفًا. أما Medium 3.5 فيجمع التعليمات، الاستدلال، الترميز، الرؤية، واستدعاء الوظائف في نقطة تحقق واحدة. هذا يعني أنك لا تحتاج إلى التبديل بين نموذج محادثة ونموذج استدلال ونموذج رؤية في معظم السيناريوهات.
الأرقام المهمة عمليًا:
-
77.6%على SWE-Bench Verified: مناسب لمراجعة وتصحيح التعليمات البرمجية. -
91.4على τ³-Telecom: جيد في الحوارات متعددة الأدوار واستخدام الأدوات. - سياق
256k: يسمح بتمرير ملفات كثيرة، مستندات طويلة، أو محادثات كبيرة دون تقسيم مبكر.
لكن التكلفة ارتفعت مقارنة بـ Medium 3. كان Medium 3 بسعر 0.40 دولار لكل مليون رمز إدخال و2.00 دولار لكل مليون رمز إخراج. Medium 3.5 يصل إلى 1.5 دولار للإدخال و7.5 دولار للإخراج. استخدمه عندما تحتاج جودة أعلى أو رؤية أو سياق أطول، وليس لكل طلب افتراضيًا.
المتطلبات الأساسية
قبل أول طلب، جهّز التالي:
- حساب على console.mistral.ai مع طريقة دفع أو رصيد متاح.
- مفتاح API مخصص للمشروع.
- بيئة تشغيل:
- Python مع حزمة
mistralaiأوopenai. - أو Node.js مع
@mistralai/mistralaiأوopenai.
- Python مع حزمة
- عميل API مثل curl للاختبار الأول، ثم Apidog لتخزين الطلبات، المتغيرات، والنتائج بشكل منظم.
صدّر المفتاح في الطرفية:
export MISTRAL_API_KEY="..."
نقطة النهاية والمصادقة
كل استدعاءات المحادثة تمر عبر:
POST https://api.mistral.ai/v1/chat/completions
أبسط طلب باستخدام curl:
curl https://api.mistral.ai/v1/chat/completions \
-H "Authorization: Bearer $MISTRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-medium-3.5",
"messages": [
{
"role": "user",
"content": "Explain dense merged checkpoints in two sentences."
}
]
}'
الاستجابة الناجحة تحتوي عادةً على:
-
choices: مخرجات النموذج. -
usage.prompt_tokens: رموز الإدخال. -
usage.completion_tokens: رموز الإخراج. -
usage.total_tokens: الإجمالي. -
id: معرف الطلب للتتبع.
مثال على حساب تكلفة الطلب:
cost =
prompt_tokens * 1.5 / 1_000_000 +
completion_tokens * 7.5 / 1_000_000
معلمات الطلب المهمة
| المعلمة | النوع | القيم | الاستخدام |
|---|---|---|---|
model |
string | mistral-medium-3.5 |
مطلوب |
messages |
array | رسائل system / user / assistant
|
مطلوب |
temperature |
number |
0 إلى 1.5
|
استخدم 0.3 للكود و0.7 للاستخدام العام |
top_p |
number |
0 إلى 1
|
الافتراضي 1.0
|
max_tokens |
integer | حسب السياق | يحدد الحد الأقصى للمخرجات |
stream |
boolean |
true / false
|
تفعيل البث |
tools |
array | مواصفات أدوات OpenAI | استدعاء وظائف |
tool_choice |
string/object |
auto / any / none / أداة محددة |
any تعني إجبار استدعاء أداة |
response_format |
object | JSON object أو JSON schema | مخرجات منظمة |
random_seed |
integer | أي عدد صحيح | قابلية تكرار أفضل |
safe_prompt |
boolean |
true / false
|
إضافة مقدمة أمان من ميسترال |
presence_penalty |
number |
-2 إلى 2
|
تقليل تكرار المواضيع |
frequency_penalty |
number |
-2 إلى 2
|
تقليل تكرار الرموز |
انتبه لاختلافين عند الترحيل من OpenAI:
- في ميسترال:
tool_choice="any"بدلtool_choice="required". - في ميسترال:
random_seedبدلseed.
استخدام Python SDK الرسمي
ثبّت الحزمة:
pip install mistralai
مثال كامل:
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{"role": "system", "content": "Reply in code only."},
{"role": "user", "content": "Write a Rust function that debounces events."},
],
temperature=0.3,
max_tokens=2048,
)
content = response.choices[0].message.content
prompt_tokens = response.usage.prompt_tokens
completion_tokens = response.usage.completion_tokens
cost = (
prompt_tokens * 1.5 / 1_000_000 +
completion_tokens * 7.5 / 1_000_000
)
print(content)
print("Total tokens:", response.usage.total_tokens)
print("Estimated cost USD:", cost)
استخدام OpenAI SDK مع Mistral
إذا كانت لديك قاعدة كود مبنية على OpenAI SDK، غيّر base_url ومعرف النموذج فقط:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MISTRAL_API_KEY"],
base_url="https://api.mistral.ai/v1",
)
response = client.chat.completions.create(
model="mistral-medium-3.5",
messages=[
{"role": "user", "content": "Hello, Mistral."}
],
)
print(response.choices[0].message.content)
استخدم OpenAI SDK إذا كنت تريد طبقة موحدة بين مزودين. واستخدم mistralai إذا كنت تريد وضوحًا أكبر في ميزات ميسترال الخاصة.
استخدام Node.js
ثبّت SDK الرسمي:
npm install @mistralai/mistralai
مثال:
import { Mistral } from "@mistralai/mistralai";
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
});
const response = await client.chat.complete({
model: "mistral-medium-3.5",
messages: [
{
role: "user",
content: "Explain dense merged checkpoints in plain English.",
},
],
temperature: 0.7,
});
console.log(response.choices[0].message.content);
console.log("Usage:", response.usage);
وباستخدام OpenAI SDK في Node:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.MISTRAL_API_KEY,
baseURL: "https://api.mistral.ai/v1",
});
const response = await client.chat.completions.create({
model: "mistral-medium-3.5",
messages: [
{ role: "user", content: "Hello, Mistral." },
],
});
console.log(response.choices[0].message.content);
البث Streaming
فعّل stream: true عندما تحتاج عرض النتيجة تدريجيًا في واجهة مستخدم أو CLI.
مثال Python:
stream = client.chat.stream(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": "Stream a 300-word essay on merged checkpoints.",
}
],
)
for chunk in stream:
delta = chunk.data.choices[0].delta.content or ""
print(delta, end="", flush=True)
الشكل قريب من OpenAI SSE، والمحتوى يأتي داخل:
choices[].delta.content
في الاختبارات الجانبية عبر عارض الاستجابات في Apidog، يمكن مقارنة زمن أول رمز، زمن الإكمال، وعدد الرموز لكل تشغيل بين Mistral وDeepSeek وGPT.
استدعاء الأدوات Function Calling
عرّف الأدوات داخل tools، واترك النموذج يقرر متى يستدعيها.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Return the current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"},
"unit": {"type": "string", "enum": ["c", "f"]},
},
"required": ["city"],
},
},
}
]
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{"role": "user", "content": "Weather in Lagos in Celsius?"}
],
tools=tools,
tool_choice="auto",
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name)
print(tool_call.function.arguments)
النمط العملي:
- أرسل السؤال مع تعريف الأدوات.
- إذا أعاد النموذج
tool_calls، نفّذ الدالة محليًا. - أضف نتيجة الدالة كرسالة
role: "tool". - أعد استدعاء النموذج ليولّد الإجابة النهائية.
لإجبار النموذج على استخدام أداة، استخدم:
{
"tool_choice": "any"
}
وضع JSON والمخرجات المهيكلة
إذا كنت تحتاج مخرجات قابلة للمعالجة مباشرة، استخدم response_format.
مثال JSON Schema:
schema = {
"type": "json_schema",
"json_schema": {
"name": "release_note",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"date": {"type": "string"},
"bullets": {
"type": "array",
"items": {"type": "string"},
},
},
"required": ["title", "date", "bullets"],
"additionalProperties": False,
},
"strict": True,
},
}
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "system",
"content": "Reply with a single JSON object matching the schema.",
},
{
"role": "user",
"content": "Summarize today's Mistral Medium 3.5 release.",
},
],
response_format=schema,
)
print(response.choices[0].message.content)
للحالات الأبسط، اطلب JSON صالحًا فقط:
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{"role": "user", "content": "Return three API testing tips as JSON."}
],
response_format={"type": "json_object"},
)
حتى مع JSON Mode، احتفظ بالتحقق على جانب العميل إذا كان الناتج سيُستخدم في مسار إنتاجي حساس.
إدخال الصور Vision Input
يدعم Medium 3.5 إرسال نص وصورة في نفس الرسالة.
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image and what is it doing wrong?",
},
{
"type": "image_url",
"image_url": "https://example.com/diagram.png",
},
],
}
],
)
print(response.choices[0].message.content)
تُحاسب الصور كرموز إدخال. العدد الفعلي يظهر في:
usage.prompt_tokens
لخفض التكلفة في أحمال الصور الكبيرة:
- اقتص المنطقة المهمة فقط.
- قلّل الدقة إلى الحد الكافي للإجابة.
- لا ترسل إطارات فيديو متشابهة دون تصفية.
- سجّل تكلفة كل صورة في مرحلة الاختبار قبل التوسع.
بناء مجموعة اختبار في Apidog
إعادة تشغيل الطلبات من الطرفية تجعل تتبع التكلفة والفروقات صعبًا. سير عمل عملي:
- نزّل Apidog وأنشئ مشروعًا.
- أضف بيئة باسم
Mistral. - خزّن المفتاح كمتغير سري:
MISTRAL_API_KEY=...
- أضف متغيرًا للعنوان الأساسي:
BASE_URL=https://api.mistral.ai/v1
- أنشئ طلب:
POST {{BASE_URL}}/chat/completions
- أضف الترويسات:
Authorization: Bearer {{MISTRAL_API_KEY}}
Content-Type: application/json
- استخدم جسم طلب قابل للتعديل:
{
"model": "mistral-medium-3.5",
"temperature": 0.3,
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "Review this function and suggest improvements."
}
]
}
بعد كل تشغيل، افحص usage واحسب التكلفة:
const usage = response.json().usage;
const cost =
usage.prompt_tokens * 1.5 / 1_000_000 +
usage.completion_tokens * 7.5 / 1_000_000;
console.log("Estimated cost USD:", cost);
إذا كانت لديك مجموعة DeepSeek V4 API في Apidog، انسخها وغيّر:
- https://api.deepseek.com/v1
- deepseek-v4-pro
+ https://api.mistral.ai/v1
+ mistral-medium-3.5
وينطبق النمط نفسه على المقارنة مع GPT-5.5.
معالجة الأخطاء
أكثر الأخطاء التي ستراها في البداية:
| الرمز | المعنى | الإصلاح |
|---|---|---|
400 |
طلب غير صالح | تحقق من JSON، خصوصًا messages وtools
|
401 |
مفتاح غير صالح | أنشئ مفتاحًا جديدًا من console.mistral.ai |
402 |
الدفع مطلوب | أضف رصيدًا أو بطاقة |
403 |
النموذج غير مسموح | تحقق من نطاق مفتاح المشروع ومعرف النموذج |
422 |
معلمة خارج النطاق | راجع max_tokens أو tool_choice
|
429 |
تجاوز حد المعدل | استخدم exponential backoff مع jitter |
500 |
خطأ خادم | أعد المحاولة مرة واحدة |
503 |
حمل زائد | انتظر أو استخدم نموذجًا بديلًا مؤقتًا |
مثال retry بسيط في Python:
import time
import random
def call_with_retry(fn, retries=3):
for attempt in range(retries):
try:
return fn()
except Exception as exc:
status = getattr(exc, "status_code", None)
if status not in [429, 500, 502, 503, 504]:
raise
if attempt == retries - 1:
raise
sleep_seconds = (2 ** attempt) + random.random()
time.sleep(sleep_seconds)
لا تعِد محاولة أخطاء 4xx تلقائيًا باستثناء حالات محددة مثل 429. غالبًا هي أخطاء في الطلب نفسه وليست أعطالًا عابرة.
أنماط التحكم في التكلفة
بما أن تكلفة Medium 3.5 أعلى من Medium 3، استخدمه بوعي:
ابدأ بنموذج أرخص ثم صعّد عند الحاجة
استخدم Medium 3 للمهام البسيطة، وMedium 3.5 عندما يفشل المدقق أو تنخفض الثقة.ضع حدًا واضحًا لـ
max_tokens
الإخراج أغلى من الإدخال. لا تتركه مفتوحًا دون سبب.اختصر رسالة النظام
كل رمز فيsystemيُدفع في كل استدعاء.سجّل
usageدائمًا
أرسلprompt_tokensوcompletion_tokensوتكلفة الطلب إلى نظام المراقبة.استخدم الرؤية فقط عند الحاجة
لا ترسل صورًا كاملة إذا كان السؤال يتعلق بجزء صغير منها.اختبر المطالبات قبل الإنتاج
قارن عدة صيغ في Apidog واختر الأقل تكلفة مع نفس الجودة.
مقارنة Medium 3.5 بمستويات ميسترال الأخرى
تشكيلة ميسترال في أواخر أبريل 2026:
| النموذج | السياق | الإدخال $/مليون | الإخراج $/مليون | الرؤية | الأفضل لـ |
|---|---|---|---|---|---|
mistral-small |
32 ألفًا | 0.10 | 0.30 | لا | التصنيف والدردشة الخفيفة |
mistral-medium-3 |
128 ألفًا | 0.40 | 2.00 | لا | الإنتاجية العالية والدردشة الطويلة |
mistral-medium-3.5 |
256 ألفًا | 1.5 | 7.5 | نعم | الاستدلال، الكود، الرؤية، الوكلاء |
mistral-large |
128 ألفًا | 2.00 | 6.00 | محدود | الاستدلال النصي المتقدم |
Medium 3.5 هو الخيار الأنسب عندما تحتاج اجتماع السياق الطويل والرؤية واستدعاء الأدوات في نموذج واحد. اختر حسب عبء العمل لا حسب اسم المستوى.
الترحيل من مزود آخر
من OpenAI:
- base_url="https://api.openai.com/v1"
- model="gpt-5.5"
+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
من DeepSeek:
- base_url="https://api.deepseek.com/v1"
- model="deepseek-v4-pro"
+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
عدّل أيضًا:
- tool_choice="required"
+ tool_choice="any"
- seed=123
+ random_seed=123
قبل تحويل حركة الإنتاج:
- شغّل مجموعة الاختبارات الحالية.
- قارن جودة الإجابات.
- قارن عدد الرموز والتكلفة.
- جرّب shadow traffic ليوم واحد إن كان النظام حساسًا.
حالات استخدام مناسبة
مساعد مراجعة كود
سياق 256 ألفًا ونتيجة SWE-Bench Verified تجعله مناسبًا لتحليل Pull Requests كبيرة.أسئلة وأجوبة على مستندات طويلة
يمكنك تمرير عقود، سياسات، أو RFPs طويلة دون تقسيم مبكر.استخراج بيانات من صور ومستندات
مفيد للإيصالات، لقطات الشاشة، الجداول، والرسوم البيانية.وكلاء يستخدمون أدوات
استدعاء الوظائف الأصلي يقلل دورات التصحيح اليدوي لمدخلات الأدوات.
الأسئلة الشائعة
ما هو معرف النموذج؟
استخدم mistral-medium-3.5 في API المستضاف. على Hugging Face، نقطة التحقق باسم mistralai/Mistral-Medium-3.5-128B.
هل هو متوافق مع OpenAI؟
قريب جدًا. تعمل حزم OpenAI Python وNode عادةً مع تغيير base_url. الاختلافان العمليان هما tool_choice="any" وrandom_seed.
هل يمكن تشغيله محليًا؟
نعم، الأوزان مفتوحة بموجب ترخيص MIT معدل مع استثناء للإيرادات الكبيرة. لكن نموذج 128B يحتاج ذاكرة GPU كبيرة. توجد إصدارات GGUF كمية مثل unsloth/Mistral-Medium-3.5-128B-GGUF. أنماط التشغيل مشابهة لما في كيفية تشغيل DeepSeek V4 محليًا.
هل يدعم البث مع استدعاءات الأدوات؟
نعم. يمكن أن تصل أجزاء استدعاء الأداة تدريجيًا عبر delta.tool_calls ثم تُجمّع في JSON كامل عند نهاية البث.
كيف أحسب الرموز قبل الإرسال؟
استخدم أداة الترميز في حزمة mistral-common للحصول على عد قريب من usage.prompt_tokens.
هل يجب أن أستخدم سياق 256 ألفًا دائمًا؟
لا. السياق الطويل مكلف خطيًا. استخدمه فقط عندما تحتاجه فعلًا. كثير من أحمال الإنتاج تكفيها نافذة أقل من 32 ألفًا.
هل توجد طبقة مجانية؟
لا تعلن ميسترال عن طبقة مجانية دائمة، لكن الحسابات الجديدة قد تحصل على رصيد تجريبي. لتجربة مجانية مستمرة مع نماذج من فئة مشابهة، راجع كيفية استخدام DeepSeek V4 API مجانًا.


Top comments (0)