mirror of
https://github.com/awslabs/amazon-bedrock-agentcore-samples.git
synced 2025-09-08 20:50:46 +00:00
* feat(customer-support): updated code * Delete 02-use-cases/customer-support-assistant/Dockerfile Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> * Update .gitignore Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> * identity * /app/customersupport/agentcore/runtime_iam_role name changed issue#154 Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> * Update README.md Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> * Update README.md Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> * Update README.md Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com> --------- Signed-off-by: Eashan Kaushik <50113394+EashanKaushik@users.noreply.github.com>
309 lines
9.7 KiB
Markdown
309 lines
9.7 KiB
Markdown
# Customer Support Agent
|
||
|
||
> [!CAUTION]
|
||
> The examples provided in this repository are for experimental and educational purposes only. They demonstrate concepts and techniques but are not intended for direct use in production environments. Make sure to have Amazon Bedrock Guardrails in place to protect against [prompt injection](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-injection.html).
|
||
|
||
This is a customer support agent implementation using AWS Bedrock AgentCore framework. The system provides an AI-powered customer support interface with capabilities for warranty checking, customer profile management, Google calendar integration, and Amazon Bedrock Knowledge Base retrieval.
|
||
|
||

|
||
|
||
## Table of Contents
|
||
|
||
- [Customer Support Agent](#customer-support-agent)
|
||
- [Table of Contents](#table-of-contents)
|
||
- [Prerequisites](#prerequisites)
|
||
- [AWS Account Setup](#aws-account-setup)
|
||
- [Deploy](#deploy)
|
||
- [Sample Queries](#sample-queries)
|
||
- [Scripts](#scripts)
|
||
- [Amazon Bedrock AgentCore Gateway](#amazon-bedrock-agentcore-gateway)
|
||
- [Create Amazon Bedrock AgentCore Gateway](#create-amazon-bedrock-agentcore-gateway)
|
||
- [Delete Amazon Bedrock AgentCore Gateway](#delete-amazon-bedrock-agentcore-gateway)
|
||
- [Amazon Bedrock AgentCore Memory](#amazon-bedrock-agentcore-memory)
|
||
- [Create Amazon Bedrock AgentCore Memory](#create-amazon-bedrock-agentcore-memory)
|
||
- [Delete Amazon Bedrock AgentCore Memory](#delete-amazon-bedrock-agentcore-memory)
|
||
- [Cognito Credentials Provider](#cognito-credentials-provider)
|
||
- [Create Cognito Credentials Provider](#create-cognito-credentials-provider)
|
||
- [Delete Cognito Credentials Provider](#delete-cognito-credentials-provider)
|
||
- [Google Credentials Provider](#google-credentials-provider)
|
||
- [Create Credentials Provider](#create-credentials-provider)
|
||
- [Delete Credentials Provider](#delete-credentials-provider)
|
||
- [Agent Runtime](#agent-runtime)
|
||
- [Delete Agent Runtime](#delete-agent-runtime)
|
||
- [Cleanup](#cleanup)
|
||
- [🤝 Contributing](#-contributing)
|
||
- [📄 License](#-license)
|
||
- [🆘 Support](#-support)
|
||
- [🔄 Updates](#-updates)
|
||
|
||
## Prerequisites
|
||
|
||
### AWS Account Setup
|
||
|
||
1. **AWS Account**: You need an active AWS account with appropriate permissions
|
||
- [Create AWS Account](https://aws.amazon.com/account/)
|
||
- [AWS Console Access](https://aws.amazon.com/console/)
|
||
|
||
2. **AWS CLI**: Install and configure AWS CLI with your credentials
|
||
- [Install AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
|
||
- [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
|
||
|
||
```bash
|
||
aws configure
|
||
```
|
||
|
||
3. **Bedrock Model Access**: Enable access to Amazon Bedrock Anthropic Claude 4.0 models in your AWS region
|
||
- Navigate to [Amazon Bedrock Console](https://console.aws.amazon.com/bedrock/)
|
||
- Go to "Model access" and request access to:
|
||
- Anthropic Claude 4.0 Sonnet model
|
||
- Anthropic Claude 3.5 Haiku model
|
||
- [Bedrock Model Access Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
|
||
|
||
4. **Python 3.10+**: Required for running the application
|
||
- [Python Downloads](https://www.python.org/downloads/)
|
||
|
||
5. **Create OAuth 2.0 credentials for calendar access** : For Google Calendar integration
|
||
- Follow [Google OAuth Setup](./prerequisite/google_oauth_setup.md)
|
||
|
||
## Deploy
|
||
|
||
1. **Create infrastructure**
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -r dev-requirements.txt
|
||
|
||
chmod +x scripts/prereq.sh
|
||
./scripts/prereq.sh
|
||
|
||
chmod +x scripts/list_ssm_parameters.sh
|
||
./scripts/list_ssm_parameters.sh
|
||
```
|
||
|
||
> [!CAUTION]
|
||
> Please prefix all the resource name with `customersupport`.
|
||
|
||
2. **Create Agentcore Gateway**
|
||
|
||
```bash
|
||
python scripts/agentcore_gateway.py create --name customersupport-gw
|
||
```
|
||
|
||
3. **Setup Agentcore Identity**
|
||
|
||
- **Setup Cognito Credential Provider**
|
||
|
||
```bash
|
||
python scripts/cognito_credentials_provider.py create --name customersupport-gateways
|
||
|
||
python test/test_gateway.py --prompt "Check warranty with serial number MNO33333333"
|
||
```
|
||
|
||
- **Setup Google Credential Provider**
|
||
|
||
Follow instructions to setup [Google Credentials](./prerequisite/google_oauth_setup.md).
|
||
|
||
```bash
|
||
python scripts/google_credentials_provider.py create --name customersupport-google-calendar
|
||
|
||
python test/test_google_tool.py
|
||
```
|
||
|
||
4. **Create Memory**
|
||
|
||
```bash
|
||
python scripts/agentcore_memory.py create --name customersupport
|
||
|
||
python test/test_memory.py load-conversation
|
||
python test/test_memory.py load-prompt "My preference of gaming console is V5 Pro"
|
||
python test/test_memory.py list-memory
|
||
```
|
||
|
||
5. **Setup Agent Runtime**
|
||
|
||
> [!CAUTION]
|
||
> Please ensure the name of the agent starts with `customersupport`.
|
||
|
||
```bash
|
||
agentcore configure --entrypoint main.py -er arn:aws:iam::<Account-Id>:role/<Role> --name customersupport<AgentName>
|
||
```
|
||
|
||
Use `./scripts/list_ssm_parameters.sh` to fill:
|
||
- `Role = ValueOf(/app/customersupport/agentcore/runtime_iam_role)`
|
||
- `OAuth Discovery URL = ValueOf(/app/customersupport/agentcore/cognito_discovery_url)`
|
||
- `OAuth client id = ValueOf(/app/customersupport/agentcore/web_client_id)`.
|
||
|
||

|
||
|
||
> [!CAUTION]
|
||
> Please make sure to delete `.agentcore.yaml` before running agentcore launch.
|
||
|
||
```bash
|
||
|
||
rm .agentcore.yaml
|
||
|
||
agentcore launch
|
||
|
||
python test/test_agent.py customersupport<AgentName> -p "Hi"
|
||
```
|
||
|
||

|
||
|
||
6. **Local Host Streamlit UI**
|
||
|
||
> [!CAUTION]
|
||
> Streamlit app should only run on port `8501`.
|
||
|
||
```bash
|
||
streamlit run app.py --server.port 8501 -- --agent=customersupport<AgentName>
|
||
```
|
||
|
||
## Sample Queries
|
||
|
||
1. I have a Gaming Console Pro device , I want to check my warranty status, warranty serial number is MNO33333333.
|
||
|
||
2. What are the warranty support guidelines ?
|
||
|
||
3. What’s my agenda for today?
|
||
|
||
4. Can you create an event to setup call to renew warranty?
|
||
|
||
5. I have overheating issues with my device, help me debug.
|
||
|
||
## Scripts
|
||
|
||
### Amazon Bedrock AgentCore Gateway
|
||
|
||
#### Create Amazon Bedrock AgentCore Gateway
|
||
|
||
```bash
|
||
python scripts/agentcore_gateway.py create --name my-gateway
|
||
python scripts/agentcore_gateway.py create --name my-gateway --api-spec-file custom/path.json
|
||
```
|
||
|
||
#### Delete Amazon Bedrock AgentCore Gateway
|
||
|
||
```bash
|
||
# Delete gateway (reads from gateway.config automatically)
|
||
python scripts/agentcore_gateway.py delete
|
||
|
||
# Delete with confirmation skip
|
||
python scripts/agentcore_gateway.py delete --confirm
|
||
```
|
||
|
||
### Amazon Bedrock AgentCore Memory
|
||
|
||
#### Create Amazon Bedrock AgentCore Memory
|
||
|
||
```bash
|
||
python scripts/agentcore_memory.py create --name MyMemory
|
||
python scripts/agentcore_memory.py create --name MyMemory --event-expiry-days 60
|
||
```
|
||
|
||
#### Delete Amazon Bedrock AgentCore Memory
|
||
|
||
```bash
|
||
# Delete memory (reads from SSM automatically)
|
||
python scripts/agentcore_memory.py delete
|
||
|
||
# Delete with confirmation skip
|
||
python scripts/agentcore_memory.py delete --confirm
|
||
```
|
||
|
||
### Cognito Credentials Provider
|
||
|
||
#### Create Cognito Credentials Provider
|
||
|
||
```bash
|
||
python scripts/cognito_credentials_provider.py create --name customersupport-gateways
|
||
```
|
||
|
||
#### Delete Cognito Credentials Provider
|
||
|
||
```bash
|
||
# Delete provider (reads name from SSM automatically)
|
||
python scripts/cognito_credentials_provider.py delete
|
||
|
||
# Delete specific provider by name
|
||
python scripts/cognito_credentials_provider.py delete --name customersupport-gateways
|
||
|
||
# Delete with confirmation skip
|
||
python scripts/cognito_credentials_provider.py delete --confirm
|
||
```
|
||
|
||
### Google Credentials Provider
|
||
|
||
#### Create Credentials Provider
|
||
|
||
```bash
|
||
python scripts/google_credentials_provider.py create --name customersupport-google-calendar
|
||
python scripts/google_credentials_provider.py create --name my-provider --credentials-file /path/to/credentials.json
|
||
```
|
||
|
||
#### Delete Credentials Provider
|
||
|
||
```bash
|
||
# Delete provider (reads name from SSM automatically)
|
||
python scripts/google_credentials_provider.py delete
|
||
|
||
# Delete specific provider by name
|
||
python scripts/google_credentials_provider.py delete --name customersupport-google-calendar
|
||
|
||
# Delete with confirmation skip
|
||
python scripts/google_credentials_provider.py delete --confirm
|
||
```
|
||
|
||
### Agent Runtime
|
||
|
||
#### Delete Agent Runtime
|
||
|
||
```bash
|
||
# Delete specific agent runtime by name
|
||
python scripts/agentcore_agent_runtime.py customersupport
|
||
|
||
# Preview what would be deleted without actually deleting
|
||
python scripts/agentcore_agent_runtime.py --dry-run customersupport
|
||
|
||
# Delete any agent runtime by name
|
||
python scripts/agentcore_agent_runtime.py <agent-name>
|
||
```
|
||
|
||
## Cleanup
|
||
|
||
```bash
|
||
chmod +x scripts/cleanup.sh
|
||
./scripts/cleanup.sh
|
||
|
||
python scripts/google_credentials_provider.py delete
|
||
python scripts/cognito_credentials_provider.py delete
|
||
python scripts/agentcore_memory.py delete
|
||
python scripts/agentcore_gateway.py delete
|
||
python scripts/agentcore_agent_runtime.py customersupport<AgentName>
|
||
|
||
rm .agentcore.yaml
|
||
rm .bedrock_agentcore.yaml
|
||
```
|
||
|
||
## 🤝 Contributing
|
||
|
||
We welcome contributions! Please see our [Contributing Guidelines](../../CONTRIBUTING.md) for details on:
|
||
|
||
- Adding new samples
|
||
- Improving existing examples
|
||
- Reporting issues
|
||
- Suggesting enhancements
|
||
|
||
## 📄 License
|
||
|
||
This project is licensed under the MIT License - see the [LICENSE](../../LICENSE) file for details.
|
||
|
||
## 🆘 Support
|
||
|
||
- **Issues**: Report bugs or request features via [GitHub Issues](https://github.com/awslabs/amazon-bedrock-agentcore-samples/issues)
|
||
- **Documentation**: Check individual folder READMEs for specific guidance
|
||
|
||
## 🔄 Updates
|
||
|
||
This repository is actively maintained and updated with new capabilities and examples. Watch the repository to stay updated with the latest additions.
|