Как обновить отображение истории чата при обновлении страницы?Python

Программы на Python
Ответить
Anonymous
 Как обновить отображение истории чата при обновлении страницы?

Сообщение Anonymous »

Мой интерфейс чата с использованием Gradio:

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

import sqlite3
import gradio as gr
import time

formatted_history = []
sqlite = None

def loadHistoryFromDB():
global sqlite,formatted_history

sql="SELECT role,message from chat_history order by created_at_unix ASC Limit 10";
cur = sqlite.cursor()
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
formatted_history.append({
'role':row[0],
'content':row[1]
})

def chatHandler(message,history,generate_image):
sql = "INSERT INTO chat_history (role, message, created_at_unix) VALUES (?, ?, ?)"
current_unix_time = int(time.time())  # Get the current Unix timestamp

response = f"Hello {message}"

sqlite.execute(sql, ('user', message, int(time.time())))
time.sleep(3)
sqlite.execute(sql, ('assistant', response, int(time.time())))
sqlite.commit()

yield response

if __name__ == "__main__":

sqlite = sqlite3.connect("chat_history.db",check_same_thread=False)
loadHistoryFromDB()

with gr.Blocks() as demo:
chatbot = gr.Chatbot(type="messages", value=formatted_history)
chat = gr.ChatInterface(chatHandler,type="messages",chatbot=chatbot)

demo.launch()
Я использую sqlite3 для хранения истории чата. Но при обновлении страницы не удается получить недавно отправленные сообщения. Я получаю только те, которые уже получены из базы данных.
Ошибка возникает, когда:
  • Я запускаю свой скрипт Python.
  • Я посещаю страницу, указанную Gradio.
  • Я размещаю сообщение.
  • Затем я обновляю страницу .
Как я могу показывать недавно отправленные сообщения при обновлении страницы, а не только историю уже загружено? Я пробовал:

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

import sqlite3
import gradio as gr
import time

formatted_history = []
sqlite = None

def loadHistoryFromDB():
global sqlite,formatted_history

sql="SELECT role,message from chat_history order by created_at_unix ASC Limit 10";
cur = sqlite.cursor()
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
formatted_history.append({
'role':row[0],
'content':row[1]
})

def chatHandler(message,history,generate_image):
sql = "INSERT INTO chat_history (role, message, created_at_unix) VALUES (?, ?, ?)"
current_unix_time = int(time.time())  # Get the current Unix timestamp

response = f"Hello {message}"
history.append({"role":'user','content':message})
sqlite.execute(sql, ('user', message, int(time.time())))
time.sleep(3)
history.append({"role":'assistant','content':response})
sqlite.execute(sql, ('assistant', response, int(time.time())))
sqlite.commit()

yield response

if __name__ == "__main__":

sqlite = sqlite3.connect("chat_history.db",check_same_thread=False)
loadHistoryFromDB()

with gr.Blocks() as demo:
chatbot = gr.Chatbot(type="messages", value=formatted_history)
chat = gr.ChatInterface(chatHandler,type="messages",chatbot=chatbot)

demo.launch()
Но мне по-прежнему не удается загрузить самую последнюю историю чата при обновлении.

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

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

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

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

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

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