بنية المشروع
تنظيم مشاريع الذكاء الاصطناعي
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
بعد ذلك، سنتعلم عمليات الملفات في بايثون. :::