feat: text_and_image blockbox

This commit is contained in:
superobk
2024-04-25 14:57:08 +08:00
parent 21d159de9b
commit 201d0f374c
3 changed files with 38 additions and 3 deletions

View File

@ -10,6 +10,7 @@ from .text_to_audio import TextToAudio
from .tesou import Tesou
from .fastchat import Fastchat
from .g2e import G2E
from .text_and_image import TextAndImage
class BlackboxFactory:
@ -25,6 +26,7 @@ class BlackboxFactory:
self.fastchat = Fastchat()
self.audio_chat = AudioChat(self.asr, self.tesou, self.tts)
self.g2e = G2E()
self.text_and_image = TextAndImage()
def __call__(self, *args, **kwargs):
return self.processing(*args, **kwargs)
@ -52,4 +54,6 @@ class BlackboxFactory:
return self.audio_chat
if blackbox_name == "g2e":
return self.g2e
if blackbox_name == 'text_and_image':
return self.text_and_image
raise ValueError("Invalid blockbox type")

View File

@ -22,7 +22,7 @@ class G2E(Blackbox):
if context == None:
context = []
url = 'http://120.196.116.194:48890/v1'
#url = 'http://120.196.116.194:48892/v1'
background_prompt = '''KOMBUKIKI是一款茶饮料目标受众 年龄20-35岁 性别:女性 地点:一线城市、二线城市 职业:精英中产、都市白领 收入水平:中高收入,有一定消费能力 兴趣和爱好:注重健康,有运动习惯
@ -49,6 +49,9 @@ class G2E(Blackbox):
prompt_template = [
{"role": "system", "content": background_prompt + prompt1},
]
#prompt_template = [
# {"role": "system", "content": ''},
#]
messages = prompt_template + context + [
@ -61,8 +64,8 @@ class G2E(Blackbox):
api_key='YOUR_API_KEY',
base_url=url
)
model_name = client.models.list().data[0].id
print(model_name)
response = client.chat.completions.create(
model=model_name,
messages=messages,

View File

@ -0,0 +1,28 @@
from typing import Any, Coroutine
from fastapi import Request, Response, status
from fastapi.responses import JSONResponse
from .blackbox import Blackbox
class TextAndImage(Blackbox):
def __call__(self, *args, **kwargs):
return self.processing(*args, **kwargs)
def processing(self, text: str, image: bytes):
# TODO: implement the processing logic
return "text and image processing..."
def valid(self, *args, **kwargs) -> bool:
return True
async def fast_api_handler(self, request: Request) -> Response:
# If the request is a form data, you can use the following code
data = (await request.form()).get("image")
if data is None:
return JSONResponse(content={"error": "image is required"}, status_code=status.HTTP_400_BAD_REQUEST)
imageBytes = await data.read()
text = (await request.form()).get("text")
result = self.processing(text, imageBytes)
return JSONResponse(content={"result": result }, status_code=status.HTTP_200_OK)