این پروژه یک دستیار ساده برای پیشنهاد غذاهای ایرانی است. کاربر مواد اولیه موجود را وارد میکند و برنامه با استفاده از Gemini API چند غذای مناسب پیشنهاد میدهد.
ظاهر سایت با HTML، CSS و JavaScript ساخته شده است و بکاند با Python و Flask اجرا میشود.
برای ارتباط با Gemini از SDK رسمی زیر استفاده شده است:
google-genai
مدل پروژه:
gemini-2.5-flash
- پیشنهاد غذای ایرانی بر اساس مواد اولیه
- در نظر گرفتن تعداد نفرات
- در نظر گرفتن زمان پخت
- در نظر گرفتن سبک غذا
- دریافت خروجی ساختاریافته
- نمایش پاسخ سریع به صورت Streaming
- شمارش توکن ورودی
- چت با دستیار آشپزی
- تحلیل تصویر مواد اولیه
- بررسی وضعیت اتصال به Gemini API
ابتدا وارد پوشه پروژه شوید.
ساخت محیط مجازی:
python -m venv venvفعالسازی محیط مجازی در ویندوز:
venv\Scripts\activateفعالسازی محیط مجازی در Linux و macOS:
source venv/bin/activateنصب کتابخانهها:
pip install -r requirements.txtفایل .env.example را کپی کنید و نام فایل جدید را .env بگذارید.
محتوای فایل .env:
GOOGLE_API_KEY=your_api_key_here
PORT=3001به جای your_api_key_here کلید واقعی Gemini API را قرار دهید.
python app.pyسپس آدرس زیر را در مرورگر باز کنید:
http://localhost:3001
| روش | مسیر | کاربرد |
|---|---|---|
GET |
/api/health |
بررسی اتصال به Gemini API |
POST |
/api/count-tokens |
شمارش توکن ورودی |
POST |
/api/recipes |
دریافت پیشنهاد کامل غذا |
POST |
/api/recipes/stream |
دریافت پاسخ سریع |
POST |
/api/chat |
چت با دستیار آشپزی |
POST |
/api/image-recipes |
تحلیل تصویر مواد اولیه |
gemini-recipe-assistant/
├── app.py
├── requirements.txt
├── README.md
├── .env
├── .env.example
├── .gitignore
├── 01_original_notebook.ipynb
└── public/
├── index.html
├── style.css
├── app.js
└── iranian-table.png
ساخت Client مانند Notebook اصلی انجام میشود:
from google import genai
client = genai.Client()نمونه تولید پاسخ:
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="متن درخواست",
)در پروژه از قابلیتهای زیر استفاده شده است:
generate_contentgenerate_content_streamcount_tokenschats.createPart.from_bytesGenerateContentConfigThinkingConfig- Structured Output با Pydantic
usage_metadata
- کلید واقعی API را داخل کد قرار ندهید.
- کلید واقعی را داخل
.env.exampleقرار ندهید. - فایل
.envرا در Git ثبت نکنید. - در صورت افشای کلید، آن را غیرفعال کنید و کلید جدید بسازید.