Dave Hulbert's Today I Learned (TIL)

Getting started with Amazon Lex

Today, I was setting up an Amazon Lex chatbot and came across a couple of challenges.

In simple terms, Amazon Lex is like a more structred version of ChatGPT. It uses advanced natural language understanding (NLU) and automatic speech recognition (ASR) technologies.

This allows developers to create interactive chatbots that can understand and respond to user input in a meaningful way. What's useful about Lex over large language models like GPT and Llama is that it's much more structured and integrates seamlessly with other AWS services.

Quick start

I started off from the Create a bot from an example example, changing a few things as I went.

  1. Set Up Bot and Intents: First, I set up a bot named and defined an intent. This involved understanding the purpose of the bot and what kinds of user interactions it should handle. I did this through the AWS console but you can do it from the AWS CLI.

  2. Develop Sample Utterances: I then created sample phrases for the bot to pick up "I want to buy a widget" that would trigger the intent.

  3. Configure Slots and Responses: Next, I configured slots for capturing user input (like the product) and crafted appropriate responses.

  4. Build and Test: Finally, the bot was compiled and tested. I used commands like the one below to interact with the bot and refine its functionality.

aws lexv2-runtime recognize-text --bot-id SJUDNSMPVC --bot-alias-id TestAlias --locale-id 'en_GB' --session-id 'testsession' --text "I want to buy a widget"


Developing a conversational AI isn't without its challenges. Here are a few I encountered:


You can get your bot IDs and then their aliases like this:

aws lexv2-models list-bots
aws lexv2-models list-bot-aliases --bot-id SJUDNSMPVC