Explorando a Inteligência Artificial

Explorando a Inteligência Artificial

Chatbot com LangChain e Streamlit: Criando uma interface conversacional

Parte 6 (final) da série "Tudo o Que Você Precisa Saber Sobre LangChain (Antes de Começar um Projeto com IA)"

Avatar de Elisa Terumi
Elisa Terumi
ago 09, 2025
∙ Pago

Chegamos ao o último post da nossa série sobre LangChain!

Hoje vamos dar vida às nossas aplicações criando um chatbot interativo usando LangChain e Streamlit. Se você acompanhou os posts anteriores, já sabe o poder do LangChain para trabalhar com modelos de linguagem (LLMs).

Agora é hora de criar uma interface amigável para os usuários, usando Streamlit.

Veja todos os posts da série:

  • Tudo o Que Você Precisa Saber Sobre LangChain - Parte 1

  • Criando Chatbots com RAG usando LangChain

  • Chatbots com Memória usando LangChain

  • Agentes com LangChain: Quando a IA Precisa Tomar Decisões

  • LangChain com MCP: Conectando ferramentas com flexibilidade

  • Chatbot com LangChain e Streamlit: Criando uma interface conversacional

Quer mais novidades de IA? Me siga no Linkedin e no Instagram !

Mas antes, o que é Streamlit?

Streamlit é um framework em Python que permite transformar scripts simples em aplicações web interativas de forma rápida e prática.

Ele foi criado com o objetivo de facilitar a vida de cientistas de dados, engenheiros de machine learning e desenvolvedores que querem criar interfaces visuais para seus projetos, sem precisar lidar com front-end, HTML ou JavaScript.

Com apenas algumas linhas de código, podemos criar sliders, campos de texto, botões e gráficos dinâmicos. E o melhor: tudo isso rodando localmente no navegador, com atualização em tempo real conforme os dados mudam.

Neste tutorial, vamos usar o Streamlit para criar a interface do nosso chatbot, uma página leve e intuitiva onde o usuário poderá conversar com nosso LLM.

Pronto para colocar seu chatbot no ar? Vamos começar!

Preparando o ambiente

Primeiro, vamos instalar as dependências necessárias:

pip install langchain langchain-google-genai streamlit

Agora vamos criar um arquivo app.py, com o seguinte código:

import streamlit as st
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.schema import HumanMessage, AIMessage
import os

# Configuração da página
st.set_page_config(
    page_title="Chatbot com LangChain e Streamlit",
    page_icon="🤖",
    layout="centered"
)

# Título da aplicação
st.title("Chatbot")
st.markdown("*Chatbot com LangChain e Streamlit*")

# Sidebar para configurações
with st.sidebar:
    st.header("⚙️ Configurações")
    
    # Campo para API Key
    api_key = st.text_input(
        "Google API Key",
        type="password",
        help="Cole aqui sua chave de API do Google AI Studio"
    )
    
    if st.button("Limpar Conversa"):
        st.session_state.messages = []
        st.rerun()
    
    st.markdown("---")
    st.markdown("### 📝 Como usar:")
    st.markdown("""
    1. Insira sua API Key do Google
    2. Digite sua mensagem
    3. Pressione Enter ou clique em Enviar
    """)
    
    st.markdown("---")
    st.markdown("### 🔗 Links úteis:")
    st.markdown("[Obter API Key](https://aistudio.google.com/app/apikey)")

# Inicializar o histórico de mensagens
if "messages" not in st.session_state:
    st.session_state.messages = []

# Função para inicializar o modelo
@st.cache_resource
def init_model(api_key):
    if not api_key:
        return None
    
    try:
        llm = ChatGoogleGenerativeAI(
            model="gemini-1.5-flash",
            google_api_key=api_key,
            temperature=0.3,
            max_tokens=250
        )
        return llm
    except Exception as e:
        st.error(f"Erro ao inicializar o modelo: {str(e)}")
        return None

# Verificar se a API key foi fornecida
if not api_key:
    st.warning("⚠️ Por favor, insira sua API Key do Google na barra lateral para começar.")
    st.stop()

# Inicializar o modelo
llm = init_model(api_key)

if not llm:
    st.error("❌ Não foi possível inicializar o modelo. Verifique sua API Key.")
    st.stop()

# Container para o chat
chat_container = st.container()

# Exibir mensagens do histórico
with chat_container:
    for message in st.session_state.messages:
        if message["role"] == "user":
            with st.chat_message("user"):
                st.write(message["content"])
        else:
            with st.chat_message("assistant"):
                st.write(message["content"])

# Input do usuário
if prompt := st.chat_input("Digite sua mensagem aqui..."):
    # Adicionar mensagem do usuário ao histórico
    st.session_state.messages.append({"role": "user", "content": prompt})
    
    # Exibir mensagem do usuário
    with st.chat_message("user"):
        st.write(prompt)
    
    # Gerar resposta do assistente
    with st.chat_message("assistant"):
        with st.spinner("Pensando..."):
            try:
                # Preparar o histórico para o modelo
                messages = []
                for msg in st.session_state.messages:
                    if msg["role"] == "user":
                        messages.append(HumanMessage(content=msg["content"]))
                    else:
                        messages.append(AIMessage(content=msg["content"]))
                
                # Gerar resposta
                response = llm.invoke(messages)
                assistant_response = response.content
                
                # Exibir resposta
                st.write(assistant_response)
                
                # Adicionar resposta ao histórico
                st.session_state.messages.append({
                    "role": "assistant", 
                    "content": assistant_response
                })
                
            except Exception as e:
                st.error(f"Erro ao gerar resposta: {str(e)}")

Vamos executar o comando no terminal:

>> streamlit run app.py

Esse comando executa o arquivo app.py e abre uma interface web interativa no navegador usando o Streamlit, na porta 8501.

Acesse http://localhost:8501 e insira sua API_KEY do Google no menu à esquerda, e você poderá conversar com o chatbot:

Esse é um exemplo simples e funcional de um chatbot completo: LLM rodando por trás e uma interface web criada com Streamlit!

Agora, vamos para o próximo passo: criar um chatbot com RAG, onde o usuário pode conversar com seus documentos. Dê um CTRL+C no terminal para parar a execução atual.

Para isso, precisamos instalar mais algumas bibliotecas:

pip install langchain_community PyPDF2	python-docx sentence-transformers

Vamos agora criar um arquivo chamado app_rag.py e adicionar esse conteúdo:

Avatar de User

Continue a ler este post gratuitamente, cortesia de Elisa Terumi.

Ou adquira uma subscrição paga.
© 2026 Elisa Terumi Rubel Schneider · Privacidade ∙ Termos ∙ Aviso de cobrança
Comece o seu SubstackObtenha o App
Substack é o lar da grande cultura