📷 AI摄影教练——多智能体系统
    ](Dockerfile)
一个使用Google Gemini多代理架构的智能、生产就绪的人工智能摄影指导系统。
作为 谷歌人工智能代理密集项目 –展示多智能体系统、LLM集成和生产级工程的实际应用。
______________________________________________________________________
🎯 它做什么
上传任何照片并获取 个性化、人工智能驱动的摄影指导 即:
- ✅ 分析技术设置(EXIF:ISO、光圈、快门速度、焦距)
- ✅ 检测构图问题(三分法、景深、构图)
- ✅ 通过以下方式提供情境感知辅导 谷歌双子座1.5 Flash
- ✅ 记住多回合对话的对话历史
- ✅ 根据您的问题和照片细节调整建议
没有通用教程 –每个回复都是由Gemini根据您的照片和问题动态生成的。
______________________________________________________________________
🚀 快速入门(3分钟)
1.克隆和安装
git clone https://github.com/prasadt1/ai-photography-coach-agents.git
cd ai-photography-coach-agents
pip install -r requirements.txt2.设置API密钥
export GOOGLE_API_KEY="your_gemini_api_key_here"获取您的免费API密钥:https://aistudio.google.com/app/apikey
3.启动应用程序
python3 -m streamlit run agents_capstone/app_streamlit.py打开 http://localhost:8501 → 上传照片→ 开始聊天! 🎉
______________________________________________________________________
🏢 生产部署模式
该系统演示 弹性架构 –相同的核心代理部署在多个平台上,没有代码重复:
1.谷歌云(ADK-生产)
使用正式的ADK工具部署到顶点AI代理引擎:
from agents_capstone.adk_tools import TOOLS
# TOOLS contains formal schemas for Vertex AI
# - analyze_photo_tool: Vision analysis
# - coach_on_photo_tool: Coaching with RAG citations
# Use with ADK Runner
runner = ADKRunner(tools=TOOLS)演示: python3 demo_adk.py
特征:
- ✅ 完整的JSON输入/输出模式
- ✅ 输入验证和错误处理
- ✅ 与Vertex AI代理引擎兼容
- ✅ 生产级工具定义
2.克劳德桌面(MCP协议)
将代理作为JSON-RPC工具公开,用于Claude Desktop集成:
./run_mcp_server.sh在以下位置配置: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"photography-coach": {
"command": "/path/to/run_mcp_server.sh",
"args": []
}
}
}演示: python3 demo_mcp.py
特征:
- ✅ JSON-RPC 2.0协议合规性
- ✅ 3个工具(分析、指导、历史)
- ✅ 与Claude Desktop和VS Code MCP配合使用
- ✅ 异步工具执行
3.Web界面(Streamlit)
用户友好的web UI,用于演示和原型制作:
python3 -m streamlit run agents_capstone/app_streamlit.py特征:
- ✅ 拖放照片上传
- ✅ 聊天风格的对话界面
- ✅ 实时EXIF显示
- ✅ 调试可观察性面板
4.Python API(自定义集成)
用于自定义应用程序的直接代理导入:
from agents_capstone.agents import Orchestrator, VisionAgent, KnowledgeAgent
orchestrator = Orchestrator(VisionAgent(), KnowledgeAgent())
result = orchestrator.run(
user_id="user123",
image_path="photo.jpg",
query="How can I improve this?"
)🎯 关键设计原则
所有部署模式都使用 相同的核心代理 (agents/orchestrator.py, vision_agent.py, knowledge_agent.py).包装纸(adk_tools.py, tools/mcp_server.py, app_streamlit.py)增加协议合规性 不重复业务逻辑.
这表明:
- ✅ 清晰地分离关注点
- ✅ 可重用代理架构
- ✅ 生产就绪模式
- ✅ 多平台部署灵活性
______________________________________________________________________
🎥 演示
🚀 现场试用: ai-photography-coach.streamlit.app *(需要免费的Google Gemini API密钥)*
📺 观看演示: YouTube-2:38分钟
查看运行中的系统:
- 实时照片上传和EXIF提取
- 实时Gemini辅导响应
- 多回合上下文对话
- 评价结果(8.5/10平均分)
______________________________________________________________________
⭐ 主要特点
🤖 多代理架构
- 愿景代理 –Gemini Vision API,用于AI驱动成分分析,存在严重问题
- 知识代理 –动态Gemini 1.5 Flash辅导与代理RAG集成
- 编排器 –会话管理、内存持久性、上下文压缩
- MCP服务器 –克劳德桌面和VS代码集成的模型上下文协议
- ADK工具 –Google Vertex AI代理引擎部署的正式代理
🧠 智能教练
- 上下文感知 –记住会话中的对话历史记录
- 动态LLM响应 –Gemini新生成的每个答案(不是模板!)
- 多回合对话 –询问后续情况,系统会根据记忆进行调整
- 个性化 –参考照片的实际EXIF数据和检测到的问题
- 代理式检索增强生成 –混合CASCADE检索(精选知识→ FAISS回退),引用有根据
- 结构化分析 –严重性(低/中/高)的问题检测和可操作的建议
- 强度检测 –确定你做得对的地方,而不仅仅是问题
📊 生产级特征
- 可观测性 –结构化日志记录、延迟跟踪、调试面板
- 评估 –法学硕士作为评判框架(相关性、完整性、准确性、可操作性)
- 持久性 –SQLite支持的会话存储,具有上下文压缩功能
- 部署就绪 –Docker、ADK兼容、MCP服务器、云运行说明
- 知识库管理 –管理用户界面 独立私人回购 用于PDF摄取和FAISS索引构建
- 多渠道部署 –流线型UI、MCP协议(克劳德桌面)、ADK工具(顶点AI)
- 故障弱化 –当API不可用或FAISS索引丢失时的回退模式
🎨 干净的UI
- 带有拖放照片上传功能的流线型网络界面
- 实时EXIF显示
- 聊天风格对话视图
- 调试观察面板
______________________________________________________________________
🏗️ 建筑
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Streamlit │ │ Claude/MCP │ │ Vertex AI │
│ UI │ │ Clients │ │ (ADK) │
└──────┬──────┘ └──────┬───────┘ └──────┬──────┘
│ │ │
└──────────────────┼────────────────────┘
▼
┌────────────────────────┐
│ Orchestrator Agent │ Coordinates everything
│ • Session Management │
│ • Memory Persistence │
│ • Context Compaction │
└────┬──────────────┬────┘
│ │
▼ ▼
┌────────────┐ ┌─────────────────┐
│VisionAgent │ │ KnowledgeAgent │
│ • Gemini │ │ • Gemini 1.5 │
│ Vision │ │ Flash │
│ • EXIF │ │ • Agentic RAG │
│ • Severity │ │ • Citations │
│ • Strengths│ └────────┬────────┘
└────────────┘ │
▼
┌──────────────────┐
│ Hybrid CASCADE │
│ PRIMARY: Curated │
│ (20 entries, │
│ NumPy search) │
│ SECONDARY: FAISS │
│ (13 PDFs, │
│ 1195 chunks) │
└──────────────────┘为什么选择多代理?
- 专业知识(愿景与指导)
- 模块化设计(易于测试/增强)
- 清晰地分离关注点
- 可扩展到其他代理
______________________________________________________________________
📁 项目结构
ai-photography-coach-agents/
├── agents_capstone/
│ ├── app_streamlit.py # 🌐 Web UI (main entry point)
│ ├── adk_tools.py # 🔧 ADK tool definitions
│ ├── agents/
│ │ ├── orchestrator.py # 🎯 Multi-agent coordination
│ │ ├── vision_agent.py # 👁️ Gemini Vision API + EXIF
│ │ └── knowledge_agent.py # 🧠 Gemini + Agentic RAG
│ ├── tools/
│ │ ├── exif_tool.py # 📸 EXIF extraction
│ │ ├── memory.py # 💾 SQLite persistence
│ │ ├── context.py # 🗜️ Context compaction
│ │ ├── knowledge_base.py # 📚 Photography principles
│ │ ├── agentic_rag.py # 🧠 Hybrid CASCADE RAG
│ │ ├── faiss_store.py # 🔍 FAISS vector store
│ │ └── mcp_server.py # 🔌 MCP protocol server
│ ├── data/
│ │ └── knowledge_sources.py # 📖 20 curated entries
│ ├── evaluate.py # 📊 LLM-as-Judge evaluation
│ └── reports/ # 📈 Generated evaluation reports
├── diagrams/ # 🎨 Architecture diagrams
├── mcp_config.json # ⚙️ MCP server config
├── run_mcp_server.sh # 🚀 MCP launcher script
├── test_hybrid_rag.py # 🧪 RAG system tests
├── requirements.txt # 📦 Python dependencies
├── Dockerfile # 🐳 Container setup
├── DEPLOYMENT.md # 🚀 Deployment guide
├── VIDEO_SCRIPT.md # 🎬 Demo video script
└── README.md # 📖 This file______________________________________________________________________
🎯 高级功能
第1.5阶段:混合CASCADE的代理RAG
- 20篇精选作品 –大师(亚当斯、弗里曼、彼得森、凯尔比、安、霍比)的手工摄影知识
- FAISS矢量商店 –第二层包含13个PDF、1195个区块、666页
- 基于信心的回退 –初级策划(阈值0.6)→ 次要失误
- 主题提取 –将Gemini的回复映射到对齐的引用
- 消息来源 –明确的标签:“策展摄影书籍”与“摄影指南和手册”
第二阶段:增强视觉分析
- Gemini Vision API -真正的AI驱动的成分分析(不是基于规则的!)
- 结构性问题 –检测到具有类型、严重性、描述、建议的问题对象
- 严重性评分 –优先级反馈的低/中/高分类
- 强度检测 –确定哪些功能运行良好(good_lighting、sharp_focus等)
- 自适应提示 –技能水平定制分析(初级/中级/高级)
- 优雅的后退 –API不可用时的基于规则的分析
第三阶段:MCP服务器+ADK工具
- MCP服务器 –模型上下文协议的完整JSON-RPC实现
- 克劳德桌面就绪 –添加到
claude_desktop_config.json用于即时集成 - VS代码兼容 –使用MCP扩展进行编辑内指导
- 三种MCP工具:
1. analyze_photo –具有结构化输出的视觉分析 1. coach_on_photo –带有会话历史的个性化辅导 1. get_session_history –会话检索和统计
- ADK工具 –正式化为
adk_tools.py用于Vertex AI代理引擎部署 - 多通道 –通过Streamlit、MCP或ADK访问相同的代理
______________________________________________________________________
💻 使用示例
1.Web界面(Streamlit)
- 启动应用程序:
python3 -m streamlit run agents_capstone/app_streamlit.py - 上传照片(JPEG/JPG)
- 提问:
- *“我怎样才能提高作文水平?”* - *“那灯光呢?”* - *“我应该调整ISO吗?”*
- 获得即时、个性化的指导!
2.MCP服务器(克劳德桌面/VS代码)
# Start MCP server
./run_mcp_server.sh
# Or manually
python3 -m agents_capstone.tools.mcp_serverClaude桌面集成: 添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"photography-coach": {
"command": "/path/to/run_mcp_server.sh"
}
}
}然后在Claude中使用: *“使用摄影教练分析我在/path/to/photo.jpg上的风景照片”*
3.ADK工具(程序化)
from agents_capstone.adk_tools import analyze_photo_tool, coach_on_photo_tool
# Analyze a photo
result = analyze_photo_tool("photo.jpg", skill_level="intermediate")
print(f"Issues: {len(result['detected_issues'])}")
for issue in result['detected_issues']:
print(f" [{issue['severity']}] {issue['suggestion']}")
# Get coaching
coaching = coach_on_photo_tool(
query="How can I improve this landscape?",
vision_analysis=result,
session={"skill_level": "intermediate"}
)
print(coaching["text"])4.Python API(直接编排器)
from agents_capstone.agents.orchestrator import Orchestrator
from agents_capstone.agents.vision_agent import VisionAgent
from agents_capstone.agents.knowledge_agent import KnowledgeAgent
# Initialize
vision = VisionAgent()
knowledge = KnowledgeAgent()
orchestrator = Orchestrator(vision, knowledge)
# Get coaching
result = orchestrator.run(
user_id="user_123",
image_path="my_photo.jpg",
query="How can I improve this shot?"
)
print(result["coach"]["text"])______________________________________________________________________
📊 评估结果
内建 法学硕士作为法官 评估框架:
| 度量 | 分数(0-10) |
|---|---|
| 相关性 | 8.5/10 |
| 完整性 | 8.2/10 |
| 准确度 | 9.0/10 |
| 可操作性 | 8.7/10 |
| 平均 | 8.6/10 |
运行评估:
python3 demo_eval.py查看结果 reports/evaluation_report.html
______________________________________________________________________
🛠️ 技术栈
| 层 | 技术 | 目的 |
|---|---|---|
| LLM | Google Gemini 1.5 Flash | 视觉分析+辅导响应 |
| 框架 | 流线型1.30 | Web用户界面 |
| 语言 | Python 3.11+ | 核心实现 |
| 存储 | SQLite | 会话持久性(兼容ADK) |
| 图像 | PIL/枕头 | EXIF提取 |
| 部署 | Docker,云运行 | 生产托管 |
| 评估 | 法学硕士作为评委 | 质量指标 |
为什么有这些选择?
- Gemini 1.5 Flash:快速、实惠、多模式(视觉+文本)
- Streamlit:快速原型制作,专业用户界面
- SQLite:简单、可靠、兼容ADK的适配器模式
- Docker:可移植、可扩展的部署
- FAISS+句子变换器:RAG的高效向量搜索(384个dim嵌入)
______________________________________________________________________
🚀 部署
地方发展
export GOOGLE_API_KEY="your_key"
python3 -m streamlit run agents_capstone/app_streamlit.py码头工人
docker build -t photo-coach .
docker run -p 8501:8501 -e GOOGLE_API_KEY=your_key photo-coach访问地址: http://localhost:8501
谷歌云运行
gcloud run deploy photo-coach \
--source . \
--region us-central1 \
--allow-unauthenticated \
--set-env-vars GOOGLE_API_KEY=your_key看 部署.md 用于:
- ADK集成指南
- 生产注意事项
- 缩放配置
- 监控设置
______________________________________________________________________
🔬 评估与测试
运行完整评估
python3 demo_eval.py生成:
reports/evaluation_report.html(详细评分)reports/evaluation_summary.csv(指标汇总)reports/evaluation_detailed.json(原始数据)
测试用例
当前测试集:
- 风景照片(构图、DOF)
- 肖像照片(曝光、聚焦)
- 低光场景(ISO、噪声)
- 动作镜头(快门速度、模糊)
评估维度:
- 相关性 –回答用户的问题
- 完整性 –涵盖所有重要方面
- 准确度 –技术正确性
- 可操作性 –明确、具体的建议
______________________________________________________________________
📈 性能指标
| 度量 | 目标 | 当前 |
|---|---|---|
| 响应时间 | \8.0 | 8.5 |
| 准确度得分 | >8.5 | 9.0 |
| 上下文保留 | 10+圈 | 无限制\* |
\*6圈后的上下文压缩使内存易于管理
______________________________________________________________________
🎓 学习成果
展示的技能:
- ✅ 多智能体系统设计
- ✅ LLM集成(Gemini Vision+Text)
- ✅ 生产工程(Docker、日志、评估)
- ✅ 会话持久性和内存管理
- ✅ 简化UI开发
- ✅ 法学硕士作为评委评估
已解决的关键挑战:
- 上下文管理(压缩策略)
- 多模态集成(EXIF+视觉+文本)
- 动态LLM提示(无硬编码模板)
- 会话持久性(ADK兼容适配器)
______________________________________________________________________
🔮 未来的增强功能
计划功能:
- \[\]MCP服务器集成(模型上下文协议)
- \[\]增强的视觉分析(Gemini结构化JSON)
- \[\]批量照片分析(整张照片拍摄)
- \[\]风格转换建议(参考照片)
- \[\]自动编辑建议(HSL、曲线)
- \[\]与Lightroom/Photoshop API集成
- \[\]移动应用程序(React Native)
高级功能:
- \[\]多摄影师协作
- \[\]投资组合审查模式
- \[\]游戏化(教练进度跟踪)
- \[\]微调Gemini模型(特定于摄影)
______________________________________________________________________
📚 文档
| 文档 | 描述 |
|---|---|
| 部署.md | 部署指南(Docker、Cloud Run、ADK) |
| 视频_SCRIPT.md | 演示视频脚本(2-3分钟) |
| KAGGLE_WRITEUP_ENHANCED.md | 竞赛提交报告 |
| 完成_检查表.md | 提交跟踪 |
| agents_capstone/WRITEUP.md | 完整的量规映射(第1-5天) |
| 试剂\_ capstone/ADK_INTEGRATION.md | ADK设置和架构 |
| 试剂_胶囊/观察性.md | 日志记录和指标指南 |
| 图表/ | 建筑图(美人鱼) |
______________________________________________________________________
🤝 贡献
欢迎投稿!需要改进的地方:
- 附加测试用例
- 新代理类型(如编辑代理、装备推荐代理)
- ui增强
- 性能优化
如何做出贡献:
- 复刻仓库
- 创建特征分支(
git checkout -b feature/new-agent) - 提交更改(
git commit -am 'Add new agent') - 推送到分支(
git push origin feature/new-agent) - 打开拉取请求
______________________________________________________________________
📜 许可证
MIT许可证——见 许可证 文件以获取详细信息。
太长,读不下去了 免费使用、修改、分发。感谢您的署名!
______________________________________________________________________
🙏 致谢
- 谷歌人工智能代理密集型 –Capstone项目框架
- 谷歌双子座团队 –多模式LLM API
- Streamlit社区 –UI框架和示例
- 摄影社区 –对辅导质量的反馈
内置于❤️ 5天内(2025年12月),作为谷歌人工智能代理强化顶点项目的一部分。
______________________________________________________________________
📬 联系与反馈
作者 普拉萨德T\ 存储库: https://github.com/prasadt1/ai-photography-coach-agents\ 问题: https://github.com/prasadt1/ai-photography-coach-agents/issues
问题?思想?打开一个问题或联系我们!
______________________________________________________________________
⭐ 如果你觉得这个项目有用,请在repo上加星!
