image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Carlos CGS
Carlos CGS27/10/2025 07:40
Share

🧠Jarvis com Memória Contextual: lembrando do que foi dito na conversa

    🌌Projeto CodeVerse Python – #43/2025

    👋 Fala, galera dev! 🚀

    Chegamos ao artigo #43 da nossa jornada CodeVersePython2025, e hoje vamos dar mais um passo rumo a um JARVIS ainda mais inteligente e cada vez mais parecido com o original do Tony Stark.

    Nos últimos capítulos, nosso assistente já aprendeu a ouvir, falar, salvar informações e até guardar memórias permanentes em arquivos JSON. Mas agora… é hora de dar um passo a mais na inteligência do Jarvis: ensinar ele a lembrar do que foi dito durante a conversa.

    Sim, hoje vamos criar a memória contextual, ou seja uma mini “RAM” que permite o assistente manter o contexto, lembrar de falas recentes e responder de forma mais natural, igual nós humanos fazemos, ao se lembrar do que foi dito durante uma conversa, assim o jarvis fará, ele se lembrará das utlimas coisas conversadas.

    🦸♂️ Uma comparação rápida com o Jarvis dos filmes

    Vamos então fazer uma comparação bem simples, que vai nos ajudara a contextualizar para que serviria a memória tempoerária do JARVIS, imagine o Tony Stark trabalhando no laboratório. Ele diz:

    “Jarvis, me mostre o novo protótipo da Mark 50.”

    E logo em seguida:

    “Troque o material da perna por titânio.”

    O Jarvis entende automaticamente que o assunto ainda é a Mark 50. Ele não precisa que o Stark repita tudo de novo, citandos sobre o mark 50 e depois fazer seu pedido.

    🧩 Essa é a diferença entre um simples “comando de voz” e uma conversa inteligente. E é exatamente isso que vamos implementar aqui.

    🧩 O que é uma memória contextual?

    Pense na memória contextual como a memória de curto prazo do Jarvis. Ela guarda as últimas informações que foram ditas como o nome do usuário, o último comando ou o tema da conversa, mas sem salvar nada em disco.

    Ou seja:

    • 💾 Não é uma memória permanente (como a do artigo #39 com JSON).
    • ⚙️ Funciona apenas durante a execução do programa.
    • 🧠 É o que permite o Jarvis dizer coisas como “Sim, lembro disso, senhor.”

    🐍 Código: Criando a mini memória de curto prazo

    Aqui está o exemplo prático que traz essa inteligência contextual ao nosso assistente, aplicando de forma prática no código:

    import speech_recognition as sr
    import pyttsx3
    import random
    
    engine = pyttsx3.init()
    r = sr.Recognizer()
    
    # Lista que servirá como "memória RAM" do Jarvis
    memoria_contextual = []
    
    def falar(texto):
      engine.say(texto)
      engine.runAndWait()
    
    def lembrar_contexto():
      if memoria_contextual:
          return memoria_contextual[-1]
      else:
          return None
    
    def adicionar_contexto(info):
      memoria_contextual.append(info)
      if len(memoria_contextual) > 5:  # Mantém só as 5 últimas falas
          memoria_contextual.pop(0)
    
    with sr.Microphone() as source:
      falar("Olá, senhor. Em que posso ajudar hoje?")
      audio = r.listen(source)
    
    try:
      comando = r.recognize_google(audio, language="pt-BR").lower()
      print("Você disse:", comando)
    
      if "meu nome é" in comando:
          nome = comando.replace("meu nome é", "").strip()
          adicionar_contexto({"tipo": "nome", "valor": nome})
          falar(f"Prazer, {nome}. Vou me lembrar disso durante nossa conversa.")
    
      elif "qual é o meu nome" in comando:
          ultimo = lembrar_contexto()
          if ultimo and ultimo["tipo"] == "nome":
              falar(f"Seu nome é {ultimo['valor']}, senhor.")
          else:
              falar("Desculpe, ainda não sei o seu nome.")
    
      elif "como eu disse antes" in comando:
          ultimo = lembrar_contexto()
          if ultimo:
              falar(f"Você mencionou {ultimo['valor']} anteriormente, senhor.")
          else:
              falar("Desculpe, não lembro de nada anterior ainda.")
    
      else:
          adicionar_contexto({"tipo": "outro", "valor": comando})
          falar("Entendido, senhor. Informação registrada.")
    
    except:
      falar("Desculpe, não consegui entender.")
    

    🧠 Entendendo o código (de forma simples)

    Tudo começa com a variável memoria_contextual, que é como um bloco de notas temporário. Ela guarda o que o Jarvis ouviu, mas apenas durante a execução, se você fechar o programa, tudo é apagado.

    Depois, a função adicionar_contexto(info) adiciona novas informações e mantém só as últimas 5, simulando o comportamento da memória humana: lembrar o que foi dito há pouco, mas esquecer o que já passou.

    A função lembrar_contexto() devolve o último item guardado, permitindo que o Jarvis diga coisas como “Você mencionou isso há pouco, senhor.”

    E o que acontece quando você fala?

    • Se disser “meu nome é Carlos”, o Jarvis guarda seu nome temporariamente.
    • Se logo depois perguntar “qual é o meu nome?”, ele responde corretamente.
    • Se perguntar “como eu disse antes?”, ele recorda o último item da memória.

    É uma lógica simples, mas poderosa, o primeiro passo para dar consciência de contexto ao nosso assistente.

    🔍 Memória Contextual x Memória Persistente

    👉 Memória Contextual: Existe apenas durante a execução. Serve para manter o contexto da conversa. Exemplo:

    “Jarvis, meu nome é Carlos.” “Qual é o meu nome?” → “Seu nome é Carlos.”

    👉 Memória Persistente (artigo #39): Grava em disco (JSON). Continua existindo mesmo depois que o Jarvis é fechado. Exemplo:

    “Jarvis, lembre que meu time é o Flamengo.” (Fecha o programa e abre de novo) “Jarvis, qual é o meu time?” → “Seu time é o Flamengo, senhor.”

    Essa combinação — contexto temporário + memória permanente — é o que forma a base de sistemas inteligentes modernos como Alexa, Siri e ChatGPT.

    💬 Tornando o diálogo mais humano

    Quer deixar o Jarvis mais natural? Basta adicionar variações de respostas aleatórias, desta forma as respostas dele as suas perguntas se tornam mais naturais e menos mecânicas, afinal nossa conversa não é igual as aulas de ingles onde os prefessores perguntavam "what is your name" e respondíamos "my name is Carlos", usamos respostas diferentes, respondendo a mesma pergunta, assim aplicamos o código abaixo para dar essa versatilidade de respostas:

    respostas = [
      "Claro, senhor. Você já havia me dito isso.",
      "Sim, lembro perfeitamente.",
      "Exato, como o senhor mencionou há pouco."
    ]
    falar(random.choice(respostas)) 
    

    Agora ele deixa de parecer um robô repetitivo e passa a soar mais espontâneo, como o verdadeiro JARVIS.

    🔮 Concluindo...

    Hoje demos um passo importante rumo a um Jarvis com raciocínio próprio. Aprendemos a criar uma mini-RAM de conversa, capaz de lembrar o que foi dito há pouco tempo e responder com base nisso.

    • ✅ Criamos uma memória contextual com listas.
    • ✅ Aprendemos a registrar e recuperar contexto recente.
    • ✅ Entendemos a diferença entre memória temporária e persistente.

    E o mais importante: demos o primeiro passo para um assistente que pensa antes de responder. Nos próximos artigos, vamos estar finalizando nosso projeto jarvis e integrando tudo o que vimos e aplicamos durante todo o ano de 2025. Nas proximas quatro semanas do mes de novembro, vamos juntar todas as peças do quebra cabeça e formar nosso projeto completo.

    No mes de dezembro, vamos aprender a publicar nosso projeto no youtube, fazer gravações dele em execução e edições de video. Pois não adianta nada criarmos um suer projeto, se não sabemos divulga-lo da forma correta.

    ✨ Porque, no final das contas, o Jarvis não é só código. Ele é um reflexo de como a inteligência artificial pode se adaptar à gente — e não o contrário.

    👉 Curtiu o artigo? Então me siga no GitHub e no LinkedIn para acompanhar cada passo do Projeto CodeVersePython2025 e construir o seu próprio assistente pessoal.

    Porque o futuro não é esperar a tecnologia chegar. ⚡ É a gente que cria ele hoje.

    image

    Share
    Recommended for you
    Cognizant - Mobile Developer
    Luizalabs - Back-end com Python
    PcD Tech Bradesco - Java & QA Developer
    Comments (0)