tahamajs's picture
download
raw
10.9 kB
#!/bin/bash
# CA24: Multi-Agent Systems with Gemini API, LangChain, and RAG
# اسکریپت اجرای سیستم‌های چند عاملی با Gemini API، LangChain و RAG
set -e # Exit on any error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
print_gemini() {
echo -e "${PURPLE}[GEMINI]${NC} $1"
}
print_rag() {
echo -e "${CYAN}[RAG]${NC} $1"
}
# Banner
print_banner() {
echo -e "${PURPLE}"
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ CA24: Multi-Agent Systems ║"
echo "║ با Gemini API، LangChain و RAG ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
}
# Check if Python is installed
check_python() {
print_status "بررسی نصب Python..."
if ! command -v python3 &> /dev/null; then
print_error "Python 3 نصب نشده است. لطفاً Python 3.8 یا بالاتر نصب کنید."
exit 1
fi
python_version=$(python3 --version 2>&1 | cut -d' ' -f2)
print_success "نسخه Python: $python_version"
}
# Check if virtual environment exists
check_venv() {
print_status "بررسی محیط مجازی..."
if [ ! -d "venv" ]; then
print_warning "محیط مجازی یافت نشد. در حال ایجاد..."
python3 -m venv venv
print_success "محیط مجازی ایجاد شد"
else
print_success "محیط مجازی یافت شد"
fi
}
# Activate virtual environment
activate_venv() {
print_status "فعال‌سازی محیط مجازی..."
source venv/bin/activate
print_success "محیط مجازی فعال شد"
}
# Install dependencies
install_dependencies() {
print_status "نصب وابستگی‌ها..."
pip install --upgrade pip
# Install core dependencies
print_status "نصب کتابخانه‌های اصلی..."
pip install numpy pandas matplotlib seaborn plotly
# Install LangChain ecosystem
print_status "نصب LangChain و RAG..."
pip install langchain langchain-community langchain-core langchain-experimental
pip install langchain-google-genai langchain-openai langchain-chroma
pip install chromadb faiss-cpu sentence-transformers
# Install Gemini API
print_gemini "نصب Gemini API..."
pip install google-generativeai google-cloud-aiplatform
# Install additional dependencies
print_status "نصب وابستگی‌های اضافی..."
pip install unstructured pypdf python-docx openpyxl
pip install redis pika celery
pip install pytest pytest-asyncio pytest-cov
pip install jupyter ipywidgets nbconvert
pip install streamlit gradio dash
print_success "تمام وابستگی‌ها نصب شدند"
}
# Check API keys
check_api_keys() {
print_status "بررسی کلیدهای API..."
if [ -z "$GEMINI_API_KEY" ]; then
print_warning "متغیر محیطی GEMINI_API_KEY تنظیم نشده است"
print_warning "لطفاً کلید API خود را تنظیم کنید:"
print_warning "export GEMINI_API_KEY='your_api_key_here'"
print_warning "ادامه بدون کلید API (برخی ویژگی‌ها ممکن است کار نکنند)"
# Ask user if they want to set API key
read -p "آیا می‌خواهید کلید API را الان تنظیم کنید؟ (y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
read -p "کلید API خود را وارد کنید: " api_key
export GEMINI_API_KEY="$api_key"
print_success "کلید API تنظیم شد"
fi
else
print_success "کلید Gemini API یافت شد"
fi
}
# Create necessary directories
create_directories() {
print_status "ایجاد پوشه‌های مورد نیاز..."
mkdir -p results/logs
mkdir -p results/plots
mkdir -p results/data
mkdir -p sample_documents
mkdir -p vector_store
mkdir -p config
mkdir -p src/core
mkdir -p src/agents
mkdir -p src/communication
mkdir -p src/coordination
print_success "پوشه‌ها ایجاد شدند"
}
# Test Gemini API connection
test_gemini_api() {
if [ ! -z "$GEMINI_API_KEY" ]; then
print_gemini "تست اتصال به Gemini API..."
python3 -c "
import os
import google.generativeai as genai
try:
genai.configure(api_key=os.getenv('GEMINI_API_KEY'))
model = genai.GenerativeModel('gemini-1.5-pro')
response = model.generate_content('سلام! لطفاً خودت را معرفی کن.')
print('✅ اتصال به Gemini API موفق بود')
print(f'📝 پاسخ: {response.text[:100]}...')
except Exception as e:
print(f'❌ خطا در اتصال به Gemini API: {e}')
"
else
print_warning "تست Gemini API رد شد - کلید API موجود نیست"
fi
}
# Test RAG system
test_rag_system() {
print_rag "تست سیستم RAG..."
python3 -c "
import sys
sys.path.append('./src')
sys.path.append('./config')
try:
from config.gemini_config import GeminiConfig, GeminiManager
from src.core.rag_system import RAGConfig, RAGSystem
import os
if os.getenv('GEMINI_API_KEY'):
print('🔧 راه‌اندازی سیستم RAG...')
# Create sample document
with open('sample_documents/test.txt', 'w', encoding='utf-8') as f:
f.write('این یک سند تست برای سیستم RAG است. هوش مصنوعی و یادگیری ماشین موضوعات مهمی هستند.')
# Initialize RAG system
rag_config = RAGConfig(chunk_size=100, top_k=2)
rag_system = RAGSystem(rag_config, os.getenv('GEMINI_API_KEY'))
# Load knowledge base
rag_system.load_knowledge_base(['sample_documents/test.txt'])
# Test query
result = rag_system.query('هوش مصنوعی چیست؟')
print('✅ سیستم RAG کار می‌کند')
print(f'📝 پاسخ: {result[\"answer\"][:100]}...')
else:
print('⏭️ تست RAG رد شد - کلید API موجود نیست')
except Exception as e:
print(f'❌ خطا در تست RAG: {e}')
"
}
# Run tests
run_tests() {
print_status "اجرای تست‌ها..."
if [ -d "tests" ]; then
python -m pytest tests/ -v
print_success "تست‌ها تکمیل شدند"
else
print_warning "پوشه tests یافت نشد"
fi
}
# Run main experiment
run_experiment() {
print_status "اجرای آزمایش اصلی..."
# Check if Jupyter is available
if command -v jupyter &> /dev/null; then
print_status "شروع Jupyter notebook..."
print_success "نوت‌بوک CA24.ipynb در حال اجرا است..."
jupyter notebook CA24.ipynb
else
print_warning "Jupyter یافت نشد. اجرای اسکریپت Python..."
python3 -c "
import asyncio
import sys
import os
sys.path.append('./src')
sys.path.append('./config')
async def main():
try:
print('🚀 شروع سیستم چند عاملی...')
if not os.getenv('GEMINI_API_KEY'):
print('⚠️ کلید API تنظیم نشده است. برخی ویژگی‌ها ممکن است کار نکنند.')
return
from config.gemini_config import GeminiConfig, GeminiManager
from src.core.multi_agent_system import MultiAgentSystem
# Initialize system
config = GeminiConfig(api_key=os.getenv('GEMINI_API_KEY'))
mas = MultiAgentSystem(config)
await mas.initialize()
print('✅ سیستم راه‌اندازی شد')
# Run tests
task_id = await mas.submit_task('research_topic', {'topic': 'هوش مصنوعی'})
print(f'📤 وظیفه ارسال شد: {task_id}')
await asyncio.sleep(2)
status = await mas.get_system_status()
print(f'📊 وضعیت سیستم: {len(status[\"agent_statuses\"])} Agent فعال')
await mas.shutdown()
print('🔌 سیستم خاموش شد')
except Exception as e:
print(f'❌ خطا: {e}')
print('لطفاً کلید API و وابستگی‌ها را بررسی کنید')
asyncio.run(main())
"
fi
}
# Show system information
show_system_info() {
print_status "اطلاعات سیستم:"
echo "=================="
echo "🐍 Python: $(python3 --version)"
echo "📦 Pip: $(pip --version | cut -d' ' -f2)"
echo "🔑 Gemini API: $([ -z "$GEMINI_API_KEY" ] && echo "❌ تنظیم نشده" || echo "✅ تنظیم شده")"
echo "📁 مسیر کاری: $(pwd)"
echo "⏰ زمان: $(date)"
echo "=================="
}
# Main execution
main() {
print_banner
print_status "شروع CA24 سیستم‌های چند عاملی..."
echo "=================================="
check_python
check_venv
activate_venv
install_dependencies
check_api_keys
create_directories
show_system_info
test_gemini_api
test_rag_system
run_tests
run_experiment
print_success "اجرای CA24 سیستم‌های چند عاملی تکمیل شد!"
echo ""
print_status "برای اجرای مجدد، دستور زیر را اجرا کنید:"
echo "source venv/bin/activate && ./run.sh"
}
# Handle command line arguments
case "${1:-}" in
"test")
print_status "اجرای تست‌ها..."
check_python
check_venv
activate_venv
run_tests
;;
"install")
print_status "نصب وابستگی‌ها..."
check_python
check_venv
activate_venv
install_dependencies
;;
"clean")
print_status "پاک کردن فایل‌های موقت..."
rm -rf venv
rm -rf __pycache__
rm -rf .pytest_cache
rm -rf vector_store
print_success "فایل‌های موقت پاک شدند"
;;
*)
main "$@"
;;
esac

Xet Storage Details

Size:
10.9 kB
·
Xet hash:
e4bfce476c0cf57cfb7d1b225f7752b1cb8b6d085ddbd9584381f2b0b7b48667

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.