Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import json
  2. from .base import Base
  3. class Session(Base):
  4. def __init__(self, rag, res_dict):
  5. self.id = None
  6. self.name = "New session"
  7. self.messages = [{"role": "assistant", "content": "Hi! I am your assistant,can I help you?"}]
  8. for key,value in res_dict.items():
  9. if key =="chat_id" and value is not None:
  10. self.chat_id = None
  11. self.__session_type = "chat"
  12. if key == "agent_id" and value is not None:
  13. self.agent_id = None
  14. self.__session_type = "agent"
  15. super().__init__(rag, res_dict)
  16. def ask(self, question,stream=True):
  17. if self.__session_type == "agent":
  18. res=self._ask_agent(question,stream)
  19. elif self.__session_type == "chat":
  20. res=self._ask_chat(question,stream)
  21. for line in res.iter_lines():
  22. line = line.decode("utf-8")
  23. if line.startswith("{"):
  24. json_data = json.loads(line)
  25. raise Exception(json_data["message"])
  26. if line.startswith("data:"):
  27. json_data = json.loads(line[5:])
  28. if json_data["data"] is not True:
  29. if json_data["data"].get("running_status"):
  30. continue
  31. answer = json_data["data"]["answer"]
  32. reference = json_data["data"]["reference"]
  33. temp_dict = {
  34. "content": answer,
  35. "role": "assistant"
  36. }
  37. if "chunks" in reference:
  38. chunks = reference["chunks"]
  39. temp_dict["reference"] = chunks
  40. message = Message(self.rag, temp_dict)
  41. yield message
  42. def _ask_chat(self, question: str, stream: bool):
  43. res = self.post(f"/chats/{self.chat_id}/completions",
  44. {"question": question, "stream": True,"session_id":self.id}, stream=stream)
  45. return res
  46. def _ask_agent(self,question:str,stream:bool):
  47. res = self.post(f"/agents/{self.agent_id}/completions",
  48. {"question": question, "stream": True,"session_id":self.id}, stream=stream)
  49. return res
  50. def update(self,update_message):
  51. res = self.put(f"/chats/{self.chat_id}/sessions/{self.id}",
  52. update_message)
  53. res = res.json()
  54. if res.get("code") != 0:
  55. raise Exception(res.get("message"))
  56. class Message(Base):
  57. def __init__(self, rag, res_dict):
  58. self.content = "Hi! I am your assistant,can I help you?"
  59. self.reference = None
  60. self.role = "assistant"
  61. self.prompt = None
  62. self.id = None
  63. super().__init__(rag, res_dict)