Понимание состояния сеанса и потока управления в приложении Streamlit ChatbotPython

Программы на Python
Anonymous
Понимание состояния сеанса и потока управления в приложении Streamlit Chatbot

Сообщение Anonymous »

Ссылка на код Github
Ссылка выше — это код GitHub приложения чат-бота, использующегоstreamlit. Хотя он работает нормально, у меня есть несколько вопросов относительно Streamlit.
  • Какова цель фразы «если «сообщений» нет в st.session_state:» ?
    Почему я не могу просто использовать st.session_state['messages'] = [{'role': 'assistant', 'content': 'Hello?'}]
    Потому что, когда я запускаю приложение впервые, я думаю, очевидно, что сообщения нет. Так какой в ​​этом смысл?
  • Я не понимаю, почему этот код должен быть в операторе if. Насколько я знаю, если оператор выполняется один раз. Но в приложенииstreamlit оно запускается несколько раз
    и продолжает диалог. Я предполагаю, что внутри или снаружи оператора if должен быть цикл for, но без него он работает нормально. Можете ли вы объяснить, почему?
if prompt := st.chat_input():
st.session_state['messages'].append({'role': 'user', 'content': prompt})
st.chat_message('user').write(prompt)

response = client.chat.completions.create(
model='gemma2-9b-it',
messages=context + st.session_state['messages']
)

msg = response.choices[0].message.content
st.session_state['messages'].append({'role': 'assistant', 'content': msg})
st.chat_message('assistant').write(msg)


Подробнее здесь: https://stackoverflow.com/questions/789 ... hatbot-app

Вернуться в «Python»