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.
Я размещаю сообщение.
Затем я обновляю страницу .
Как я могу показывать недавно отправленные сообщения при обновлении страницы, а не только историю уже загружено? Я пробовал:
Мой интерфейс чата с использованием Gradio: [code]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
with gr.Blocks() as demo: chatbot = gr.Chatbot(type="messages", value=formatted_history) chat = gr.ChatInterface(chatHandler,type="messages",chatbot=chatbot)
demo.launch() [/code] Я использую sqlite3 для хранения истории чата. Но при обновлении страницы не удается получить недавно отправленные сообщения. Я получаю только те, которые уже получены из базы данных. Ошибка возникает, когда: [list] [*]Я запускаю свой скрипт Python. [*]Я посещаю страницу, указанную Gradio. [*]Я размещаю сообщение. [*]Затем я обновляю страницу . [/list] Как я могу показывать недавно отправленные сообщения при обновлении страницы, а не только историю уже загружено? Я пробовал: [code]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