chat_workflow.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. inputs = []
  27. files = []
  28. if hasattr(chat_data, "inputs"):
  29. inputs = chat_data.inputs
  30. if hasattr(chat_data, "files"):
  31. files = chat_data.files
  32. return {
  33. "inputs":inputs,
  34. "query": query,
  35. "response_mode": "streaming",
  36. "conversation_id": conversation_id,
  37. "user": user,
  38. "files": files
  39. }
  40. if __name__ == "__main__":
  41. async def aa():
  42. chat_id = "16954f6d-c1e6-4a0b-b371-363c28e8a48b"
  43. token = "app-79ndndjNAFSV3qTuDAjDwuSO"
  44. base_url = "http://192.168.20.116"
  45. url = f"{base_url}/v1/chat-messages"
  46. chat = ChatAgent()
  47. data = {
  48. "inputs":{},
  49. "query": "你好,你能做什么?",
  50. "response_mode": "streaming",
  51. "conversation_id": "",
  52. "user": "1",
  53. "files": []
  54. }
  55. headers = {
  56. 'Content-Type': 'application/json',
  57. 'Authorization': f"Bearer {token}"
  58. }
  59. async for ans in chat.chat_completions(url, data, headers):
  60. print(ans)
  61. import asyncio
  62. asyncio.run(aa())