Search
Close this search box.
Chatbot super inteligente com LLM e Streamlit
Chatbot Qwen2.5

Posts Relacionados:

Com o novíssimo lançamento da família Qwen2.5, nada melhor do que usar um de seus LLMs abertos para criar um chatbot inteligente e descomplicado com Streamlit.

Receba nossa newsletter

ChatBot Inteligente com Qwen2.5

Chatbots são uma das aplicações mais importantes de IA. Até recentemente, eles eram pouco eficientes. Mas, com o avanço impressionante dos LLMs, hoje eles têm desempenhos fantásticos. Porém, integrar LLMs como os GPTs da OpenAI num aplicativo pode ter um custo alto. Felizmente, vários modelos abertos já estão disponíveis (por exemplo, aqui e aqui).

A família Qwen2.5 é o mais novo lançamento do Alibaba. Formada por diversos LLMs, ela possui vários modelos liberados com licença Apache2.0 prontos para serem integrados em aplicativos Python. Para comemorar a novidade, usaremos um de seus LLMs para criar um chatbot super, mega simples com Streamlit.

Bibliotecas e LLM

Usaremos apenas 2 bibliotecas: Streamlit e Ollama. Streamlit será usado para criar um aplicativo web que conterá nosso chatbot. Para instalar a biblioteca com pip, o comando é:

				
					pip install streamlit
				
			

Ollama servirá para executar o LLM. Para instalar o Ollama, consulte as instruções aqui e veja se seu computador tem os requisitos mínimos.

Com as duas bibliotecas instaladas, baixe o modelo que será usado. O Qwen2.5 tem vários tamanhos. Utilizaremos o modelo 1.5B. Ele é um modelo pequeno, já na faixa de um SLM. A vantagem de um modelo desse porte é que ele é mais rápido para ser executado e requer menos recursos computacionais. Para baixar o modelo, digite o comando no terminal:

				
					ollama pull qwen2.5:1.5b
				
			

Início do código

Faremos um código bem minimalista. Portanto, num arquivo Python que pode se chamar app.py, importe as bibliotecas necessárias:

				
					import streamlit as st
import ollama
				
			

Depois, inicie um cliente Ollama e selecione o LLM:

				
					# inicia o cliente ollama
client = ollama.Client()
				
			

Nosso chatbot será o mais simples possível. Imitaremos a lógica de aplicativos como Gemini e ChatGPT e o deixaremos totalmente livre para interagir com os usuários. Portanto, precisamos de poucos elementos. Seguiremos instruções do próprio Streamlit explicadas aqui.

Elementos do Streamlit para criar um Chatbot

Para o chatbot em si, primeiro criamos um contêiner para nossas interações e inserimos um título simples.

				
					def main():
    with st.container(border=True):
        st.title("ChatBot Inteligente")
				
			

Depois, inicializamos uma lista que conterá as interações realizadas durante uma sessão. Note que estamos continuando o código acima no mesmo contêiner (copie apenas da linha 5 em diante):

				
					def main():
    with st.container(border=True):
        ...
        
        # inicializa lista para armazenar chat
        if "messages" not in st.session_state:
            st.session_state.messages = []
				
			

A lista definida acima será usada para exibir o histórico de conversas. Para isso, usamos um loop (copie apenas da linha 5 em diante):

				
					def main():
    with st.container(border=True):
        ...

        # Mostra mensagens do chat
        for message in st.session_state.messages:
            with st.chat_message(message["role"]):
                st.markdown(message["content"])

				
			

Chatbot com Qwen2.5 em código

Nessa parte, implementaremos as interações entre usuários do web app e o LLM Qwen2.5-1.5B. Portanto, dando sequência ao código, usaremos elementos chat_input chat_message do Streamlit. Eles funcionam para receber e exibir os prompts do usuário. Os inputs recebidos são adicionados ao histórico de conversas do chat e também é enviado ao LLM para gerar uma resposta:

				
					def main():
    with st.container(border=True):
        ...

        # copie apenas a partir daqui
       if prompt := st.chat_input("Me pergunte qualquer coisa..."):
            # Mostra mensagem do usuário
            st.chat_message("user").markdown(prompt)
            # Adiciona a mensagem na lista de mensagens
            st.session_state.messages.append({"role": "user", "content": prompt})

            # envia a mensagem do usuário ao LLM com Ollama
            response = client.generate(model="qwen2:1.5b", prompt=prompt)
				
			

O passo seguinte é adicionar a resposta do LLM à lista de mensagens e exibi-la no web app (copie apenas a partir da linha 8):

				
					def main():
    with st.container(border=True):
        ...

       if prompt := st.chat_input("Me pergunte qualquer coisa..."):
            ...
            
           # copie apenas a partir daqui
            # Mostra resposta do LLM
            with st.chat_message("assistant"):
                st.markdown(response)
            # Adiciona mensagem do LLM na lista de mensagens
            st.session_state.messages.append({"role": "assistant", "content": response})
				
			

Por fim, definimos o comando para executar o app (apenas linhas 8 e 9 fora da função main()).

				
					def main():
    with st.container(border=True):
        ...

       if prompt := st.chat_input("Me pergunte qualquer coisa..."):
            ...
            
if __name__ == "__main__":
    main()
				
			

Pronto! Para executar o código, o comando é streamlit run app.py. Veja um exemplo de interação do nosso app abaixo.

qwen chatbot

Qwen2.5 domina 29 idiomas (incluindo português), sabe escrever código e é muito inteligente. Se você precisar de um modelo mais potente ou específico do que o LLM usado, pode trocar a versão por outra.

Imagem com IA Generativa – Dia 199

IA generativa img 199

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