Have a problem with "Tried to use SessionInfo before it was initialized"

I have problem with this message a start app. My project is private. But I send my teste app here:

import streamlit as st
import openai
from langchain import OpenAI, PromptTemplate, LLMChain
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains.question_answering import load_qa_chain
from docx import Document
from dotenv import load_dotenv, find_dotenv
from pathlib import Path
import queue
import time
from streamlit_webrtc import WebRtcMode, webrtc_streamer
import pydub
from questions import questions

# Configuração da API OpenAI
_ = load_dotenv(find_dotenv())
client = openai.Client()

PASTA_TEMP = Path(__file__).parent / 'temp'
PASTA_TEMP.mkdir(exist_ok=True)
ARQUIVO_AUDIO_TEMP = PASTA_TEMP / 'audio.mp3'
ARQUIVO_MIC_TEMP = PASTA_TEMP / 'mic.mp3'

client = openai.OpenAI()

# TRANSCREVE MICROFONE =====================================
def transcreve_audio(caminho_audio, prompt):
    with open(caminho_audio, 'rb') as arquivo_audio:
        transcricao = client.audio.transcriptions.create(
            model='whisper-1',
            language='pt',
            response_format='text',
            file=arquivo_audio,
            prompt=prompt,
        )
        return transcricao

@st.cache_data
def get_ice_servers():
    return [{'urls': ['stun:stun.l.google.com:19302']}]


def adiciona_chunck_de_audio(frames_de_audio, chunck_audio):
    for frame in frames_de_audio:
        sound = pydub.AudioSegment(
            data=frame.to_ndarray().tobytes(),
            sample_width=frame.format.bytes,
            frame_rate=frame.sample_rate,
            channels=len(frame.layout.channels)
        )
        chunck_audio += sound
    return chunck_audio


def transcreve_tab_mic():
    prompt_mic = st.text_input(
        '(opcional) Digite o seu prompt', key='input_mic', label_visibility="visible")
    webrtx_ctx = webrtc_streamer(
        key='recebe_audio',
        mode=WebRtcMode.SENDONLY,
        audio_receiver_size=1024,
        media_stream_constraints={'video': False, 'audio': True}
    )

    if not webrtx_ctx.state.playing:
        st.write(st.session_state['transcricao_mic'])
        return

    container = st.empty()
    container.markdown('Comece a falar...')
    chunck_audio = pydub.AudioSegment.empty()
    tempo_ultima_transcricao = time.time()
    st.session_state['transcricao_mic'] = ''
    while True:
        if webrtx_ctx.audio_receiver:
            try:
                frames_de_audio = webrtx_ctx.audio_receiver.get_frames(
                    timeout=1)
            except queue.Empty:
                time.sleep(0.1)
                continue
            chunck_audio = adiciona_chunck_de_audio(
                frames_de_audio, chunck_audio)

            agora = time.time()
            if len(chunck_audio) > 0 and agora - tempo_ultima_transcricao > 5:
                tempo_ultima_transcricao = agora
                chunck_audio.export(ARQUIVO_MIC_TEMP)
                transcricao = transcreve_audio(ARQUIVO_MIC_TEMP, prompt_mic)
                st.session_state['transcricao_mic'] += transcricao
                container.write(st.session_state['transcricao_mic'])
                chunck_audio = pydub.AudioSegment.empty()
        else:
            break


# TRANSCREVE AUDIO =====================================
def transcreve_tab_audio():
    arquivo_audio = st.file_uploader(
        'Adicione um arquivo de áudio .mp3', type=['mp3'])
    if not arquivo_audio is None:
        transcricao = client.audio.transcriptions.create(
            model='whisper-1',
            language='pt',
            response_format='text',
            file=arquivo_audio,
        )
        st.write(transcricao)

# Função para gerar texto usando GPT
def generate_text(prompt):
    llm = OpenAI(temperature=0.7)
    template = """
    Você é um assistente especializado em patentes. Use as informações fornecidas para gerar um texto apropriado:
    {prompt}
    """
    prompt_template = PromptTemplate(
        template=template, input_variables=["prompt"])
    llm_chain = LLMChain(prompt=prompt_template, llm=llm)
    return llm_chain.run(prompt)

# Função para salvar em DOCX
def save_to_docx(content):
    doc = Document()
    for section, text in content.items():
        doc.add_heading(section, level=1)
        doc.add_paragraph(text)
    doc.save("download/patente.docx")

# Inicialização do estado da sessão
if 'page' not in st.session_state:
    st.session_state.page = 0
if 'responses' not in st.session_state:
    st.session_state.responses = {}
if 'current_generated_text' not in st.session_state:
    st.session_state.current_generated_text = ""
if not 'transcricao_mic' in st.session_state:
    st.session_state['transcricao_mic'] = ''

# Função principal do Streamlit
def main():
    st.empty()  # Limpa o cache
    st.title("ISAIA'S - Assistente de Redação de Patentes")

    # Sidebar com mensagem de boas-vindas
    st.sidebar.header("SEJA BEM VINDO!")
    st.sidebar.write("Olá! Eu sou a **IA Isaia's** e estou aqui para te ajudar a descrever sua redação de patente. Vamos tornar esse processo divertido e eficiente, e em pouco tempo você terá seu projeto pronto para ser submetido ao INPI - Instituto Nacional de Propriedade Intelectual.")
    st.sidebar.markdown(
        "Para isso, preciso que você descreva seu invento com o máximo de detalhes possível em cada etapa. Todas as informações são importantes. Vamos começar?")

    if st.session_state.page < len(questions):
        current_question = questions[st.session_state.page]
        st.write(f"Pergunta {st.session_state.page + 1} de {len(questions)}")
        st.subheader(
            f"Pergunta {st.session_state.page + 1}: {current_question}")

        # Tratamento especial para a primeira pergunta
        if st.session_state.page == 0:
            st.write(
                "*Selecione uma ou mais opções de acordo com o seu projeto e o que visa buscar a proteção.*")
            options = st.multiselect(
                "", ["Produto", "Equipamento", "Processo", "Sistema"])
            text_input = ", ".join(options) if options else ""
        else:
            # Opção de entrada de texto
            text_input = st.text_area(
                "Digite sua resposta: ", label_visibility="visible")

        col1, col2 = st.columns(2)

        with col1:
            if st.button("VOLTAR") and st.session_state.page > 0:
                st.session_state.responses[current_question] = text_input
                st.session_state.page -= 1
                st.session_state.current_generated_text = ""
                st.experimental_rerun()
        with col2:
            if st.button("AVANÇAR"):
                if text_input:
                    st.session_state.responses[current_question] = text_input
                    st.session_state.page += 1
                    st.session_state.current_generated_text = ""
                    st.experimental_rerun()
                else:
                    st.warning(
                        "Por favor, forneça uma resposta antes de avançar.")

        # Botão para gerar texto, exceto na primeira pergunta
        if st.session_state.page > 0:
            if st.button("Gerar Texto com IA"):
                st.session_state.current_generated_text = generate_text(
                    text_input)
                st.experimental_rerun()

        tab_mic, tab_audio = st.tabs(['Microfone', 'Áudio'])
        with tab_mic:
            st.session_state.responses[current_question] = transcreve_tab_mic()
            st.session_state.page += 1
            st.session_state.current_generated_text = ""
            st.experimental_rerun()
        with tab_audio:
            st.session_state.responses[current_question] = transcreve_tab_audio(
            )
            st.session_state.page += 1
            st.session_state.current_generated_text = ""
            st.experimental_rerun()

        # Exibição do texto gerado
        if st.session_state.current_generated_text:
            st.write("Texto gerado:")
            st.text_area("", st.session_state.current_generated_text,
                         height=300, label_visibility="visible")

            col1, col2 = st.columns(2)
            with col1:
                if st.button("Aceitar e Avançar"):
                    st.session_state.responses[
                        f"{current_question} (Gerado por IA)"] = st.session_state.current_generated_text
                    st.session_state.page += 1
                    st.session_state.current_generated_text = ""
                    st.experimental_rerun()
            with col2:
                if st.button("Reescrever"):
                    st.session_state.current_generated_text = generate_text(
                        text_input)
                    st.experimental_rerun()
    else:
        st.write("Todas as perguntas foram respondidas!")
        if st.button("Gerar Documento"):
            save_to_docx(st.session_state.responses)
            st.success("Documento gerado com sucesso!")

if __name__ == "__main__":
    main()

Version: Python 3.11

ipykernel==6.29.4

langchain==0.1.16

langchain-community==0.0.34

langchain-openai==0.1.4

openai==1.24.0

pypdf==4.2.0

streamlit==1.29.0

streamlit_authenticator==0.2.3

psycopg2==2.9.9

python-dotenv==1.0.1

faiss-cpu==1.8.0

streamlit_webrtc

pydub

python-docx==1.1.2

Document

exceptions

hi there!
I’m having the same problem! Did you get it to work?