Search
Close this search box.
Chatbot com Gemini API e Streamlit

Posts Relacionados:

Neste post, usaremos a inteligência artificial Gemini acessada através da Gemini API para criar um super chatbot com a ajuda da biblioteca Python Streamlit.

Receba nossa newsletter

gemma 2

Chatbot é uma das aplicações mais versáteis de inteligência artificial. Gemini é a inteligência artificial mais poderosa da Google. Neste post, usaremos a inteligência artificial Gemini acessada através da Gemini API para criar um super chatbot que responde a qualquer questão. Também usaremos a biblioteca Python Streamlit para criar uma interface de usuário (GUI).

Bibliotecas

Usaremos duas bibliotecas: google-generativeai e Streamlit. As instalações com pip podem ser feitas com o comando:

				
					pip install google-generativeai streamlit
				
			

A biblioteca Streamlit também pode ser instalada através da distribuição do Anaconda com o comando:

				
					conda install -c conda-forge streamlit
				
			

Além das bibliotecas, para usar a Gemini API é preciso ter uma API key como explicado aqui.

Chatbot com Gemini API e Streamlit

Crie um arquivo Python chamado chatbot.py. No início do arquivo, importe os pacotes necessários e defina sua API key para usar a Gemini API. No trecho abaixo, não se esqueça de substituir SUA API KEY (linha 5) pela sua key.

				
					import os
import streamlit as st
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "SUA API KEY"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
				
			

 Na sequência, selecionamos o LLM (large language model) do Gemini que usaremos no nosso chatbot. Utilizaremos o gemini-pro.

				
					llm = genai.GenerativeModel('gemini-pro')
				
			

Em seguida, definimos um título para nosso aplicativo.

				
					st.title("Chatbot com Gemini")
				
			

Para testar o código até aqui, salve o arquivo e execute o seguinte comando no terminal: streamlit run chatbot.py. O aplicativo abre diretamente no browser. Por enquanto, ele possui apenas o título.

Na página de seu aplicativo, selecione a opção Always Rerun para ele ser atualizado toda vez que o código Python for salvo.

Streamlit e seus Elementos para Chat

Streamlit oferece vários elementos que facilitam a criação de interfaces gráficas do usuário para chatbots. Um dos elementos que usaremos será o estado da sessão (session_state) para armazenar o histórico do chat para ele aparecer no nosso aplicativo. Primeiro, verificamos se o estado da sessão tem a chave messages indicando que a interação já foi iniciada. Se não tiver, ela será inicializada como uma lista contendo apenas uma frase inicial do bot (content).

				
					
if "messages" not in st.session_state:
    st.session_state.messages = [
        {
            "role":"assistant",
            "content":"Me pergunte qualquer coisa"
        }
    ]
				
			

Depois, adicionamos um for loop para iterar pela lista com o histórico do chat e exibir cada mensagem no contêiner de mensagens do nosso aplicativo.

				
					
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])
				
			

Após essa adição, nosso aplicativo fica assim:

Em seguida, usamos um elemento do tipo chat_input, para receber as questões do usuário do aplicativo.
				
					
query = st.chat_input("Oi, me pergunte qualquer coisa")
				
			

Com o chat_input, nosso aplicativo fica assim:

 As consultas recebidas serão enviadas para o LLM acessado através da Gemini API para gerar uma resposta.

Gemini API para Acessar um LLM

Na sequência, definimos uma função que acessa o LLM através da Gemini API e obtém a resposta para as consultas do usuário. A função também será usada para armazenar as consultas e as respostas da interação.
				
					
def function_llm(query):
    ''' Função que acessa o LLM, gera a resposta e salva a interação.'''

    # acessa o LLM para gerar uma resposta
    response = llm.generate_content(query)

    # Mostra as mensagens do bot
    with st.chat_message("assistant"):
        st.markdown(response.text)

    # Salva as mensagens do usuário
    st.session_state.messages.append(
        {
            "role":"user",
            "content": query
        }
    )

    # Salva as mensagens do bot
    st.session_state.messages.append(
        {
            "role":"assistant",
            "content": response.text
        }
    )
				
			
Após isso, precisamos definir um comando para verificar se existe uma mensagem do usuário no nosso aplicativo. Em caso afirmativo, ela é exibida e a função definida acima é chamada. Esse trecho encerra nosso aplicativo.
				
					
if query:
    # Mostra a mensagem do usuário
    with st.chat_message("user"):
        st.markdown(query)

    # chama a função que acessa o LLM
    function_llm(query)
				
			
Para terminar, salvamos o código e testamos uma interação com o nosso chatbot.
E com isso concluímos nosso chatbot alimentado pela Gemini API. O código mostrado nessa postagem foi baseado neste e neste posts.

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial