بناء وكلاء الذكاء الاصطناعي باستخدام نماذج متعددة: دليل معماري عملي
معظم وكلاء الذكاء الاصطناعي يستخدمون نموذجًا واحدًا لكل شيء. خطوة التخطيط، استدعاءات الأدوات، التلخيص، استرداد الأخطاء. هذا يعمل في العروض التوضيحية. في الإنتاج، هذا مضيعة.
خطوة التخطيط التي تتطلب تفكيرًا عميقًا لا تحتاج إلى نفس النموذج المستخدم في خطوة استخراج JSON. مهمة توليد الكود لها متطلبات مختلفة عن مهمة التصنيف. استخدام Claude Opus 4.6 (25 دولارًا لكل مليون رمز مخرجات) لتنسيق سلسلة تاريخ يشبه توظيف مهندس معماري كبير لرسم جدار.
إليك كيفية بناء وكلاء يوجهون كل خطوة إلى النموذج الأمثل.
معمارية الوكيل متعدد النماذج
User Request
│
▼
┌─────────────┐
│ Router │ ← يصنف تعقيد المهمة
│ (fast model)│
└──────┬──────┘
│
┌───┴───┐
▼ ▼
┌──────┐ ┌──────┐
│Simple│ │Complex│
│Model │ │Model │
└──┬───┘ └──┬───┘
│ │
▼ ▼
┌─────────────┐
│ Aggregator │ ← يجمع النتائج
│ (fast model)│
└─────────────┘
ثلاث مكونات:
- موجه يصنف المهام الواردة حسب التعقيد
- مجموعة من النماذج متطابقة مع أنواع المهام المختلفة
- مجمّع يجمع النتائج عند الحاجة
التنفيذ باستخدام OpenAI SDK
باستخدام مفتاح API واحد عبر مجمّع، يمكنك الوصول إلى جميع النماذج دون إدارة SDKs متعددة:
from openai import OpenAI
client = OpenAI(
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc/v1"
)
# Model pool with cost/capability tiers
MODELS = {
"router": "gpt-4.1-mini", # $0.40/1M in - fast classification
"simple": "gpt-4.1-mini", # $0.40/1M in - extraction, formatting
"reasoning": "claude-sonnet-4-6", # $3.00/1M in - planning, analysis
"complex": "gpt-4.1", # $2.00/1M in - code gen, multi-step
"budget": "deepseek-chat", # $0.28/1M in - bulk processing
}
def route_task(task: str) -> str:
"""Use a cheap model to classify task complexity."""
response = client.chat.completions.create(
model=MODELS["router"],
messages=[
{"role": "system", "content": """Classify this task into one category:
- simple: data extraction, formatting, translation
- reasoning: analysis, planning, comparison
- complex: code generation, multi-step problem solving
- budget: bulk processing, non-critical tasks
Reply with just the category name."""},
{"role": "user", "content": task}
],
max_tokens=10
)
category = response.choices[0].message.content.strip().lower()
return MODELS.get(category, MODELS["simple"])
def execute_task(task: str, context: str = "") -> str:
"""Route task to appropriate model and execute."""
model = route_task(task)
messages = []
if context:
messages.append({"role": "system", "content": context})
messages.append({"role": "user", "content": task})
response = client.chat.completions.create(
model=model,
messages=messages
)
return response.choices[0].message.content
وكيل عملي في العالم الحقيقي: خط مراجعة الكود
إليك وكيل متعدد النماذج عملي يقوم بمراجعة طلبات السحب (Pull Requests):
def review_pr(diff: str) -> dict:
"""Multi-model PR review pipeline."""
# Step 1: Classify changes (cheap model)
classification = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[{
"role": "user",
"content": f"Classify these code changes: {diff[:2000]}\n"
"Categories: bugfix, feature, refactor, docs, test"
}],
max_tokens=20
).choices[0].message.content
# Step 2: Security scan (reasoning model)
security = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{
"role": "system",
"content": "You are a security reviewer. Check for: "
"SQL injection, XSS, auth bypass, secrets in code, "
"unsafe deserialization. Be specific about line numbers."
}, {
"role": "user",
"content": f"Review this diff for security issues:\n{diff}"
}]
).choices[0].message.content
# Step 3: Code quality (general model)
quality = client.chat.completions.create(
model="gpt-4.1",
messages=[{
"role": "user",
"content": f"Review code quality: naming, structure, "
f"error handling, test coverage.\n{diff}"
}]
).choices[0].message.content
# Step 4: Summary (cheap model)
summary = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[{
"role": "user",
"content": f"Summarize this PR review in 3 bullet points:\n"
f"Type: {classification}\n"
f"Security: {security[:500]}\n"
f"Quality: {quality[:500]}"
}]
).choices[0].message.content
return {
"classification": classification,
"security": security,
"quality": quality,
"summary": summary
}
تفصيل التكلفة لمراجعة طلب سحب نموذجي (فرق 2K رمز):
| الخطوة | النموذج | رموز الإدخال | التكلفة |
|---|---|---|---|
| تصنيف | GPT-4.1-mini | ~2,100 | $0.0008 |
| الأمان | Claude Sonnet 4.6 | ~2,500 | $0.0075 |
| الجودة | GPT-4.1 | ~2,500 | $0.0050 |
| الملخص | GPT-4.1-mini | ~1,200 | $0.0005 |
| الإجمالي | ~$0.014 |
استخدام Claude Sonnet 4.6 لجميع الخطوات الأربع سيكلف حوالي 0.028 دولار. النهج متعدد النماذج يقلل التكاليف بنسبة 50% مع استخدام أقوى نموذج حيث يهم الأمر أكثر (مراجعة الأمان).
تكامل LangChain
from langchain_openai import ChatOpenAI
# Create model instances with different configs
fast = ChatOpenAI(
model="gpt-4.1-mini",
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc/v1"
)
reasoning = ChatOpenAI(
model="claude-sonnet-4-6",
api_key="sk-lemon-xxx",
base_url="https://api.lemondata.cc/v1"
)
# Use in LangChain chains
from langchain_core.prompts import ChatPromptTemplate
classify_chain = ChatPromptTemplate.from_template(
"Classify: {input}"
) | fast
analyze_chain = ChatPromptTemplate.from_template(
"Analyze in depth: {input}"
) | reasoning
متى تستخدم وكلاء متعدد النماذج
التوجيه متعدد النماذج يضيف تعقيدًا. يستحق ذلك عندما:
- يتعامل وكيلك مع أنواع مهام متنوعة (ليس فقط الدردشة)
- تكاليف API الشهرية تتجاوز 100 دولار (تصبح التوفير ذات معنى)
- تحتاج إلى قوى نموذج محددة (Claude للكود، Gemini للسياق الطويل، GPT للسرعة)
- الزمن المستغرق مهم لبعض الخطوات وليس للآخرين
لروبوتات الدردشة البسيطة أو الوكلاء ذوي الغرض الواحد، نموذج واحد يكفي. العبء الزائد للتوجيه غير مبرر عندما يحتاج كل طلب إلى نفس القدرة.
النقاط الرئيسية
- استخدم أرخص نموذج يتعامل مع كل خطوة بشكل جيد
- احتفظ بالنماذج المكلفة للمهام التي تحتاجها حقًا
- خطوات التصنيف/التوجيه يجب أن تستخدم دائمًا أرخص نموذج متاح
- قِس التكلفة الفعلية لكل تشغيل للوكيل، وليس فقط تسعير لكل رمز
- مجمّع API بمفتاح واحد يبسط الوصول إلى النماذج المتعددة بشكل كبير
الوصول إلى كل نموذج من خلال API واحد: lemondata.cc يوفر أكثر من 300 نموذج بمفتاح API واحد. ابنِ وكلاء متعدد النماذج دون إدارة حسابات مزود متعددة.
