الدرس 18 من 20

بنية المشروع

تنظيم مشاريع الذكاء الاصطناعي

3 دقيقة للقراءة

المشروع المنظم جيداً أسهل في الصيانة والاختبار والتوسع. إليك كيفية هيكلة مشاريع الذكاء الاصطناعي بشكل احترافي.

بنية المشروع الأساسية

my_ai_agent/
├── .env                  # مفاتيح API (لا ترسلها أبداً!)
├── .env.example          # قالب لـ .env
├── .gitignore            # الملفات المستثناة من git
├── requirements.txt      # التبعيات
├── README.md             # توثيق المشروع
├── main.py               # نقطة الدخول
└── src/
    ├── __init__.py
    ├── agent.py          # منطق الوكيل الرئيسي
    ├── config.py         # التكوين
    └── tools/
        ├── __init__.py
        ├── search.py
        └── calculator.py

وحدة التكوين

# src/config.py
import os
from dotenv import load_dotenv

load_dotenv()

class Config:
    OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
    MODEL = os.getenv("MODEL", "gpt-4")
    TEMPERATURE = float(os.getenv("TEMPERATURE", "0.7"))
    MAX_TOKENS = int(os.getenv("MAX_TOKENS", "1000"))

    @classmethod
    def validate(cls):
        if not cls.OPENAI_API_KEY:
            raise ValueError("OPENAI_API_KEY غير معيّن")

# التحقق عند الاستيراد
Config.validate()

حزمة الأدوات

# src/tools/__init__.py
from .search import SearchTool
from .calculator import CalculatorTool

__all__ = ["SearchTool", "CalculatorTool"]
# src/tools/search.py
class SearchTool:
    name = "web_search"
    description = "البحث في الويب عن معلومات"

    def execute(self, query: str) -> str:
        # التنفيذ هنا
        return f"نتائج لـ: {query}"

وحدة الوكيل الرئيسية

# src/agent.py
from typing import List, Dict
from .config import Config
from .tools import SearchTool, CalculatorTool

class AIAgent:
    def __init__(self):
        self.model = Config.MODEL
        self.tools = [SearchTool(), CalculatorTool()]
        self.history: List[Dict] = []

    def chat(self, message: str) -> str:
        self.history.append({"role": "user", "content": message})
        # منطق الوكيل هنا
        response = "مرحباً!"
        self.history.append({"role": "assistant", "content": response})
        return response

نقطة الدخول

# main.py
from src.agent import AIAgent

def main():
    agent = AIAgent()

    print("وكيل الذكاء الاصطناعي جاهز! اكتب 'quit' للخروج.")
    while True:
        user_input = input("أنت: ")
        if user_input.lower() == 'quit':
            break
        response = agent.chat(user_input)
        print(f"الوكيل: {response}")

if __name__ == "__main__":
    main()

الملفات الأساسية

.gitignore

# البيئة
.env
venv/
__pycache__/

# IDE
.vscode/
.idea/

# المخرجات
*.log
output/

requirements.txt

openai>=1.0.0
python-dotenv>=1.0.0
requests>=2.31.0

.env.example

OPENAI_API_KEY=your-key-here
MODEL=gpt-4
TEMPERATURE=0.7

بعد ذلك، سنتعلم عمليات الملفات في بايثون. :::

اختبار

الوحدة 5: بنية المشروع

خذ الاختبار