From 6e5771b640916a3725a0152e234ce262798a7fa7 Mon Sep 17 00:00:00 2001 From: ACBBZ Date: Mon, 25 Mar 2024 08:22:56 +0000 Subject: [PATCH] add tesou.py --- src/blackbox/blackbox_factory.py | 5 +++- src/blackbox/tesou.py | 41 ++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 src/blackbox/tesou.py diff --git a/src/blackbox/blackbox_factory.py b/src/blackbox/blackbox_factory.py index 7014a84..f4a6f36 100644 --- a/src/blackbox/blackbox_factory.py +++ b/src/blackbox/blackbox_factory.py @@ -6,7 +6,7 @@ from .audio_to_text import AudioToText from .blackbox import Blackbox from .calculator import Calculator from .text_to_audio import TextToAudio - +from .tesou import Tesou class BlackboxFactory: @@ -18,6 +18,7 @@ class BlackboxFactory: self.calculator = Calculator() self.audio_to_text = AudioToText() self.text_to_audio = TextToAudio() + self.tesou = Tesou() def __call__(self, *args, **kwargs): return self.processing(*args, **kwargs) @@ -37,4 +38,6 @@ class BlackboxFactory: return self.sentiment if blackbox_name == "sum": return self.sum + if blackbox_name == "tesou": + return self.tesou raise ValueError("Invalid blockbox type") \ No newline at end of file diff --git a/src/blackbox/tesou.py b/src/blackbox/tesou.py new file mode 100755 index 0000000..7dc4892 --- /dev/null +++ b/src/blackbox/tesou.py @@ -0,0 +1,41 @@ +from typing import Any, Coroutine + +from fastapi import Request, Response, status +from fastapi.responses import JSONResponse +from .blackbox import Blackbox + +import requests + +class Tesou(Blackbox): + + def __call__(self, *args, **kwargs): + return self.processing(*args, **kwargs) + + def valid(self, *args, **kwargs) -> bool: + data = args[0] + return isinstance(data, list) + + # 用户输入的数据格式为:[{"user_id": "123", "prompt": "叉烧饭,帮我查询叉烧饭的介绍"}] + def processing(self, id, prompt) -> str: + url = 'http://120.196.116.194:48891/chat/' + + message = { + "user_id": id, + "prompt": prompt, + } + + response = requests.post(url, json=message) + return response + + async def fast_api_handler(self, request: Request) -> Response: + try: + data = await request.json() + print(data) + except: + return JSONResponse(content={"error": "json parse error"}, status_code=status.HTTP_400_BAD_REQUEST) + user_id = data.get("id") + user_prompt = data.get("prompt") + print(user_id, user_prompt) + if user_prompt is None: + return JSONResponse(content={"error": "question is required"}, status_code=status.HTTP_400_BAD_REQUEST) + return JSONResponse(content={"Response": self.processing(user_id, user_prompt)}, status_code=status.HTTP_200_OK) \ No newline at end of file