Building a Gemini-Powered Chatbot

Amanda Pratama Putra
4 min readJul 1, 2024

--

Imagine a potential customer browsing your website at 3:00 AM, eager to learn more about your product or service. Instead of encountering silence, they’re greeted by a friendly and helpful chatbot, ready to answer their questions instantly. This 24/7 availability isn’t just convenient for your customers; it’s a powerful tool for businesses to provide exceptional support, generate leads, and enhance user experience.

Now, what if you could take your chatbot to the next level, enabling it to engage in more natural, human-like conversations? This is where Google’s Gemini comes in — a cutting-edge Large Language Model (LLM) capable of understanding context, generating creative text formats, and delivering impressive results.

In this step-by-step guide, we’ll dive into the world of Gemini and empower you to build your intelligent chatbot. Whether you’re a coding novice or have some experience under your belt, we’ll walk you through the process of harnessing Gemini’s capabilities to create a simple chatbot using langchain and Streamlit.

Setting Up Your Development Environment

To embark on our chatbot-building journey with Gemini, we’ll need to set up a suitable development environment. Fortunately, Google provides an excellent platform for this purpose: Google AI Studio.

Google AI Studio

Google AI Studio is a cloud-based machine learning development environment that offers a collaborative and user-friendly interface. It comes equipped with powerful hardware, pre-installed libraries, and convenient tools for managing your projects. The best part? It’s free to use, making it accessible to developers of all levels.

Here’s how to get started:

  1. Sign Up: If you don’t already have a Google account, create one and head over to https://ai.google.dev/aistudio to sign up for Google AI Studio.
  2. New Project: Once you’re in, create a new project and give it a descriptive name like “Gemini-Powered Chatbot.”

Accessing the Gemini API

Now that we have our workspace ready, it’s time to grant ourselves access to the powerful Gemini API.

  1. Navigate to the Google AI Platform: Google AI Platform is the hub for accessing and managing Google’s AI services. You can find it here: https://cloud.google.com/ai-platform
  2. Find the Gemini API Documentation: Look for “Gemini” in the list of services and navigate to its documentation. This will be your go-to resource for understanding the API’s capabilities.
  3. Create API Credentials: To use the Gemini API, you’ll need API credentials, specifically an API key. Follow Google’s instructions on how to generate an API key for your project.
  4. Store Your API Key Securely: Important: Never embed your API key directly in your code. Instead, store it securely using environment variables or secret management services.

Setting Up Your Python Environment

With our API key in hand, let’s set up our Python environment:

  1. Create a Python Notebook: In Google AI Studio, create a new Python notebook within your project. This will be our coding playground.
  2. Install Dependencies: You’ll likely need to install the Gemini API client library for Python. You can use pip within your notebook.
  3. Initialize the Gemini API: Import the necessary libraries and initialize the Gemini API with your credentials

Building the Chatbot Core (with LangChain Integration)

While we can interact with the Gemini API directly, using a framework like LangChain offers several advantages:

  • Simplified API Calls: LangChain provides a higher-level abstraction over LLMs like Gemini, making it easier to work with.
  • Chain Creation: You can easily chain together multiple components (prompts, LLMs, tools) to create complex chatbot behaviors.
  • Data Connection: LangChain facilitates connecting your LLM to external data sources
conda create -n llm python=3.9
conda activate llm

conda install langchain -c conda-forge
pip install --upgrade --quiet langchain-google-genai
pip install langchain-community
pip install streamlit
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

GEMINI_API_KEY = "..."

# Initialize Gemini LLM through LangChain
llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=GEMINI_API_KEY)

# Create a conversation chain
conversation = ConversationChain(
llm=llm,
memory=ConversationBufferMemory() # Persists chat history
)

# Basic Chatbot loop
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
break

response = conversation.predict(input=user_input)
print("Chatbot:", response)

Integrate Gemini+LangChain with StreamLit

Main.py

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

GEMINI_API_KEY = "..."

# Initialize Session State for Chat History
if "messages" not in st.session_state:
st.session_state.messages = []

# Initialize Gemini LLM (replace placeholders)
llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=GEMINI_API_KEY)
memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)

# Streamlit App Title
st.title("Gemini Chatbot")

# Display Chat History
for message in st.session_state.messages:
if message["role"] == "user":
st.write("You:", message["content"])
else:
st.write("Chatbot:", message["content"])

# User Input
user_input = st.text_input("Enter your message:")

# Generate Response on Button Click
if st.button("Send"):
if user_input:
# Add User Message to History
st.session_state.messages.append({"role": "user", "content": user_input})

# Get Chatbot Response
response = conversation.predict(input=user_input)

# Add Chatbot Response to History
st.session_state.messages.append({"role": "chatbot", "content": response})

# Clear Input Field
st.session_state.user_input = "" # Clear the input field after sending

# Rerun Streamlit for UI Update (not ideal but works for this example)
st.experimental_rerun()

Run the script:

streamlit run main.py

--

--

Amanda Pratama Putra
Amanda Pratama Putra

Written by Amanda Pratama Putra

Data Scientist | Artificial Intelligence | E-commerce | Consultant

No responses yet