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.

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.

architecture

Prerequisites

AWS Account Setup

  1. AWS Account: You need an active AWS account with appropriate permissions

  2. AWS CLI: Install and configure AWS CLI with your credentials

    aws configure
    
  3. Bedrock Model Access: Enable access to Amazon Bedrock Anthropic Claude 4.0 models in your AWS region

  4. Python 3.8+: Required for running the application

  5. Create OAuth 2.0 credentials for calendar access : For Google Calendar integration

  6. Install uv package manager.

Deploy

  1. Create infrastructure

    python -m venv .venv
    source .venv/bin/activate
    
    chmod +x scripts/prereq.sh
    ./scripts/prereq.sh
    
    chmod +x scripts/list_ssm_parameters.sh
    ./scripts/list_ssm_parameters.sh
    
  2. Create Agentcore Gateway

    python scripts/agentcore_gateway.py create --name customersupgateway
    

    This create gateway.config file.

  3. Setup Agentcore Identity

    • Setup Cognito Credential Provider
    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.

    python scripts/google_credentials_provider.py create --name customersupport-google-calendar
    
    python test/test_google_tool.py
    
  4. Create Memory

    python scripts/agentcore_memory.py create --name customersupport
    
    
  5. Setup Agent Runtime

    
    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/agentcore_iam_role)
    • Oath Discovery URL = ValueOf(/app/customersupport/agentcore/cognito_discovery_url)
    • Oath client id = ValueOf(/app/customersupport/agentcore/web_client_id).

    configure

    agentcore launch
    
    python test/test_agent.py customersupport<AgentName> -p "Hi"
    
  6. Local Host Streamlit UI

pip install streamlit
streamlit run app.py -- --agent=customersupport<AgentName>

Scripts

Amazon Bedrock AgentCore Gateway

Create Amazon Bedrock AgentCore Gateway

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

# 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

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

# 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

python scripts/cognito_credentials_provider.py create --name customersupport-gateways

Delete Cognito Credentials Provider

# 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

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

# 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

Cleanup

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/agencore_agent_runtime.py delete

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines 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 file for details.

🆘 Support

  • Issues: Report bugs or request features via GitHub 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.