chat_workflow.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import json
  2. # from Log import logger
  3. from app.models.v2.session_model import ChatData
  4. from app.service.v2.app_driver.chat_base import ChatBase
  5. class ChatWorkflow(ChatBase):
  6. async def chat_completions(self, url, data, headers):
  7. complete_response = ""
  8. async for line in self.http_stream(url, data, headers):
  9. if line.startswith("data:"):
  10. complete_response = line.strip("data:").strip()
  11. elif line.startswith("Error: "):
  12. yield {"event": "error", "message": line}
  13. else:
  14. complete_response += line.strip()
  15. try:
  16. json_data = json.loads(complete_response)
  17. # 处理 JSON 数据
  18. # print(json_data)
  19. complete_response = ""
  20. yield json_data
  21. except json.JSONDecodeError as e:
  22. # logger.info("Invalid JSON data------------------")
  23. print(e)
  24. @staticmethod
  25. async def request_data(query: str, conversation_id: str, user: str, chat_data: ChatData) -> dict:
  26. data = {"response_mode": "streaming",
  27. "conversation_id": conversation_id,
  28. "user": user}
  29. inputs = {}
  30. # files = []
  31. if hasattr(chat_data, "inputs"):
  32. inputs = chat_data.inputs
  33. if hasattr(chat_data, "files"):
  34. files = chat_data.files
  35. data["files"] = files
  36. data["inputs"] = inputs
  37. return data
  38. if __name__ == "__main__":
  39. async def aa():
  40. chat_id = "16954f6d-c1e6-4a0b-b371-363c28e8a48b"
  41. token = "app-79ndndjNAFSV3qTuDAjDwuSO"
  42. base_url = "http://192.168.20.116"
  43. url = f"{base_url}/v1/chat-messages"
  44. chat = ChatAgent()
  45. data = {
  46. "inputs": {},
  47. "query": "你好,你能做什么?",
  48. "response_mode": "streaming",
  49. "conversation_id": "",
  50. "user": "1",
  51. "files": []
  52. }
  53. headers = {
  54. 'Content-Type': 'application/json',
  55. 'Authorization': f"Bearer {token}"
  56. }
  57. async for ans in chat.chat_completions(url, data, headers):
  58. print(ans)
  59. import asyncio
  60. asyncio.run(aa())