# 映前 (YingQian) — 多智能体电影推荐助手
基于 HelloAgents + TMDB:关灯之前,先把今晚的片定下来。
「映前」解决「今晚看什么」的选择困难。用户填写心情、观影对象、类型、时长等偏好后,系统通过 Pipeline + Tool-use 多智能体流水线,从 TMDB 真实片库中检索候选并给出带理由的精选推荐。
discover / search 拉取真实候选SimpleAgent + Tool(多 Agent 串行 Pipeline)LLM_API_KEY / LLM_BASE_URL / LLM_MODEL_ID)cd backend
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activate
pip install -r ../requirements.txt
pip install jupyterlab # 若要跑 main.ipynb
必须把 .env 放在 backend/ 目录(代码读取 backend/.env):
# 在项目根目录 aatanxiao12-beep-YingQian/ 下
cp .env.example backend/.env
# Windows PowerShell
# Copy-Item .env.example backend\.env
编辑 backend/.env,至少填写:
TMDB_ACCESS_TOKEN=你的TMDB_Token
# 或 TMDB_API_KEY=你的Key
LLM_API_KEY=你的LLM密钥
LLM_BASE_URL=https://api.deepseek.com
LLM_MODEL_ID=deepseek-v4-flash
# 仍在 backend/ 且已激活 venv
cd ..
jupyter lab
# 打开 main.ipynb,按顺序运行单元格
Notebook 会调用完整推荐流水线,打印画像摘要与推荐片单。
cd backend
python run.py
前端(可选):
cd frontend
npm install
npm run dev
浏览器打开 http://127.0.0.1:5173
见 main.ipynb。核心调用等价于:
import sys
from pathlib import Path
sys.path.insert(0, str(Path("backend").resolve()))
from app.models.schemas import RecommendRequest
from app.agents.movie_recommender_agent import MultiAgentMovieRecommender
req = RecommendRequest(
mood="放松",
party_type="独自",
genres=["剧情", "喜剧"],
max_runtime_minutes=120,
region_preference="不限",
year_preference="近10年",
free_text="不要太沉重",
)
result, trace_id = MultiAgentMovieRecommender().recommend(req)
for m in result.movies:
print(m.title, m.reason)
curl -X POST http://127.0.0.1:8000/api/recommend \
-H "Content-Type: application/json" \
-d "{\"mood\":\"虐心\",\"party_type\":\"朋友\",\"genres\":[\"爱情\"],\"region_preference\":\"不限\",\"year_preference\":\"近10年\"}"
成功时返回约 5 部电影卡片(含 title、poster_url、reason 等)以及可选的 taste_profile。
打开首页 → 填写偏好 → 「开始荐片」→ 结果页查看理由;可「换一批」或去「片库」浏览。
在 DeepSeek + 本机可访问 TMDB 的环境下,一次完整推荐大约:
| 阶段 | 参考耗时 |
|---|---|
| 画像 Agent | ~5–8s |
| 检索 Agent(含 1 次 discover) | ~15–25s |
| 推荐 Agent | ~10–15s |
| 合计 | 约 40–50s |
TMDB 本身通常 <2s;主要时间在 LLM。国内网络若连不上 api.themoviedb.org,需代理/VPN。
aatanxiao12-beep-YingQian/
├── README.md
├── requirements.txt
├── .env.example
├── .gitignore
├── main.ipynb # 快速演示入口
├── backend/
│ ├── .env.example # 同根目录示例(便于放 backend/.env)
│ ├── app/ # Agents / Tools / API / TMDB
│ ├── tests/
│ ├── run.py
│ └── pyproject.toml
└── frontend/
├── src/
├── package.json
└── ...
欢迎提出 Issue 和 Pull Request!
MIT License
感谢 Datawhale 社区和 Hello-Agents 项目!