تحليل الوسائط ونص التعليمات
الوسائط المطلوبة مقابل الاختيارية، والتحقق من الأنواع، والتعليمات المُنشأة تلقائيًا
تحليل الوسائط ونص التعليمات درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
يبدأ التصميم الجيد لـ CLI بالوسائط الجيدة
تعني واجهة الوسائط المصممة جيدًا لوكيل CLI أن يتمكن المستخدمون من معرفة كيفية استخدام الأداة بالاعتماد على --help وحده. يجب أن يكون لكل وسيط اسم ونوع وقيمة افتراضية ووصف واضح.
تجعل الوسائط ذات الأسماء السيئة أو غير الموثقة الأدوات محبطة عند الاستخدام وصعبة الصيانة.
الوسائط المطلوبة مقابل الاختيارية
يجب توفير الوسائط المطلوبة، إذ يخرج CLI مع ظهور خطأ إذا كانت مفقودة. أما الوسائط الاختيارية فلها قيمة default= ويمكن حذفها. ويؤثر تحديد أيٍّ منها مطلوب وأيّها اختياري في تجربة استخدام أداتكم.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
# Required: no default, must be provided
parser.add_argument(
'--query', '-q',
type=str,
required=True,
help='Question to send to the agent'
)
# Optional: has a default, can be omitted
parser.add_argument(
'--model', '-m',
type=str,
default='gpt-4o-mini',
help='Model name (default: gpt-4o-mini)'
)
parser.add_argument(
'--max-tokens',
type=int,
default=1000,
help='Maximum tokens in response (default: 1000)'
)
args = parser.parse_args(['--query', 'test'])
print(args.query, args.model, args.max_tokens)التحقق من النوع
تحوّل المعلمة type= الإدخال النصي تلقائيًا وتتحقق من صحته. استخدموا الأنواع المدمجة مثل int وfloat وbool، أو دالة مخصصة للتحقق الأكثر تعقيدًا.
import argparse
def positive_int(value: str) -> int:
n = int(value)
if n <= 0:
raise argparse.ArgumentTypeError(f'{value} must be a positive integer')
return n
parser = argparse.ArgumentParser()
parser.add_argument('--temperature', type=float, help='LLM temperature 0.0-2.0')
parser.add_argument('--max-results', type=positive_int, default=5,
help='Number of results to return (must be > 0)')
parser.add_argument('--timeout', type=float, default=30.0,
help='Request timeout in seconds')
# These would be rejected with helpful error messages:
# --temperature abc -> invalid float value
# --max-results -1 -> must be positive integer
args = parser.parse_args(['--temperature', '0.7', '--max-results', '3'])
print(args.temperature, args.max_results)الخيارات: تقييد القيم الصالحة
تقيّد المعلمة choices=[...] الوسيط بمجموعة ثابتة من القيم المسموح بها. ويتحقق argparse من ذلك تلقائيًا ويسرد الخيارات في نص المساعدة.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--format',
choices=['json', 'text', 'markdown'],
default='text',
help='Output format: json, text, or markdown'
)
parser.add_argument(
'--model',
choices=['gpt-4o', 'gpt-4o-mini', 'claude-3-5-sonnet', 'gemini-1.5-flash'],
default='gpt-4o-mini',
help='Model to use'
)
# Error if invalid value given:
# python agent.py --format xml
# agent.py: error: argument --format: invalid choice: 'xml'
# (choose from 'json', 'text', 'markdown')
args = parser.parse_args(['--format', 'json'])
print(args.format) # 'json'الخيارات المنطقية باستخدام store_true
الخيارات المنطقية هي مفاتيح تبديل تعتمد على الوجود أو الغياب، ولا تُزوَّد بقيمة. استخدموا action='store_true' لتعيين الخيار إلى True عند وجوده وإلى False عند غيابه.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--verbose', '-v',
action='store_true',
help='Enable verbose output showing agent reasoning steps'
)
parser.add_argument(
'--no-cache',
action='store_true',
help='Disable response caching'
)
parser.add_argument(
'--dry-run',
action='store_true',
help='Parse arguments but do not run the agent'
)
# Usage: python agent.py --query 'test' --verbose
args = parser.parse_args(['--verbose'])
print(f'verbose={args.verbose}') # True
print(f'no_cache={args.no_cache}') # False
print(f'dry_run={args.dry_run}') # Falsemetavar: التحكم في عرض نص المساعدة
يعرض argparse اسم الوسيط بأحرف كبيرة في نص المساعدة افتراضيًا: --query QUERY. استخدموا metavar= لعرض عنصر نائب أكثر إفادة مثل QUESTION أو URL.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--query',
type=str,
metavar='QUESTION', # shown in help as: --query QUESTION
required=True,
help='Natural language question for the agent'
)
parser.add_argument(
'--url',
type=str,
metavar='URL', # shown in help as: --url URL
help='URL to scrape and summarize'
)
parser.add_argument(
'--temperature',
type=float,
metavar='0.0-2.0', # shown in help as: --temperature 0.0-2.0
default=0.7
)
# Help output:
# --query QUESTION Natural language question for the agent
# --url URL URL to scrape and summarize
print('metavar makes help text more informative')قيم متعددة باستخدام nargs
استخدموا nargs='+' لقبول قيمة واحدة أو أكثر، أو nargs='*' لقبول صفر من القيم أو أكثر. ويفيد ذلك في تمرير قوائم بعناوين URL أو وسوم أو مسارات ملفات إلى الوكيل.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--urls',
nargs='+', # one or more URLs
metavar='URL',
help='URLs to analyze (space-separated)'
)
parser.add_argument(
'--tags',
nargs='*', # zero or more tags
default=[],
help='Optional tags for filtering results'
)
# Usage: python agent.py --urls https://a.com https://b.com --tags ai research
args = parser.parse_args(
['--urls', 'https://a.com', 'https://b.com', '--tags', 'ai']
)
print(args.urls) # ['https://a.com', 'https://b.com']
print(args.tags) # ['ai']الأوامر الفرعية باستخدام add_subparsers()
تمنح الأوامر الفرعية، مثل git commit وgit push، كل أمر مجموعة الوسائط الخاصة به. استخدموا add_subparsers() لتعريفها في argparse.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
subparsers = parser.add_subparsers(dest='command', help='Available commands')
# 'ask' subcommand
ask_parser = subparsers.add_parser('ask', help='Ask the agent a question')
ask_parser.add_argument('question', type=str, help='Question to ask')
ask_parser.add_argument('--model', default='gpt-4o-mini')
# 'search' subcommand
search_parser = subparsers.add_parser('search', help='Research a topic')
search_parser.add_argument('topic', type=str, help='Topic to research')
search_parser.add_argument('--depth', type=int, default=3, choices=[1, 2, 3])
args = parser.parse_args(['ask', 'What is Python?', '--model', 'gpt-4o'])
print(args.command) # 'ask'
print(args.question) # 'What is Python?'
print(args.model) # 'gpt-4o'كتابة نص مساعدة جيد
يجيب نص المساعدة الجيد عن ثلاثة أسئلة: ماذا يفعل هذا الوسيط؟ وما القيم الصالحة؟ وما القيمة الافتراضية؟ اكتبوا نص المساعدة من منظور المستخدم، لا من منظور منفّذ الأداة.
import argparse
parser = argparse.ArgumentParser(
description='AI Research Agent — answers questions using web search and LLMs.',
epilog='Example: python agent.py --query "What is quantum computing?" --format json'
)
# Bad help text:
parser.add_argument('--t', type=float, help='t value') # cryptic
# Good help text:
parser.add_argument(
'--temperature',
type=float,
default=0.7,
metavar='0.0-2.0',
help='Sampling temperature for the LLM. Lower = more focused, higher = more creative. (default: 0.7)'
)
print('Good help text explains what, how, and default value')مجموعات الوسائط لواجهات CLI المعقدة
عندما يتضمن CLI عددًا كبيرًا من الوسائط، جمّعوها حسب الموضوع باستخدام add_argument_group(). يجعل ذلك مخرجات --help أسهل بكثير في القراءة.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
# Group 1: required inputs
required_group = parser.add_argument_group('Required')
required_group.add_argument('--query', required=True, help='Question to ask')
# Group 2: LLM settings
llm_group = parser.add_argument_group('LLM Settings')
llm_group.add_argument('--model', default='gpt-4o-mini', help='Model name')
llm_group.add_argument('--temperature', type=float, default=0.7)
llm_group.add_argument('--max-tokens', type=int, default=1000)
# Group 3: output settings
output_group = parser.add_argument_group('Output')
output_group.add_argument('--format', choices=['text', 'json'], default='text')
output_group.add_argument('--verbose', action='store_true')
print('Argument groups organize --help output by category')القيم الاحتياطية من متغيرات البيئة
اسمحوا للوسائط بالرجوع إلى متغيرات البيئة عند عدم توفيرها. يتيح ذلك للمستخدمين تعيين القيم الافتراضية في ملف تعريف الصدفة الخاص بهم دون كتابتها في كل مرة.
import argparse
import os
os.environ['OPENAI_API_KEY'] = 'sk-proj-demo-key'
parser = argparse.ArgumentParser()
parser.add_argument(
'--api-key',
type=str,
default=os.environ.get('OPENAI_API_KEY'),
help='OpenAI API key (default: $OPENAI_API_KEY env var)'
)
parser.add_argument(
'--model',
type=str,
default=os.environ.get('AGENT_MODEL', 'gpt-4o-mini'),
help='Model to use (default: $AGENT_MODEL or gpt-4o-mini)'
)
args = parser.parse_args([])
if not args.api_key:
parser.error('--api-key is required (or set OPENAI_API_KEY environment variable)')
print(f'Model: {args.model}')اختبار المعرفة: تحليل الوسائط
اختبروا مدى فهمكم لتقنيات تحليل وسائط CLI.
مراجعة: تحليل الوسائط ونص المساعدة
أصبحتم تعرفون الآن كيفية بناء واجهة وسائط CLI مكتملة وسهلة الاستخدام:
- استخدموا
required=Trueللوسائط الإلزامية، وdefault=للوسائط الاختيارية - تحققوا من أنواع الإدخال باستخدام
type=ودوال التحقق المخصصة - قيّدوا القيم باستخدام
choices=[...] - استخدموا
action='store_true'للخيارات المنطقية - حسّنوا سهولة قراءة المساعدة باستخدام
metavar=وسلاسلhelp=الواضحة - اقبلوا قيمًا متعددة باستخدام
nargs='+' - استخدموا الأوامر الفرعية ومجموعات الوسائط لواجهات CLI المعقدة
- استخدموا متغيرات البيئة كقيم احتياطية للإعدادات الشائعة
الأسئلة الشائعة
هل درس «تحليل الوسائط ونص التعليمات» مجاني؟
نعم — نص درس «تحليل الوسائط ونص التعليمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «تحليل الوسائط ونص التعليمات»؟
الوسائط المطلوبة مقابل الاختيارية، والتحقق من الأنواع، والتعليمات المُنشأة تلقائيًا تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تحليل الوسائط ونص التعليمات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بناء واجهات وكلاء لسطر الأوامر
- وكلاء تفاعليون بنمط REPL
- تحليل الوسائط ونص التعليمات
- تدفق المخرجات في وكلاء CLI