leo-bourrel commited on
Commit
27a479a
·
1 Parent(s): 5b28103

feat: add relation between chat_history and documents

Browse files
Files changed (2) hide show
  1. app.py +2 -1
  2. chat_history.py +24 -0
app.py CHANGED
@@ -10,7 +10,7 @@ from langchain.chains import ConversationalRetrievalChain
10
  from langchain.chains.conversation.memory import ConversationBufferMemory
11
  from langchain.embeddings import GPT4AllEmbeddings
12
 
13
- from chat_history import insert_chat_history
14
  from css import load_css
15
  from custom_pgvector import CustomPGVector
16
  from message import Message
@@ -80,6 +80,7 @@ def on_click_callback():
80
  )
81
  st.session_state.token_count += cb.total_tokens
82
  history_id = insert_chat_history(conn, human_prompt, llm_response["answer"])
 
83
 
84
 
85
  load_css()
 
10
  from langchain.chains.conversation.memory import ConversationBufferMemory
11
  from langchain.embeddings import GPT4AllEmbeddings
12
 
13
+ from chat_history import insert_chat_history, insert_chat_history_articles
14
  from css import load_css
15
  from custom_pgvector import CustomPGVector
16
  from message import Message
 
80
  )
81
  st.session_state.token_count += cb.total_tokens
82
  history_id = insert_chat_history(conn, human_prompt, llm_response["answer"])
83
+ insert_chat_history_articles(conn, history_id, llm_response["source_documents"])
84
 
85
 
86
  load_css()
chat_history.py CHANGED
@@ -1,3 +1,6 @@
 
 
 
1
  import sqlalchemy
2
  from sqlalchemy import text
3
  from sqlalchemy.orm import Session
@@ -22,3 +25,24 @@ def insert_chat_history(conn: sqlalchemy.engine.Connection, query: str, answer:
22
  last_row_id = result.fetchone()[0]
23
  conn.commit()
24
  return last_row_id
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ from typing import List
3
+
4
  import sqlalchemy
5
  from sqlalchemy import text
6
  from sqlalchemy.orm import Session
 
25
  last_row_id = result.fetchone()[0]
26
  conn.commit()
27
  return last_row_id
28
+
29
+
30
+ def insert_chat_history_articles(
31
+ conn: sqlalchemy.engine.Connection, chat_history_id: int, articles: List[str]
32
+ ):
33
+ source_documents = [json.loads(article.page_content) for article in articles]
34
+
35
+ with Session(conn) as conn:
36
+ conn.execute(
37
+ text(
38
+ "INSERT INTO chat_history_articles (chat_history_id, article_id) VALUES (:chat_history_id, :article_id) ON CONFLICT DO NOTHING;"
39
+ ),
40
+ [
41
+ {
42
+ "chat_history_id": chat_history_id,
43
+ "article_id": article["id"],
44
+ }
45
+ for article in source_documents
46
+ ],
47
+ )
48
+ conn.commit()