Buckets:
📊 Example Outputs from CA8_Advanced_Experimental Notebook
این فایل شامل خروجیهای نمونه از اجرای نوتبوک است که به شما کمک میکند بدانید چه چیزی انتظار دارید.
🔧 Setup و Import (سلولهای 1-2)
خروجی سلول 1: بررسی کتابخانهها
🔍 بررسی کتابخانههای نصب شده...
✅ langchain
✅ google-generativeai
✅ faiss-cpu
✅ sentence-transformers
✅ transformers
✅ torch
✅ numpy
✅ pandas
✅ matplotlib
✅ plotly
✅ python-dotenv
✨ بررسی کامل شد!
خروجی سلول 2: Import کتابخانهها
✅ کتابخانهها با موفقیت import شدند
📊 Matplotlib backend: module://matplotlib_inline.backend_inline
🐼 Pandas version: 2.0.3
🔢 NumPy version: 1.24.3
🔑 Gemini API Setup (سلولهای 3-5)
خروجی سلول 3: بارگذاری API Key
✅ API Key پیدا شد
🔑 طول API Key: 39 کاراکتر
🔒 Preview: AIzaSyBCD1...abc12
خروجی سلول 4: Import ماژولهای سفارشی
📁 مسیر پروژه: /Users/.../CA8_neural_program_synthesis
📁 مسیر config: /Users/.../CA8_neural_program_synthesis/config
📁 مسیر integrations: /Users/.../CA8_neural_program_synthesis/integrations
✅ Import با مسیر کامل موفق بود
✅ ماژولهای سفارشی با موفقیت import شدند
📦 GeminiConfig: <class 'gemini_config.GeminiConfig'>
📦 RAGConfig: <class 'langchain_rag_system.RAGConfig'>
📦 TaskType: <enum 'TaskType'>
خروجی سلول 5: تست اتصال Gemini
🔧 در حال ایجاد تنظیمات Gemini...
📋 تنظیمات:
🤖 مدل: gemini-1.5-pro
🌡️ Temperature: 0.7
📏 Max tokens: 2048
🎯 Top-p: 0.9
🔢 Top-k: 40
🧪 تست اتصال به Gemini API...
📝 پرامپت تست: لطفاً یک تابع Python ساده برای محاسبه مجموع دو عدد بنویسید.
✅ اتصال به Gemini موفقیتآمیز بود!
⏱️ زمان پاسخ: 2.34 ثانیه
📊 طول پاسخ: 312 کاراکتر
==================================================================
📝 پاسخ کامل Gemini:
==================================================================
البته! اینجا یک تابع ساده Python برای محاسبه مجموع دو عدد است:
```python
def add_numbers(a, b):
"""
محاسبه مجموع دو عدد
Args:
a: عدد اول
b: عدد دوم
Returns:
مجموع a و b
"""
return a + b
# مثال استفاده
result = add_numbers(5, 3)
print(f"5 + 3 = {result}") # خروجی: 5 + 3 = 8
این تابع دو پارامتر a و b را دریافت میکند و مجموع آنها را برمیگرداند.
## 🧠 RAG System Setup (سلولهای 6-7)
### خروجی سلول 6: ایجاد تنظیمات RAG
⚙️ ایجاد تنظیمات RAG...
📋 تنظیمات RAG: 📏 Chunk size: 1000 🔄 Chunk overlap: 200 🧠 Embedding model: sentence-transformers/all-MiniLM-L6-v2 💾 Vector store: faiss 🎯 Similarity threshold: 0.7 📊 Max results: 5
🔧 در حال ایجاد سیستم RAG... ✅ سیستم RAG ایجاد شد (⏱️ 1.23s)
### خروجی سلول 7: راهاندازی پایگاه دانش
🔄 در حال راهاندازی پایگاه دانش...
⚠️ پوشه src یافت نشد: /Users/.../src
📚 بارگذاری پایگاه دانش... راهاندازی: 100%|██████████████████████████| 3/3 [00:02<00:00, 1.12it/s]
✅ پایگاه دانش راهاندازی شد (⏱️ 2.67s) پایگاه دانش با 8 سند ایجاد شد
🔍 تست جستجو در پایگاه دانش: 📝 پرسش: چگونه یک تابع بازگشتی بنویسم؟
================================================================== 📊 نتیجه جستجو:
برای نوشتن یک تابع بازگشتی (Recursive Function) در Python، باید از مفهوم بازگشت استفاده کنید که در آن تابع خودش را فراخوانی میکند.
نکات کلیدی:
- باید یک شرط پایانی (Base Case) داشته باشید
- هر فراخوانی باید به سمت base case حرکت کند
- مدیریت stack depth مهم است
مثال: محاسبه فاکتوریل
def factorial(n):
# Base case
if n == 0 or n == 1:
return 1
# Recursive case
return n * factorial(n - 1)
الگوریتمهای رایج بازگشتی:
## 🤖 Agent پیشرفته (سلول 8)
### خروجی سلول 8: ایجاد Agent
🤖 در حال ایجاد Advanced Program Agent...
✅ Agent پیشرفته ایجاد شد (⏱️ 0.45s)
📦 قابلیتهای Agent: 🔍 جستجوی دانش 📊 تحلیل نیازمندی 🔄 تولید گام به گام ✅ اعتبارسنجی کد ⚡ بهینهسازی 🧪 تولید تست
🛠️ تعداد ابزارها: 6
- search_knowledge: جستجو در پایگاه دانش برای یافتن الگوهای کد مرتبط
- analyze_requirement: تحلیل و تجزیه نیازمندیهای برنامه
- generate_step_by_step: تولید برنامه به صورت گام به گام
- validate_code: اعتبارسنجی و تست کد تولید شده
- optimize_code: بهینهسازی کد از نظر عملکرد و خوانایی
- generate_tests: تولید تستهای جامع برای کد
## 🧪 آزمایش 1: Factorial (سلول 9)
### خروجی کامل:
====================================================================== 🧪 آزمایش 1: تولید تابع محاسبه فاکتوریل
📋 مشخصات: 📝 توضیح: تابعی برای محاسبه فاکتوریل عدد n به دو روش بازگشتی و تکراری 📥 ورودی: عدد صحیح مثبت n 📤 خروجی: فاکتوریل n (n!) 🎯 نوع: mathematical ⭐ پیچیدگی: simple
🔄 در حال تولید برنامه با Chain of Thought...
✅ برنامه با موفقیت تولید شد! (⏱️ 8.45s)
📊 متریکها: 🔢 تعداد مراحل: 4 📏 طول کد: 32 خط 🧠 پیچیدگی: simple
====================================================================== 📝 کد تولید شده:
def factorial_recursive(n: int) -> int: """ محاسبه فاکتوریل به روش بازگشتی
Args:
n: عدد صحیح مثبت
Returns:
فاکتوریل n
Raises:
ValueError: اگر n منفی باشد
Examples:
>>> factorial_recursive(5)
120
>>> factorial_recursive(0)
1
"""
if n < 0:
raise ValueError("فاکتوریل برای اعداد منفی تعریف نشده است")
if n == 0 or n == 1:
return 1
return n * factorial_recursive(n - 1)
def factorial_iterative(n: int) -> int: """ محاسبه فاکتوریل به روش تکراری
Args:
n: عدد صحیح مثبت
Returns:
فاکتوریل n
Raises:
ValueError: اگر n منفی باشد
Time Complexity: O(n)
Space Complexity: O(1)
"""
if n < 0:
raise ValueError("فاکتوریل برای اعداد منفی تعریف نشده است")
result = 1
for i in range(2, n + 1):
result *= i
return result
تستهای خودکار
if name == "main": import doctest doctest.testmod()
# تستهای اضافی
test_cases = [0, 1, 5, 10, 20]
print("Testing factorial functions:")
for n in test_cases:
rec = factorial_recursive(n)
itr = factorial_iterative(n)
print(f" factorial({n}) = {rec} (recursive), {itr} (iterative)")
assert rec == itr, f"Mismatch for n={n}"
print("✅ All tests passed!")
======================================================================
## 🧪 آزمایش 2: QuickSort (سلول 10)
### خروجی کامل:
====================================================================== 🧪 آزمایش 2: تولید الگوریتم QuickSort
📋 مشخصات: 📝 توضیح: پیادهسازی کامل الگوریتم QuickSort برای مرتبسازی آرایه با روش تقسیم و حل 📥 ورودی: لیست اعداد صحیح 📤 خروجی: لیست مرتب شده صعودی 🎯 نوع: algorithm ⭐ پیچیدگی: medium
🔄 در حال تولید برنامه با Chain of Thought...
✅ برنامه با موفقیت تولید شد! (⏱️ 18.92s)
📊 متریکها: 🔢 تعداد مراحل: 6 📏 طول کد: 58 خط 🧠 پیچیدگی: medium
====================================================================== 📝 کد تولید شده:
from typing import List import random
def quicksort(arr: List[int]) -> List[int]: """ مرتبسازی سریع با روش تقسیم و حل
Args:
arr: لیست اعداد برای مرتبسازی
Returns:
لیست مرتب شده به صورت صعودی
Time Complexity: O(n log n) average, O(n²) worst case
Space Complexity: O(log n) for recursion stack
Examples:
>>> quicksort([64, 34, 25, 12, 22, 11, 90])
[11, 12, 22, 25, 34, 64, 90]
"""
if len(arr) <= 1:
return arr
# انتخاب pivot به صورت تصادفی برای بهبود عملکرد
pivot = arr[len(arr) // 2]
# تقسیم به سه قسمت
less = [x for x in arr if x < pivot]
equal = [x for x in arr if x == pivot]
greater = [x for x in arr if x > pivot]
# فراخوانی بازگشتی و ترکیب
return quicksort(less) + equal + quicksort(greater)
def quicksort_inplace(arr: List[int], low: int = 0, high: int = None) -> List[int]: """ مرتبسازی سریع in-place (بدون استفاده از حافظه اضافی)
Args:
arr: لیست برای مرتبسازی
low: ایندکس شروع
high: ایندکس پایان
Returns:
همان لیست ورودی که به صورت in-place مرتب شده
"""
if high is None:
high = len(arr) - 1
if low < high:
# پارتیشن و پیدا کردن موقعیت pivot
pi = partition(arr, low, high)
# مرتبسازی بازگشتی قسمتهای چپ و راست
quicksort_inplace(arr, low, pi - 1)
quicksort_inplace(arr, pi + 1, high)
return arr
def partition(arr: List[int], low: int, high: int) -> int: """ تقسیم آرایه به دو قسمت نسبت به pivot
Args:
arr: لیست
low: ایندکس شروع
high: ایندکس پایان
Returns:
موقعیت نهایی pivot
"""
# انتخاب pivot آخرین عنصر
pivot = arr[high]
i = low - 1 # ایندکس عنصر کوچکتر
for j in range(low, high):
if arr[j] <= pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
# جابجایی pivot با عنصر i+1
arr[i + 1], arr[high] = arr[high], arr[i + 1]
return i + 1
تستها
if name == "main": import doctest doctest.testmod()
# تستکیسهای مختلف
test_arrays = [
[64, 34, 25, 12, 22, 11, 90],
[5, 2, 8, 1, 9],
[],
[1],
[3, 3, 3, 3],
[5, 4, 3, 2, 1]
]
print("Testing QuickSort:")
for arr in test_arrays:
original = arr.copy()
sorted_arr = quicksort(arr)
expected = sorted(original)
status = "✓" if sorted_arr == expected else "✗"
print(f" {status} Original: {original[:5]}... → Sorted: {sorted_arr[:5]}...")
======================================================================
## 🧪 آزمایش 3: Binary Search Tree (سلول 11)
### خروجی کامل:
====================================================================== 🧪 آزمایش 3: تولید کلاس Binary Search Tree
📋 مشخصات: 📝 توضیح: پیادهسازی کامل کلاس Binary Search Tree شامل:... 📥 ورودی: اعداد برای درج در درخت 📤 خروجی: ساختار BST با عملیات کامل 🎯 نوع: data_structure ⭐ پیچیدگی: complex
🔄 در حال تولید برنامه با Chain of Thought... ⚠️ این ممکن است کمی طولانی شود...
✅ برنامه با موفقیت تولید شد! (⏱️ 32.18s)
📊 متریکها: 🔢 تعداد مراحل: 8 📏 طول کد: 96 خط 🧠 پیچیدگی: complex
====================================================================== 📝 کد تولید شده (پیشنمایش 1000 کاراکتر اول):
from typing import Optional, List from dataclasses import dataclass
@dataclass class TreeNode: """گره درخت جستجوی دودویی""" value: int left: Optional['TreeNode'] = None right: Optional['TreeNode'] = None
class BinarySearchTree: """ پیادهسازی کامل Binary Search Tree
عملیاتهای پشتیبانی شده:
- insert: درج عنصر جدید
- search: جستجوی عنصر
- delete: حذف عنصر
- inorder: پیمایش inorder
- preorder: پیمایش preorder
- postorder: پیمایش postorder
- find_min: یافتن حداقل
- find_max: یافتن حداکثر
- height: محاسبه ارتفاع
"""
def __init__(self):
"""مقداردهی اولیه BST خالی"""
self.root: Optional[TreeNode] = None
self._size = 0
def insert(self, value: int) -> None:
"""
درج عنصر جدید در BST
Args:
value: مقدار برای درج
Time Complexity: O(log n) average, O(n) worst case
"""
if self.root is None:
self.root = TreeNode(value)
else:
self._insert_recursive(self.root, value)
self._size += 1
def _insert_recursive(self, node: TreeNode, value: int) -> TreeNode:
"""درج بازگشتی"""
if value < node.value:
if node.left is None:
node.left = TreeNode(value)
else:
self._insert_recursive(node.left, value)
elif value > node.value:
if node.right is None:
node.right = TreeNode(value)
else:
self._insert_recursive(node.right, value)
return node
... (ادامه دارد) ...
======================================================================
## 📊 تحلیل نتایج (سلولهای 12-14)
### خروجی سلول 12: جمعآوری نتایج
📊 جمعآوری و تحلیل نتایج...
====================================================================== 📊 خلاصه نتایج آزمایشها
task type complexity steps code_length success فاکتوریل MATHEMATICAL simple 4 32 True QuickSort ALGORITHM medium 6 58 True Binary Search Tree DATA_STRUCTURE complex 8 96 True
📈 آمار توصیفی: steps code_length count 3.0 3.0 mean 6.0 62.0 std 2.0 32.2 min 4.0 32.0 25% 5.0 45.0 50% 6.0 58.0 75% 7.0 77.0 max 8.0 96.0
### خروجی سلول 13: نمودارهای تحلیلی
📊 ایجاد نمودارهای تحلیلی...
✅ نمودارها با موفقیت ایجاد شدند!
*نمودار Plotly تعاملی نمایش داده میشود با 4 subplot:*
1. نمودار میلهای: تعداد مراحل بر اساس پیچیدگی
2. نمودار میلهای: طول کد بر اساس نوع وظیفه
3. نمودار دایرهای: توزیع نوع وظایف
4. نمودار پراکندگی: رابطه مراحل و طول کد
### خروجی سلول 14: تحلیل مقایسهای
🔍 تحلیل همبستگی بین متغیرها:
همبستگی بین تعداد مراحل و طول کد: steps code_length steps 1.00 0.98 code_length 0.98 1.00
*نقشه حرارتی همبستگی نمایش داده میشود*
📊 تحلیل بر اساس سطح پیچیدگی:
steps code_length
mean std mean std
complexity
simple 4.0 0.0 32.0 0.0
medium 6.0 0.0 58.0 0.0
complex 8.0 0.0 96.0 0.0
📊 تحلیل بر اساس نوع وظیفه:
steps code_length
mean std mean std
type
ALGORITHM 6.0 0.0 58.0 0.0
DATA_STRUCTURE 8.0 0.0 96.0 0.0
MATHEMATICAL 4.0 0.0 32.0 0.0
## 💾 ذخیره نتایج (سلول 15)
### خروجی:
💾 ذخیره نتایج...
✅ CSV ذخیره شد: /Users/.../output/experimental_results/results_20251010_143052.csv ✅ JSON ذخیره شد: /Users/.../output/experimental_results/results_20251010_143052.json ✅ کد فاکتوریل ذخیره شد ✅ کد QuickSort ذخیره شد ✅ کد BST ذخیره شد
📁 تمام فایلها در /Users/.../output/experimental_results ذخیره شدند
---
## 📊 خلاصه متریکهای کلی
### عملکرد زمانی:
کل زمان اجرا: ~65 ثانیه ├── Setup: 5s ├── Gemini API Test: 2.5s ├── RAG Setup: 4s ├── Agent Creation: 0.5s ├── Factorial: 8.5s ├── QuickSort: 19s ├── BST: 32s └── Analysis: 3s
### استفاده از منابع:
حافظه: ~850 MB CPU: متوسط 45% Gemini API Calls: 7 requests Tokens Used: ~12,500
### کیفیت کد:
Syntax Correctness: 100% Documentation: 9/10 Readability: 8.5/10 Best Practices: 8/10 Test Coverage: 7.5/10
---
**نکته**: خروجیهای واقعی ممکن است کمی متفاوت باشند بسته به:
- نسخه Gemini API
- تنظیمات temperature
- محتوای پایگاه دانش
- شرایط شبکه
این خروجیها نمونهای از آنچه انتظار میرود هستند. 🚀
Xet Storage Details
- Size:
- 19.1 kB
- Xet hash:
- 0bdc9a8cafbb5961624e3393813ff441cdbbf5f4b18f52f2ede5a723759dfc57
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.