Skip to content

54853315/fridget-server

Repository files navigation

🍏 AI 驱动的食谱推荐网站 Fridget Server

开发阶段界面预览

👉 FridgetFrontend 前端仓库

如果只用冰箱里的食材就能找到美味的菜肴呢?

Fridget 是一个基于 AI 的网站,利用大语言模型,根据用户拥有的食材推荐最佳食谱。

别再为“今天吃什么?”而烦恼,让 AI 为您找到合适的食谱吧!

本项目的初始版本来源于 Fridget Server 项目,他们在 YouTube 上展示的 Demo 极具启发性。在此向原团队(Sinae Hong, Hanseung Choi, Samuel Han, Hojun Kwak)表示诚挚的敬意和感谢!

在原项目的基础上,我进行了二次开发和一些技术调整,以便更好地适应本地化需求和进行技术探索。

🔧 主要技术改进

  • AI 模型迁移: 将食谱生成的核心 AI 从 OpenAI 替换为 Qwen3,以优化在中国大陆地区的访问速度和响应效果。
  • API 接口优化:
    • 精简了 /ingredients 相关的数据传输对象 (DTO),提升了交互效率。
    • 新增了 /cooking-preference 接口,以支持更丰富的用户偏好设置。
    • 新增了 PEXELS API 集成,为食谱推荐提供精美的配图展示,增强用户体验。
    • /recipe/recommend 接口新增 24 小时 AI 结果缓存机制,提升了系统响应速度和资源利用率。
  • 前端重构: 前端使用 SvelteKit 进行了完全重构,旨在探索新的前端技术栈并提升开发体验。

🛠 技术栈

前端

React Chakra UI Material UI

后端

Java 11 Java Spring Spring Boot Spring Security Gradle MongoDB Redis Flask JSON Web Tokens

AI/ML

Python Qwen3 Scikit-learn


🏛️ 系统架构

Fridget Architecture


🚀 服务启动指南

1. 启动 Redis

brew services start redis

2. 启动 MongoDB

brew tap mongodb/brew
brew services start mongodb-community

3. 启动 Flask 服务

(1) 创建并激活虚拟环境

cd FridgetServer/flask
python3 -m venv venv
source venv/bin/activate

(2) 安装必要的依赖

# 使用 Python 3
pip install flask requests spacy scikit-learn
python -m spacy download zh_core_web_md
# 如果使用 Python 3.11+,需要手动安装 spaCy 模型进行本地安装
# pip3 install zh_core_web_md-3.8.0-py3-none-any.whl

(3) 根据 generate_recipes_flask.py 中的注释设置 ALI_API_KEYPEXELS_API_KEY

export ALI_API_KEY=''
export PEXELS_API_KEY=''

重要: 请将 ALI_API_KEYPEXELS_API_KEY 作为环境变量进行配置,以避免密钥泄露。

(4) 启动 Flask 服务

python -m flask --app generate_recipes_flask run --host=0.0.0.0 --port=5001 #--debug

3. 启动 Spring Boot 服务

cd FridgetServer/
./gradlew compileJava #--stacktrace
./gradlew build
java -jar build/libs/fridgeproject-0.0.1-SNAPSHOT.jar

3.1 本地二次开发

cd FridgetServer/
./gradlew compileJava --stacktrace
./gradlew build --continuous
./gradlew bootRun

About

AI 驱动的食谱推荐网站服务器端

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published