- import json
 - 
 - from .base import Base
 - 
 - 
 - class Session(Base):
 -     def __init__(self, rag, res_dict):
 -         self.id = None
 -         self.name = "New session"
 -         self.messages = [{"role": "assistant", "content": "Hi! I am your assistant,can I help you?"}]
 -         self.chat_id = None
 -         super().__init__(rag, res_dict)
 - 
 -     def ask(self, question: str, stream: bool = False):
 -         for message in self.messages:
 -             if "reference" in message:
 -                 message.pop("reference")
 -         res = self.post(f"/chats/{self.chat_id}/completions",
 -                         {"question": question, "stream": True,"session_id":self.id}, stream=stream)
 -         for line in res.iter_lines():
 -             line = line.decode("utf-8")
 -             if line.startswith("{"):
 -                 json_data = json.loads(line)
 -                 raise Exception(json_data["message"])
 -             if line.startswith("data:"):
 -                 json_data = json.loads(line[5:])
 -                 if json_data["data"] != True:
 -                     answer = json_data["data"]["answer"]
 -                     reference = json_data["data"]["reference"]
 -                     temp_dict = {
 -                         "content": answer,
 -                         "role": "assistant"
 -                     }
 -                     if "chunks" in reference:
 -                         chunks = reference["chunks"]
 -                         chunk_list = []
 -                         for chunk in chunks:
 -                             new_chunk = {
 -                                 "id": chunk["chunk_id"],
 -                                 "content": chunk["content_with_weight"],
 -                                 "document_id": chunk["doc_id"],
 -                                 "document_name": chunk["docnm_kwd"],
 -                                 "dataset_id": chunk["kb_id"],
 -                                 "image_id": chunk["img_id"],
 -                                 "similarity": chunk["similarity"],
 -                                 "vector_similarity": chunk["vector_similarity"],
 -                                 "term_similarity": chunk["term_similarity"],
 -                                 "positions": chunk["positions"],
 -                             }
 -                             chunk_list.append(new_chunk)
 -                         temp_dict["reference"] = chunk_list
 -                     message = Message(self.rag, temp_dict)
 -                     yield message
 - 
 -     def update(self,update_message):
 -         res = self.put(f"/chats/{self.chat_id}/sessions/{self.id}",
 -                         update_message)
 -         res = res.json()
 -         if res.get("code") != 0:
 -             raise Exception(res.get("message"))
 - 
 - class Message(Base):
 -     def __init__(self, rag, res_dict):
 -         self.content = "Hi! I am your assistant,can I help you?"
 -         self.reference = None
 -         self.role = "assistant"
 -         self.prompt = None
 -         self.id = None
 -         super().__init__(rag, res_dict)
 - 
 - 
 - class Chunk(Base):
 -     def __init__(self, rag, res_dict):
 -         self.id = None
 -         self.content = None
 -         self.document_id = ""
 -         self.document_name = ""
 -         self.dataset_id = ""
 -         self.image_id = ""
 -         self.similarity = None
 -         self.vector_similarity = None
 -         self.term_similarity = None
 -         self.positions = None
 -         super().__init__(rag, res_dict)
 - 
 
 
  |