Моя полоса прокрутки дает сбой, поскольку новый чат транслируется из LLM в режиме Streamlit.Python

Программы на Python
Ответить
Anonymous
 Моя полоса прокрутки дает сбой, поскольку новый чат транслируется из LLM в режиме Streamlit.

Сообщение Anonymous »

Я создаю приложение для чатаstreamLit, которое помогает общаться с моделью, аналогичной чату gpt. Я пытаюсь передать ответ от LLM. но всякий раз, когда ответ передается в потоковом режиме, чат иногда дает сбои и дергается вверх. Я заметил, что это обычно происходит, когда я использую свою систему Linux, а не Windows. У кого-нибудь есть совет, что делать. Очень признателен.

Код: Выделить всё

def general_chat(user_input):

response_placeholder = st.empty()

streamed_response = ""
try:
blocked_topics = "\n".join([f"Do not answer any questions about: {keyword}" for keyword in key_data])

history_context = "\n".join(f"{chat['role']}: {chat['message']}" for chat in st.session_state.chat_history)

prompt_input = (
f"{history_context}\n"
f"Instructions:\n"
f"{blocked_topics}\n"  # Explicitly define what is off-limits
f"User: {user_input}\n"
f"Assistant:"
)

for chunk in llm.stream(prompt_input):  # Adjust to your LLM's streaming API
streamed_response += chunk
response_placeholder.write(streamed_response)
time.sleep(0.1)

st.session_state.chat_history.append({"role": "assistant", "message": streamed_response.strip()})
except Exception as e:
st.session_state.chat_history.append({"role": "assistant", "message": "Server busy. Please try again later."})
logger.info(str(e))
Вышеупомянутая функция помогает получить ответ от LLM.

Код: Выделить всё

def chat_page():
"""Render the chat page."""
st.markdown(
"""

.st-emotion-cache-1c7y2kd {
flex-direction: row-reverse;
text-align: right;
}

""",
unsafe_allow_html=True,
)
# hide_streamlit_toolbar()
col1, col2 = st.columns([6, 2])
with col1:
st.subheader('ThinkBot')
st.write('Welcome to ThinkBot! I am an AI Chatbot. Choose "General" for general inquiries or '
'select a specific project for project-related questions.')

# Initialize chat history in session state if not present
if 'chat_history' not in st.session_state:
st.session_state.chat_history = []
st.session_state.chat_history.append({"role": "assistant", "message": "How can I help you?"})
# Display chat history
# Display chat history with alignment
bot_image = image_to_base64("images/chat_profile-bot.png")
me_image = image_to_base64("images/chat_profile-me.png")
for idx, chat in enumerate(st.session_state.chat_history):
message_key = f"{chat['role']}_{idx}"  # Unique key based on role and index
if chat["role"] == "user":
# Use st.chat_message for user message
with st.chat_message("user",avatar="images/chat_profile-me.png"):
st.write(chat['message'])
else:
# Use st.chat_message for bot message
with st.chat_message("assistant", avatar="images/chat_profile-bot.png"):
st.write(chat['message'])
# Collect user input
if user_input := st.chat_input(placeholder="Your Message"):
st.session_state.chat_history.append({"role": "user", "message": user_input})
st.session_state.process_input = True
st.rerun()
# Check if we need to process the input
if st.session_state.get("process_input"):
with st.spinner('Processing...'):
general_chat(st.session_state.chat_history[-1]["message"])
st.session_state.process_input = False
st.rerun()
Функция chat_page() помогает создать страницу.
Я уже опробовал несколько методов:
p>
  • streamlit_chat
  • Остановка автоматической прокрутки с помощью
    .stAppScrollToBottomContainer {
    привязка переполнения: нет !important;
    }
Пока ничего не помогло.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -streamlit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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