Rohan Kataria commited on
Commit
72af804
β€’
1 Parent(s): 5b0aecb
Files changed (2) hide show
  1. app.py +1 -1
  2. src/main.py +17 -9
app.py CHANGED
@@ -5,7 +5,7 @@ import os
5
  # Constants
6
  ROLE_USER = "user"
7
  ROLE_ASSISTANT = "assistant"
8
- MAX_MESSAGES = 4
9
 
10
  st.set_page_config(page_title="Chat with Git", page_icon="🦜")
11
  st.title("Chat with Git πŸ€–πŸ“š")
 
5
  # Constants
6
  ROLE_USER = "user"
7
  ROLE_ASSISTANT = "assistant"
8
+ MAX_MESSAGES = 5
9
 
10
  st.set_page_config(page_title="Chat with Git", page_icon="🦜")
11
  st.title("Chat with Git πŸ€–πŸ“š")
src/main.py CHANGED
@@ -13,7 +13,7 @@ from langchain.chat_models import ChatOpenAI
13
  from langchain.document_loaders import TextLoader
14
  from langchain.document_loaders import GitLoader
15
  from langchain.llms import OpenAI
16
- from langchain.memory import ConversationBufferMemory
17
  from langchain.vectorstores import Chroma
18
  from langchain.embeddings.openai import OpenAIEmbeddings
19
  from langchain.prompts import PromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate, AIMessagePromptTemplate, ChatPromptTemplate
@@ -81,12 +81,17 @@ def retreival(vector_store, k):
81
  llm = ChatOpenAI(model=llm_name, temperature=0)
82
 
83
  # Define the system message template
 
 
 
84
  system_template = """You're a code summarisation assistant. Given the following extracted parts of a long document as "CONTEXT" create a final answer.
85
  If you don't know the answer, just say that you don't know. Don't try to make up an answer.
86
  Only If asked to create a "DIAGRAM" for code use "MERMAID SYNTAX LANGUAGE" in your answer from "CONTEXT" and "CHAT HISTORY" with a short explanation of diagram.
87
 
88
  CONTEXT: {context}
89
  =======
 
 
90
  FINAL ANSWER:"""
91
 
92
  human_template = """{question}"""
@@ -104,11 +109,18 @@ def retreival(vector_store, k):
104
  PROMPT = ChatPromptTemplate.from_messages(messages)
105
 
106
  #Creating memory
107
- memory = ConversationBufferMemory(
 
 
 
 
 
 
108
  memory_key="chat_history",
109
  input_key="question",
110
  output_key="answer",
111
- return_messages=True)
 
112
 
113
  #Creating the retriever, this can also be a contextual compressed retriever
114
  retriever = vector_store.as_retriever(search_type="similarity", search_kwargs={"k": k}) #search_type can be "similarity" or "mmr"
@@ -134,13 +146,9 @@ class ConversationalResponse:
134
  self.chunks = split_data(self.data)
135
  self.vector_store = ingest_chunks(self.chunks)
136
  self.chain_type = "stuff"
137
- self.k = 15
138
  self.chain = retreival(self.vector_store, self.k)
139
 
140
  def __call__(self, question):
141
- chat_history = []
142
- agent = self.chain({"question": question
143
- , "chat_history": chat_history
144
- })
145
- chat_history.append((question, agent['answer']))
146
  return agent['answer']
 
13
  from langchain.document_loaders import TextLoader
14
  from langchain.document_loaders import GitLoader
15
  from langchain.llms import OpenAI
16
+ from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemory
17
  from langchain.vectorstores import Chroma
18
  from langchain.embeddings.openai import OpenAIEmbeddings
19
  from langchain.prompts import PromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate, AIMessagePromptTemplate, ChatPromptTemplate
 
81
  llm = ChatOpenAI(model=llm_name, temperature=0)
82
 
83
  # Define the system message template
84
+ #Adding CHAT HISTORY to the System template explicitly because mainly Chat history goes to Condense the Human Question with Backround (Not template), but System template goes straight the LLM Chain
85
+ #Explicitly adding chat history to access previous chats and answer "what is my previous question?"
86
+ #Great thing this also sends the chat history to the LLM Model along with the context and question
87
  system_template = """You're a code summarisation assistant. Given the following extracted parts of a long document as "CONTEXT" create a final answer.
88
  If you don't know the answer, just say that you don't know. Don't try to make up an answer.
89
  Only If asked to create a "DIAGRAM" for code use "MERMAID SYNTAX LANGUAGE" in your answer from "CONTEXT" and "CHAT HISTORY" with a short explanation of diagram.
90
 
91
  CONTEXT: {context}
92
  =======
93
+ CHAT HISTORY: {chat_history}
94
+ =======
95
  FINAL ANSWER:"""
96
 
97
  human_template = """{question}"""
 
109
  PROMPT = ChatPromptTemplate.from_messages(messages)
110
 
111
  #Creating memory
112
+ # memory = ConversationBufferMemory(
113
+ # memory_key="chat_history",
114
+ # input_key="question",
115
+ # output_key="answer",
116
+ # return_messages=True)
117
+
118
+ memory = ConversationBufferWindowMemory(
119
  memory_key="chat_history",
120
  input_key="question",
121
  output_key="answer",
122
+ return_messages=True,
123
+ k=5)
124
 
125
  #Creating the retriever, this can also be a contextual compressed retriever
126
  retriever = vector_store.as_retriever(search_type="similarity", search_kwargs={"k": k}) #search_type can be "similarity" or "mmr"
 
146
  self.chunks = split_data(self.data)
147
  self.vector_store = ingest_chunks(self.chunks)
148
  self.chain_type = "stuff"
149
+ self.k = 10
150
  self.chain = retreival(self.vector_store, self.k)
151
 
152
  def __call__(self, question):
153
+ agent = self.chain(question)
 
 
 
 
154
  return agent['answer']