|
| 1 | +<!-- |
| 2 | +CO_OP_TRANSLATOR_METADATA: |
| 3 | +{ |
| 4 | + "original_hash": "afc90918d008cf77fd1982691f681306", |
| 5 | + "translation_date": "2025-10-03T08:26:25+00:00", |
| 6 | + "source_file": "AGENTS.md", |
| 7 | + "language_code": "ar" |
| 8 | +} |
| 9 | +--> |
| 10 | +# AGENTS.md |
| 11 | + |
| 12 | +## نظرة عامة على المشروع |
| 13 | + |
| 14 | +هذا مستودع تعليمي لتعلم تطوير الذكاء الاصطناعي التوليدي باستخدام Java. يقدم دورة عملية شاملة تغطي نماذج اللغة الكبيرة (LLMs)، هندسة التوجيه، التضمينات، RAG (توليد معزز بالاسترجاع)، وبروتوكول سياق النموذج (MCP). |
| 15 | + |
| 16 | +**التقنيات الرئيسية:** |
| 17 | +- Java 21 |
| 18 | +- Spring Boot 3.5.x |
| 19 | +- Spring AI 1.1.x |
| 20 | +- Maven |
| 21 | +- LangChain4j |
| 22 | +- نماذج GitHub، Azure OpenAI، و OpenAI SDKs |
| 23 | + |
| 24 | +**الهندسة المعمارية:** |
| 25 | +- تطبيقات Spring Boot مستقلة متعددة منظمة حسب الفصول |
| 26 | +- مشاريع نموذجية توضح أنماط الذكاء الاصطناعي المختلفة |
| 27 | +- جاهزة للعمل مع GitHub Codespaces مع حاويات تطوير مُعدة مسبقًا |
| 28 | + |
| 29 | +## أوامر الإعداد |
| 30 | + |
| 31 | +### المتطلبات الأساسية |
| 32 | +- Java 21 أو أعلى |
| 33 | +- Maven 3.x |
| 34 | +- رمز وصول شخصي لـ GitHub (لنماذج GitHub) |
| 35 | +- اختياري: بيانات اعتماد Azure OpenAI |
| 36 | + |
| 37 | +### إعداد البيئة |
| 38 | + |
| 39 | +**الخيار 1: GitHub Codespaces (موصى به)** |
| 40 | +```bash |
| 41 | +# Fork the repository and create a codespace from GitHub UI |
| 42 | +# The dev container will automatically install all dependencies |
| 43 | +# Wait ~2 minutes for environment setup |
| 44 | +``` |
| 45 | + |
| 46 | +**الخيار 2: حاوية تطوير محلية** |
| 47 | +```bash |
| 48 | +# Clone repository |
| 49 | +git clone https://github.com/microsoft/Generative-AI-for-beginners-java.git |
| 50 | +cd Generative-AI-for-beginners-java |
| 51 | + |
| 52 | +# Open in VS Code with Dev Containers extension |
| 53 | +# Reopen in Container when prompted |
| 54 | +``` |
| 55 | + |
| 56 | +**الخيار 3: إعداد محلي** |
| 57 | +```bash |
| 58 | +# Install dependencies |
| 59 | +sudo apt-get update |
| 60 | +sudo apt-get install -y maven openjdk-21-jdk |
| 61 | + |
| 62 | +# Verify installation |
| 63 | +java -version |
| 64 | +mvn -version |
| 65 | +``` |
| 66 | + |
| 67 | + |
| 68 | +### التكوين |
| 69 | + |
| 70 | +**إعداد رمز GitHub:** |
| 71 | +```bash |
| 72 | +# Create a GitHub Personal Access Token |
| 73 | +# Set environment variable |
| 74 | +export GITHUB_TOKEN="your-token-here" |
| 75 | +``` |
| 76 | + |
| 77 | +**إعداد Azure OpenAI (اختياري):** |
| 78 | +```bash |
| 79 | +# For examples using Azure OpenAI |
| 80 | +cd 02-SetupDevEnvironment/examples/basic-chat-azure |
| 81 | +cp .env.example .env |
| 82 | +# Edit .env with your Azure OpenAI credentials |
| 83 | +``` |
| 84 | + |
| 85 | + |
| 86 | +## سير العمل التطويري |
| 87 | + |
| 88 | +### هيكل المشروع |
| 89 | +``` |
| 90 | +/ |
| 91 | +├── 01-IntroToGenAI/ # Chapter 1: Introduction |
| 92 | +├── 02-SetupDevEnvironment/ # Chapter 2: Environment setup |
| 93 | +│ └── examples/ # Working examples |
| 94 | +├── 03-CoreGenerativeAITechniques/ # Chapter 3: Core techniques |
| 95 | +├── 04-PracticalSamples/ # Chapter 4: Sample projects |
| 96 | +│ ├── calculator/ # MCP service example |
| 97 | +│ ├── foundrylocal/ # Local model integration |
| 98 | +│ └── petstory/ # Multi-modal app |
| 99 | +├── 05-ResponsibleGenAI/ # Chapter 5: Responsible AI |
| 100 | +└── translations/ # Multi-language support |
| 101 | +``` |
| 102 | + |
| 103 | + |
| 104 | +### تشغيل التطبيقات |
| 105 | + |
| 106 | +**تشغيل تطبيق Spring Boot:** |
| 107 | +```bash |
| 108 | +cd [project-directory] |
| 109 | +mvn spring-boot:run |
| 110 | +``` |
| 111 | + |
| 112 | +**بناء المشروع:** |
| 113 | +```bash |
| 114 | +cd [project-directory] |
| 115 | +mvn clean install |
| 116 | +``` |
| 117 | + |
| 118 | +**تشغيل خادم MCP Calculator:** |
| 119 | +```bash |
| 120 | +cd 04-PracticalSamples/calculator |
| 121 | +mvn spring-boot:run |
| 122 | +# Server runs on http://localhost:8080 |
| 123 | +``` |
| 124 | + |
| 125 | +**تشغيل أمثلة العميل:** |
| 126 | +```bash |
| 127 | +# After starting the server in another terminal |
| 128 | +cd 04-PracticalSamples/calculator |
| 129 | + |
| 130 | +# Direct MCP client |
| 131 | +mvn exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.SDKClient" |
| 132 | + |
| 133 | +# AI-powered client (requires GITHUB_TOKEN) |
| 134 | +mvn exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.LangChain4jClient" |
| 135 | + |
| 136 | +# Interactive bot |
| 137 | +mvn exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.Bot" |
| 138 | +``` |
| 139 | + |
| 140 | + |
| 141 | +### إعادة التحميل السريع |
| 142 | +تم تضمين Spring Boot DevTools في المشاريع التي تدعم إعادة التحميل السريع: |
| 143 | +```bash |
| 144 | +# Changes to Java files will automatically reload when saved |
| 145 | +mvn spring-boot:run |
| 146 | +``` |
| 147 | + |
| 148 | + |
| 149 | +## تعليمات الاختبار |
| 150 | + |
| 151 | +### تشغيل الاختبارات |
| 152 | + |
| 153 | +**تشغيل جميع الاختبارات في المشروع:** |
| 154 | +```bash |
| 155 | +cd [project-directory] |
| 156 | +mvn test |
| 157 | +``` |
| 158 | + |
| 159 | +**تشغيل الاختبارات مع إخراج مفصل:** |
| 160 | +```bash |
| 161 | +mvn test -X |
| 162 | +``` |
| 163 | + |
| 164 | +**تشغيل فئة اختبار محددة:** |
| 165 | +```bash |
| 166 | +mvn test -Dtest=CalculatorServiceTest |
| 167 | +``` |
| 168 | + |
| 169 | + |
| 170 | +### هيكل الاختبار |
| 171 | +- ملفات الاختبار تستخدم JUnit 5 (Jupiter) |
| 172 | +- فئات الاختبار موجودة في `src/test/java/` |
| 173 | +- أمثلة العميل في مشروع الحاسبة موجودة في `src/test/java/com/microsoft/mcp/sample/client/` |
| 174 | + |
| 175 | +### الاختبار اليدوي |
| 176 | +العديد من الأمثلة هي تطبيقات تفاعلية تتطلب اختبارًا يدويًا: |
| 177 | + |
| 178 | +1. قم بتشغيل التطبيق باستخدام `mvn spring-boot:run` |
| 179 | +2. اختبر نقاط النهاية أو تفاعل مع CLI |
| 180 | +3. تحقق من أن السلوك المتوقع يتطابق مع الوثائق في README.md لكل مشروع |
| 181 | + |
| 182 | +### الاختبار باستخدام نماذج GitHub |
| 183 | +- حدود الطبقة المجانية: 15 طلبًا/دقيقة، 150/يوم |
| 184 | +- 5 طلبات متزامنة كحد أقصى |
| 185 | +- اختبار تصفية المحتوى باستخدام أمثلة الذكاء الاصطناعي المسؤول |
| 186 | + |
| 187 | +## إرشادات نمط الكود |
| 188 | + |
| 189 | +### اتفاقيات Java |
| 190 | +- **إصدار Java:** Java 21 مع الميزات الحديثة |
| 191 | +- **النمط:** اتباع اتفاقيات Java القياسية |
| 192 | +- **التسمية:** |
| 193 | + - الفئات: PascalCase |
| 194 | + - الطرق/المتغيرات: camelCase |
| 195 | + - الثوابت: UPPER_SNAKE_CASE |
| 196 | + - أسماء الحزم: أحرف صغيرة |
| 197 | + |
| 198 | +### أنماط Spring Boot |
| 199 | +- استخدام `@Service` للمنطق التجاري |
| 200 | +- استخدام `@RestController` لنقاط النهاية REST |
| 201 | +- التكوين عبر `application.yml` أو `application.properties` |
| 202 | +- تفضيل متغيرات البيئة على القيم الثابتة |
| 203 | +- استخدام التعليمة `@Tool` للطرق المكشوفة عبر MCP |
| 204 | + |
| 205 | +### تنظيم الملفات |
| 206 | +``` |
| 207 | +src/ |
| 208 | +├── main/ |
| 209 | +│ ├── java/ |
| 210 | +│ │ └── com/microsoft/[component]/ |
| 211 | +│ │ ├── [Component]Application.java |
| 212 | +│ │ ├── config/ |
| 213 | +│ │ ├── controller/ |
| 214 | +│ │ ├── service/ |
| 215 | +│ │ └── exception/ |
| 216 | +│ └── resources/ |
| 217 | +│ ├── application.yml |
| 218 | +│ └── static/ |
| 219 | +└── test/ |
| 220 | + └── java/ |
| 221 | + └── com/microsoft/[component]/ |
| 222 | +``` |
| 223 | + |
| 224 | + |
| 225 | +### التبعيات |
| 226 | +- تُدار عبر Maven `pom.xml` |
| 227 | +- Spring AI BOM لإدارة الإصدارات |
| 228 | +- LangChain4j للتكاملات الذكاء الاصطناعي |
| 229 | +- Spring Boot starter parent لتبعيات Spring |
| 230 | + |
| 231 | +### تعليقات الكود |
| 232 | +- إضافة JavaDoc لواجهات برمجة التطبيقات العامة |
| 233 | +- تضمين تعليقات تفسيرية للتفاعلات المعقدة مع الذكاء الاصطناعي |
| 234 | +- توثيق أوصاف أدوات MCP بوضوح |
| 235 | + |
| 236 | +## البناء والنشر |
| 237 | + |
| 238 | +### بناء المشاريع |
| 239 | + |
| 240 | +**البناء بدون اختبارات:** |
| 241 | +```bash |
| 242 | +mvn clean install -DskipTests |
| 243 | +``` |
| 244 | + |
| 245 | +**البناء مع جميع الفحوصات:** |
| 246 | +```bash |
| 247 | +mvn clean install |
| 248 | +``` |
| 249 | + |
| 250 | +**تغليف التطبيق:** |
| 251 | +```bash |
| 252 | +mvn package |
| 253 | +# Creates JAR in target/ directory |
| 254 | +``` |
| 255 | + |
| 256 | + |
| 257 | +### أدلة الإخراج |
| 258 | +- الفئات المترجمة: `target/classes/` |
| 259 | +- فئات الاختبار: `target/test-classes/` |
| 260 | +- ملفات JAR: `target/*.jar` |
| 261 | +- قطع Maven: `target/` |
| 262 | + |
| 263 | +### تكوين خاص بالبيئة |
| 264 | + |
| 265 | +**التطوير:** |
| 266 | +```yaml |
| 267 | +# application.yml |
| 268 | +spring: |
| 269 | + ai: |
| 270 | + openai: |
| 271 | + api-key: ${GITHUB_TOKEN} |
| 272 | + base-url: https://models.inference.ai.azure.com |
| 273 | +``` |
| 274 | +
|
| 275 | +**الإنتاج:** |
| 276 | +- استخدام نماذج Azure AI Foundry بدلاً من نماذج GitHub |
| 277 | +- تحديث عنوان URL الأساسي إلى نقطة نهاية Azure OpenAI |
| 278 | +- إدارة الأسرار عبر Azure Key Vault أو متغيرات البيئة |
| 279 | +
|
| 280 | +### اعتبارات النشر |
| 281 | +- هذا مستودع تعليمي مع تطبيقات نموذجية |
| 282 | +- غير مصمم للنشر الإنتاجي كما هو |
| 283 | +- الأمثلة توضح أنماطًا يمكن تكييفها للاستخدام الإنتاجي |
| 284 | +- راجع ملفات README لكل مشروع للحصول على ملاحظات النشر المحددة |
| 285 | +
|
| 286 | +## ملاحظات إضافية |
| 287 | +
|
| 288 | +### نماذج GitHub مقابل Azure OpenAI |
| 289 | +- **نماذج GitHub:** طبقة مجانية للتعلم، لا حاجة لبطاقة ائتمان |
| 290 | +- **Azure OpenAI:** جاهزة للإنتاج، تتطلب اشتراك Azure |
| 291 | +- الكود متوافق بين الاثنين - فقط قم بتغيير نقطة النهاية ومفتاح API |
| 292 | +
|
| 293 | +### العمل مع مشاريع متعددة |
| 294 | +كل مشروع نموذجي مستقل: |
| 295 | +```bash |
| 296 | +# Navigate to specific project |
| 297 | +cd 04-PracticalSamples/[project-name] |
| 298 | + |
| 299 | +# Each has its own pom.xml and can be built independently |
| 300 | +mvn clean install |
| 301 | +``` |
| 302 | + |
| 303 | + |
| 304 | +### المشكلات الشائعة |
| 305 | + |
| 306 | +**عدم توافق إصدار Java:** |
| 307 | +```bash |
| 308 | +# Verify Java 21 |
| 309 | +java -version |
| 310 | +# Update JAVA_HOME if needed |
| 311 | +export JAVA_HOME=/usr/lib/jvm/msopenjdk-current |
| 312 | +``` |
| 313 | + |
| 314 | +**مشكلات تنزيل التبعيات:** |
| 315 | +```bash |
| 316 | +# Clear Maven cache and retry |
| 317 | +rm -rf ~/.m2/repository |
| 318 | +mvn clean install |
| 319 | +``` |
| 320 | + |
| 321 | +**رمز GitHub غير موجود:** |
| 322 | +```bash |
| 323 | +# Set in current session |
| 324 | +export GITHUB_TOKEN="your-token-here" |
| 325 | + |
| 326 | +# Or use .env file in project directory |
| 327 | +echo "GITHUB_TOKEN=your-token-here" > .env |
| 328 | +``` |
| 329 | + |
| 330 | +**المنفذ قيد الاستخدام بالفعل:** |
| 331 | +```bash |
| 332 | +# Spring Boot uses port 8080 by default |
| 333 | +# Change in application.properties: |
| 334 | +server.port=8081 |
| 335 | +``` |
| 336 | + |
| 337 | + |
| 338 | +### دعم متعدد اللغات |
| 339 | +- الوثائق متوفرة بأكثر من 45 لغة عبر الترجمة الآلية |
| 340 | +- الترجمات موجودة في دليل `translations/` |
| 341 | +- تُدار الترجمة بواسطة سير عمل GitHub Actions |
| 342 | + |
| 343 | +### مسار التعلم |
| 344 | +1. ابدأ بـ [02-SetupDevEnvironment](02-SetupDevEnvironment/README.md) |
| 345 | +2. اتبع الفصول بالترتيب (01 → 05) |
| 346 | +3. أكمل الأمثلة العملية في كل فصل |
| 347 | +4. استكشف المشاريع النموذجية في الفصل 4 |
| 348 | +5. تعلم ممارسات الذكاء الاصطناعي المسؤول في الفصل 5 |
| 349 | + |
| 350 | +### حاوية التطوير |
| 351 | +تقوم `.devcontainer/devcontainer.json` بتكوين: |
| 352 | +- بيئة تطوير Java 21 |
| 353 | +- Maven مثبت مسبقًا |
| 354 | +- ملحقات Java لـ VS Code |
| 355 | +- أدوات Spring Boot |
| 356 | +- تكامل GitHub Copilot |
| 357 | +- دعم Docker-in-Docker |
| 358 | +- Azure CLI |
| 359 | + |
| 360 | +### اعتبارات الأداء |
| 361 | +- طبقة نماذج GitHub المجانية لديها حدود معدل |
| 362 | +- استخدم أحجام دفعات مناسبة للتضمينات |
| 363 | +- ضع في اعتبارك التخزين المؤقت لطلبات API المتكررة |
| 364 | +- راقب استخدام الرموز لتحسين التكلفة |
| 365 | + |
| 366 | +### ملاحظات الأمان |
| 367 | +- لا تقم أبدًا بارتكاب ملفات `.env` (موجودة بالفعل في `.gitignore`) |
| 368 | +- استخدم متغيرات البيئة لمفاتيح API |
| 369 | +- يجب أن تحتوي رموز GitHub على أقل النطاقات المطلوبة |
| 370 | +- اتبع إرشادات الذكاء الاصطناعي المسؤول في الفصل 5 |
| 371 | + |
| 372 | +--- |
| 373 | + |
| 374 | +**إخلاء المسؤولية**: |
| 375 | +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. |
0 commit comments