LiuHua 336a639164
SDK for session (#2312)
### What problem does this PR solve?

SDK for session
#1102 

### Type of change

- [x] New Feature (non-breaking change which adds functionality)

---------

Co-authored-by: Feiue <10215101452@stu.ecun.edu.cn>
Co-authored-by: Kevin Hu <kevinhu.sh@gmail.com>
2024-09-09 17:18:08 +08:00

65 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 assistantcan I help you?"}]
self.assistant_id = None
super().__init__(rag, res_dict)
def chat(self, question: str, stream: bool = False):
res = self.post("/session/completion",
{"id": self.id, "question": question, "stream": stream, "messages": self.messages})
res = res.text
response_lines = res.splitlines()
message_list = []
for line in response_lines:
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",
"reference": reference
}
message = Message(self.rag, temp_dict)
message_list.append(message)
return message_list
def save(self):
res = self.post("/session/save",
{"id": self.id, "dialog_id": self.assistant_id, "name": self.name, "message": self.messages})
res = res.json()
if res.get("retmsg") == "success": return True
raise Exception(res.get("retmsg"))
class Message(Base):
def __init__(self, rag, res_dict):
self.content = "您好我是您的助手小樱长得可爱又善良can I help you?"
self.reference = []
self.role = "assistant"
self.prompt=None
super().__init__(rag, res_dict)
class Chunk(Base):
def __init__(self, rag, res_dict):
self.id = None
self.content = None
self.document_id = None
self.document_name = None
self.knowledgebase_id = None
self.image_id = None
self.similarity = None
self.vector_similarity = None
self.term_similarity = None
self.positions = None
super().__init__(rag, res_dict)