معمل
بناء أداة MCP للطقس
30 دقيقة
متوسط3 المحاولات المجانية
التعليمات
الهدف
بناء فئة Python تمثل أداة MCP للطقس، مكتملة مع التحقق من المدخلات ومعالجة الأخطاء وتنسيق الاستجابة المناسب.
المتطلبات
أنشئ فئة WeatherTool تقوم بـ:
-
تعريف مخطط الأداة بطريقة
get_tool_definition()تُرجع:{ "name": "get_weather", "description": "الحصول على الطقس الحالي لمدينة", "inputSchema": { "type": "object", "properties": { "city": {"type": "string", "description": "اسم المدينة"}, "units": {"type": "string", "enum": ["celsius", "fahrenheit"]} }, "required": ["city"] } } -
التحقق من المدخلات بطريقة
validate(arguments: dict) -> bool:- تُرجع
Trueإذا كانت صالحة - ترفع
ValueErrorبرسالة إذا كانت غير صالحة - يجب التحقق: المدينة سلسلة غير فارغة، الوحدات (إن وُجدت) صالحة
- تُرجع
-
تنفيذ الأداة بطريقة
execute(arguments: dict) -> dict:- محاكاة بيانات الطقس (استخدم بيانات وهمية، لا حاجة لـ API حقيقي)
- تُرجع:
{"city": str, "temperature": int, "units": str, "condition": str} - الوحدات الافتراضية هي "celsius"
-
تنسيق الاستجابة بطريقة
format_response(result: dict) -> str:- تُرجع سلسلة قابلة للقراءة مثل: "الطقس في لندن: 15°C، غائم جزئياً"
مثال على الاستخدام
tool = WeatherTool()
# الحصول على التعريف
definition = tool.get_tool_definition()
print(definition["name"]) # "get_weather"
# التحقق
tool.validate({"city": "London"}) # True
tool.validate({"city": ""}) # ترفع ValueError
# التنفيذ
result = tool.execute({"city": "London", "units": "celsius"})
# {"city": "London", "temperature": 15, "units": "celsius", "condition": "Partly cloudy"}
# التنسيق
text = tool.format_response(result)
# "Weather in London: 15°C, Partly cloudy"
تلميحات
- للطقس الوهمي، يمكنك استخدام قاموس بسيط يربط المدن بدرجات الحرارة
- استخدم
°Cلـ celsius و°Fلـ fahrenheit في المخرجات المنسقة - يجب أن يكون التحقق صارماً ولكن يتعامل مع الحقول الاختيارية بأمان
معايير التقييم
ينفذ get_tool_definition بشكل صحيح مع المخطط المناسب25 نقاط
طريقة التحقق تتحقق بشكل صحيح من الحقول المطلوبة وترفع ValueError25 نقاط
طريقة التنفيذ تُرجع قاموس نتائج كامل بجميع الحقول المطلوبة25 نقاط
format_response تنتج مخرجات صحيحة قابلة للقراءة مع الوحدات المناسبة25 نقاط
حلك
يمكنك استخدام أي لغة برمجة
3 محاولات مجانية متبقية