import ThemedImage from "@theme/ThemedImage";
import useBaseUrl from "@docusaurus/useBaseUrl";
import ZoomableImage from "/src/theme/ZoomableImage.js";
import ReactPlayer from "react-player";

# Building chatbots with System Message

## Overview

In this guide, we will modify the "Basic Chat with Prompt and History" example, integrating the ChatPromptTemplate with the SystemMessagePromptTemplate and HumanMessagePromptTemplate components. By following these steps, you'll be able to build a personalized chatbot that can interpret and respond based on user-defined System messages.

## Interactive Guide

<iframe
  src="https://app.tango.us/app/embed/f05bb3a7-4ceb-4b61-921f-628563b562f6?iframe=true"
  sandbox="allow-scripts allow-top-navigation-by-user-activation allow-popups allow-same-origin"
  security="restricted"
  title="Step-by-Step Instructions to Customize and Build a Chatbot with custom System Message"
  width="100%"
  height="800px"
  referrerpolicy="strict-origin-when-cross-origin"
  frameborder="0"
  webkitallowfullscreen="webkitallowfullscreen"
  mozallowfullscreen="mozallowfullscreen"
  allowfullscreen="allowfullscreen"
></iframe>

## Step-by-Step Instructions

1. Navigate to the "Community Examples" section.

2. Locate the "Basic Chat with Prompt and History" example, and click on "Fork Example".

3. Once in the editor, find the "PromptTemplate" component and remove it.

4. Now, add these three components: ChatPromptTemplate, SystemMessagePromptTemplate, and HumanMessagePromptTemplate.

> **Note:** Remember to set the model to gpt-3.5-turbo-0613 or the most up-to-date version. The latest models have improved capabilities to comprehend System messages.

5. Open the "Prompt" field on the SystemMessagePromptTemplate component.

6. Enter the text: _`You are a {role} that {behavior}.`_
7. Save your changes by clicking on "Check & Save".

8. Define the 'role' variable by typing "obedient assistant".

9. Next, navigate to the HumanMessagePromptTemplate and open the "Prompt" field.

10. Here, simply enter `{input}`.

11. Save these changes by clicking on "Check & Save".

12. Now, you should see your flow populated with the variables you defined.

13. In the Memory component, set the 'Input Key' to "input".

> **Tip:** When using a Memory component with multiple variables, it's crucial to specify which variable should be used to generate the conversation history.

14. Click on the "Build" button to implement your changes.

15. Open the chat interface to test your modifications.

16. You should now be able to see and use the defined variables in the chat interface.

17. Click on 'role' to examine the variable you established in the canvas.

18. Now, let's define the 'behavior' variable.

19. Enter the text: "writes the word 'Langflow' at the end of every sentence."

20. Test your chatbot by typing "How can you help me?"

21. If everything was set up correctly, your chatbot should respond appropriately, following the defined behavior.

22. Congratulations! You have successfully customized and built your chatbot.

By following these instructions, you have created a dynamic chatbot capable of understanding and responding based on custom system messages, enhancing the user experience and interaction. Enjoy your personalized assistant!
