| | |
| | | import json |
| | | |
| | | from Log import logger |
| | | from app.service.v2.app_driver.chat_base import ChatBase |
| | | |
| | | |
| | | class ChatDialog(ChatBase): |
| | | |
| | | async def chat_completions(self, url, data, headers): |
| | | complete_response = "" |
| | | async for line in self.http_stream(url, data, headers): |
| | | # print(line) |
| | | if line.startswith("data:"): |
| | | complete_response = line.strip("data:").strip() |
| | | else: |
| | | complete_response += line.strip() |
| | | try: |
| | | json_data = json.loads(complete_response) |
| | | # 处理 JSON 数据 |
| | | # print(json_data) |
| | | complete_response = "" |
| | | yield json_data |
| | | |
| | | def __init__(self, token): |
| | | self.token = token |
| | | except json.JSONDecodeError as e: |
| | | # print(e) |
| | | # print(complete_response) |
| | | logger.info("Invalid JSON data------------------") |
| | | # print(e) |
| | | |
| | | async def chat_sessions(self, url, data, headers): |
| | | |
| | | res = await self.http_post(url, data, headers) |
| | | if res.status_code == 200: |
| | | return res.json() |
| | | else: |
| | | return {} |
| | | |
| | | |
| | | async def get_headers(self): |
| | | |
| | | @staticmethod |
| | | async def request_data(question, session_id=""): |
| | | return { |
| | | 'Content-Type': 'application/json', |
| | | 'Authorization': f'Bearer {self.token}' |
| | | "question": question, |
| | | "stream": True, |
| | | "session_id": session_id |
| | | } |
| | | |
| | | @staticmethod |
| | | async def complex_request_data(question, dataset_ids, session_id=""): |
| | | return { |
| | | "question": question, |
| | | "stream": True, |
| | | "session_id": session_id, |
| | | "kb_ids": dataset_ids |
| | | } |
| | | |
| | | |
| | | async def chat_completions(self, url, data, headers): |
| | | if __name__ == "__main__": |
| | | async def aa(): |
| | | chat_id = "6b8ee426c67511efb1510242ac1b0006" |
| | | token = "ragflow-YzMzE1NDRjYzMyZjExZWY5ZjkxMDI0Mm" |
| | | base_url = "http://192.168.20.116:11080" |
| | | url = f"{base_url}/api/v1/chats/{chat_id}/completions" |
| | | chat = ChatDialog(token) |
| | | data = { |
| | | "question": "电网技术总结300字", |
| | | "stream": True, |
| | | "session_id": "9969c152cce411ef8a140242ac1b0002" |
| | | } |
| | | headers = { |
| | | 'Content-Type': 'application/json', |
| | | 'Authorization': f"Bearer {token}" |
| | | } |
| | | async for ans in chat.chat_completions(url, data, headers): |
| | | print(ans) |
| | | |
| | | async for rag_response in self.http_stream(url, data, headers): |
| | | |
| | | yield rag_response |
| | | import asyncio |
| | | |
| | | asyncio.run(aa()) |