{"id":36442368,"url":"https://github.com/aws-samples/sample-multimodal-agent-tutorial","last_synced_at":"2026-01-18T15:00:30.410Z","repository":{"id":331267560,"uuid":"1100026620","full_name":"aws-samples/sample-multimodal-agent-tutorial","owner":"aws-samples","description":"Build production-ready AI agents with the Strands Agents SDK and AWS services. This repository demonstrates how you can create multi-modal systems with persistent memory in minimal code. Progress from your first agent to production-ready systems through hands-on chapters.","archived":false,"fork":false,"pushed_at":"2026-01-14T19:25:59.000Z","size":6061,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-14T23:33:31.984Z","etag":null,"topics":["aws","bedrock-agentcore","generative-ai","multimodal-learning","s3-storage","strands-agents"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aws-samples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T18:38:40.000Z","updated_at":"2026-01-14T19:26:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aws-samples/sample-multimodal-agent-tutorial","commit_stats":null,"previous_names":["aws-samples/sample-multimodal-agent-tutorial"],"tags_count":0,"template":false,"template_full_name":"amazon-archives/__template_MIT-0","purl":"pkg:github/aws-samples/sample-multimodal-agent-tutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-samples%2Fsample-multimodal-agent-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-samples%2Fsample-multimodal-agent-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-samples%2Fsample-multimodal-agent-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-samples%2Fsample-multimodal-agent-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aws-samples","download_url":"https://codeload.github.com/aws-samples/sample-multimodal-agent-tutorial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-samples%2Fsample-multimodal-agent-tutorial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28538865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T14:59:57.589Z","status":"ssl_error","status_checked_at":"2026-01-18T14:59:46.540Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","bedrock-agentcore","generative-ai","multimodal-learning","s3-storage","strands-agents"],"created_at":"2026-01-11T22:00:18.247Z","updated_at":"2026-01-18T15:00:30.393Z","avatar_url":"https://github.com/aws-samples.png","language":"Jupyter Notebook","funding_links":[],"categories":["Community Projects"],"sub_categories":["For PyPI Packages"],"readme":"# Strands Agents Tutorial - Build Multi-Modal AI\n\n## Overview\n\nBuild production-ready AI agents with the [Strands Agents SDK](https://github.com/strands-agents/sdk-python) and AWS services. This repository demonstrates how you can create multi-modal systems with persistent memory in minimal code. Progress from your first agent to production-ready systems through hands-on chapters.\n\nStrands Agents create AI agents with minimal code using built-in tools from the community package. No need to write custom tool implementations—focus on your use case while the framework handles the complexity.\n\n## Tutorial Contents - 8 Hands-On Notebooks\n\n| # | Notebook | Description |\n|---|----------|-------------|\n| **01** | [Hello World - First AI Agent](notebooks/01-hello-world-strands-agents.ipynb) | Create your first AI agent with [Amazon Bedrock](https://aws.amazon.com/es/bedrock/?trk=87c4c426-cddf-4799-a299-273337552ad8\u0026sc_channel=el) in under 10 lines of code. Learn agent basics, system prompts, and execution loops. |\n| **02** | [Custom Tools for Multi-Modal Processing](notebooks/02-custom-tools.ipynb) | Extend agents with custom tools using the `@tool` decorator. Process multi-modal content including images, videos, and documents. |\n| **03** | [MCP Integration for Tool Sharing](notebooks/03-mcp-integration.ipynb) | Share tools across applications with [Model Context Protocol (MCP)](https://modelcontextprotocol.io/). Convert tools to MCP servers and deploy for production. |\n| **04** | [State Management and Sessions](notebooks/04-state-and-sessions.ipynb) | Implement session management with `FileSessionManager`. Maintain conversation context and handle multiple concurrent sessions. |\n| **05** ⭐ | [S3 Vector Memory for Persistent Context](notebooks/05-s3-vector-memory.ipynb) | Build semantic memory with [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html). Create agents that remember across all sessions with production-ready infrastructure. |\n| **06** 🌍 | [Travel Assistant with Cross-Session Memory](notebooks/06-travel-assistant-demo.ipynb) | Real-world demonstration of cross-session memory with a personalized AI travel assistant. Features multimodal analysis (text, images, PDFs) and progressive personalization. |\n| **07** 🎨 | [Travel Content Generator with Built-in Tools](notebooks/07-travel-content-generator.ipynb) | Generate complete travel content packages (images, videos, itineraries) for any destination using built-in tools from [`strands-agents-tools`](https://pypi.org/project/strands-agents-tools/). Fully automated with no manual confirmations. |\n| **08** 🎬 | [Agentic Video Analysis](notebooks/08-agentic-video-analysis.ipynb) | Build specialized video analysis agents using TwelveLabs API or AWS Bedrock Pegasus. Upload videos, generate insights, and query video content with natural language. |\n| **Bonus** 🚀 | [Deploy to Production with AgentCore](deploy-to-production/) | Deploy your multimodal travel agent to production using [Amazon Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html). Includes persistent memory with [Amazon Bedrock AgentCore Memory](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-get-started.html), serverless deployment, and comprehensive testing. |\n\n### Recommended Learning Path\n\n- **Notebooks 01-02**: Basic agents with custom capabilities\n- **Notebook 03**: Production-ready tools with MCP standardization\n- **Notebooks 04-05**: Stateful agents with persistent memory\n- **Notebooks 06-07**: Real-world applications demonstrating rapid development with built-in tools\n\n## Quick Start\n\n### Prerequisites\n- AWS Account with [Amazon Bedrock](https://aws.amazon.com/es/bedrock/?trk=87c4c426-cddf-4799-a299-273337552ad8\u0026sc_channel=el) model access enabled\n- Python 3.9+ and Jupyter Notebook\n- AWS CLI configured (`aws configure`)\n\n### Installation\n\n```bash\n# Setup environment\npython -m venv .venv\nsource .venv/bin/activate  # Windows: .venv\\Scripts\\activate\ncd notebooks\npip install -r requirements.txt\n\n```\n\nOpen `notebooks/01-hello-world-strands-agents.ipynb` to begin.\n\n## Why Strands Agents - Key Advantages\n\n### Build Faster with 40+ Pre-Built Tools\n\nBuilding AI agents traditionally requires extensive boilerplate code for tool integration, error handling, and state management. Strands Agents provides:\n\n**Built-in Tools**: The [`strands-agents-tools`](https://pypi.org/project/strands-agents-tools/) package includes 40+ pre-built tools:\n- **Multi-modal**: `generate_image`, `image_reader`, `nova_reels`, `diagram`\n- **File Operations**: `file_read`, `file_write`, `editor`\n- **Memory**: `memory`, `agent_core_memory`, `mem0_memory`\n- **Web \u0026 Network**: `http_request`, `browser`, `slack`\n- **AWS Services**: `use_aws`, `retrieve` (Bedrock Knowledge Bases)\n- **Code Execution**: `python_repl`, `code_interpreter`\n- **And many more**: See [full list](https://github.com/strands-agents/tools)\n\n**Example**: Create an agent with image generation in 5 lines:\n\n```python\nfrom strands import Agent\nfrom strands.models import BedrockModel\nfrom strands_tools import generate_image\n\nagent = Agent(model=BedrockModel(model_id=\"...\"), tools=[generate_image])\nagent(\"Generate an image of the Eiffel Tower at sunset\")\n```\n\nNo need to write image generation logic, handle API calls, or manage file storage—the tool handles everything.\n\n### 4-Step Rapid Prototyping Process\n\nTest new ideas quickly:\n\n1. **Import pre-built tools** from strands-agents-tools\n2. **Create an agent** with your chosen model\n3. **Add tools** to the agent's capabilities\n4. **Run and iterate** immediately\n\nThis repository demonstrates this approach throughout—especially in the Travel Content Generator (Notebook 08) where you can generate complete content packages with minimal custom code.\n\n## Real-World Demo - AI Travel Assistant with Memory\n\nExperience persistent vector memory with a real-world use case: an AI travel assistant that remembers your preferences across multiple sessions.\n\n### Key Features\n\n- **True Cross-Session Memory**: Agent remembers everything even with fresh instances\n- **Multimodal Analysis**: Processes text preferences, destination photos, and travel itineraries\n- **Semantic Search**: Finds relevant memories intelligently\n- **Progressive Personalization**: Gets smarter with each interaction\n- **Production-Ready**: Built on AWS services for scale\n\n### Try the Demo\n\n```bash\n# 1. Open the demo notebook\nnotebook notebooks/06-travel-assistant-demo.ipynb\n\n# 2. Update configuration with your S3 Vector bucket\n# 3. Run all cells to see cross-session memory in action\n```\n\n**Note**: To generate custom travel content for the demo, open and run [notebooks/07-travel-content-generator.ipynb](notebooks/07-travel-content-generator.ipynb) first.\n\n## Production Deployment - AgentCore Runtime Guide\n\nTake your multimodal travel agent from notebook to production with [Amazon Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html).\n\n### What's Included\n\nThe [`deploy-to-production/`](deploy-to-production/) directory contains everything you need to deploy a production-ready multimodal travel agent:\n\n- **Persistent Memory**: Cross-session memory using Bedrock AgentCore Memory\n- **Multimodal Support**: Process images, videos, and documents\n- **Serverless Deployment**: Auto-scaling with AWS CodeBuild (no Docker required)\n- **Test Scripts**: Comprehensive testing for memory and multimodal capabilities\n\n### Features\n\n- ✅ **Image Analysis**: Analyze destination photos, food labels, travel documents\n- ✅ **Video Processing**: Process travel videos with Amazon Nova (visual only)\n- ✅ **Document Reading**: Read PDFs, itineraries, and text files\n- ✅ **Memory Persistence**: Remember user preferences across all sessions\n- ✅ **Production Monitoring**: CloudWatch logs and metrics\n\n### Quick Deploy\n\n```bash\n# 1. Navigate to deployment directory\ncd deploy-to-production/deployment\n\n# 2. Install dependencies\npip install -r requirements.txt\n\n# 3. Configure agent with memory\nagentcore configure -e multimodal_agent.py\n# Select 'yes' for memory and long-term memory extraction\n\n# 4. Deploy to production\nagentcore launch\n\n```\n\n### Testing - Memory \u0026 Multimodal Capabilities\n\n```bash\n# Test short-term and long-term memory\ncd ../sample-test\nexport AGENT_ARN=\"your-agent-arn\"\npython test_short_memory.py\npython test_long_memory.py\n\n# Test image and video analysis\npython test_multimodal.py path/to/image.jpg\npython test_video.py path/to/video.mp4\n```\n\n**Learn More**: See the complete [deployment guide](deploy-to-production/README.md) for detailed instructions, architecture diagrams, and troubleshooting.\n\n\n## Best Practices \u0026 Tips\n\n- Complete notebooks in order—each builds on previous concepts\n- Run cells sequentially to maintain state\n- Experiment with examples to deepen understanding\n- Explore the [strands-agents-tools package](https://github.com/strands-agents/tools) for more pre-built capabilities\n- Monitor costs with [AWS Cost Explorer](https://aws.amazon.com/es/aws-cost-management/aws-cost-explorer/?trk=87c4c426-cddf-4799-a299-273337552ad8\u0026sc_channel=el)\n\n## Common Issues \u0026 Solutions\n\n**Import Errors**: Run `pip install --upgrade strands-agents strands-agents-tools boto3`\n\n**AWS Credentials**: Verify with `aws sts get-caller-identity` or reconfigure with `aws configure`\n\n**S3 Vectors** (Notebook 05): Follow the [Getting Started Guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-getting-started.html) and verify bucket and index regions match\n\n**MCP Server** (Notebook 03): Ensure server runs on `http://localhost:8000/sse` with no port conflicts\n\n**Tool Consent Prompts**: Set `BYPASS_TOOL_CONSENT=true` environment variable for automated workflows\n\n## Additional Resources\n\n**Documentation**  \n• [Strands Agents SDK](https://github.com/strands-agents/sdk-python)  \n• [Strands Community Tools](https://github.com/strands-agents/tools)  \n• [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/)  \n• [Amazon Bedrock AgentCore](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html)  \n• [S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)  \n• [MCP Specification](https://modelcontextprotocol.io/)  \n• [Amazon Nova](https://aws.amazon.com/es/bedrock/nova/?trk=87c4c426-cddf-4799-a299-273337552ad8\u0026sc_channel=el)\n\n---\n\n**Ready to start?** Open [Notebook 01: Hello World](notebooks/01-hello-world-strands-agents.ipynb) and build your first AI agent.\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis library is licensed under the MIT-0 License. See the LICENSE file.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws-samples%2Fsample-multimodal-agent-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faws-samples%2Fsample-multimodal-agent-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws-samples%2Fsample-multimodal-agent-tutorial/lists"}