From 1d66c57a658d0a538c1836c56252aae2db11546d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A2=A7=E8=88=9E=E3=81=99=E3=81=BF=E3=81=BB?= Date: Sat, 18 May 2024 01:43:17 +0900 Subject: Improve compatibility of openai-node (#1966) * improve compatibility of openai-node * improve compatibility with OpenAI's models api * allow image upload --- g4f/api/__init__.py | 5 ++++- g4f/client/stubs.py | 2 ++ g4f/typing.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'g4f') diff --git a/g4f/api/__init__.py b/g4f/api/__init__.py index 9772f8d7..7296a542 100644 --- a/g4f/api/__init__.py +++ b/g4f/api/__init__.py @@ -120,7 +120,10 @@ class Api: 'created': 0, 'owned_by': model.base_provider } for model_id, model in model_list.items()] - return JSONResponse(model_list) + return JSONResponse({ + "object": "list", + "data": model_list, + }) @self.app.get("/v1/models/{model_name}") async def model_info(model_name: str): diff --git a/g4f/client/stubs.py b/g4f/client/stubs.py index 2441e287..ceb51b83 100644 --- a/g4f/client/stubs.py +++ b/g4f/client/stubs.py @@ -78,12 +78,14 @@ class ChatCompletionDelta(Model): def __init__(self, content: Union[str, None]): if content is not None: self.content = content + self.role = "assistant" def to_json(self): return self.__dict__ class ChatCompletionDeltaChoice(Model): def __init__(self, delta: ChatCompletionDelta, finish_reason: Union[str, None]): + self.index = 0 self.delta = delta self.finish_reason = finish_reason diff --git a/g4f/typing.py b/g4f/typing.py index 5d1bc959..710fde4b 100644 --- a/g4f/typing.py +++ b/g4f/typing.py @@ -14,7 +14,7 @@ else: SHA256 = NewType('sha_256_hash', str) CreateResult = Iterator[str] AsyncResult = AsyncIterator[str] -Messages = List[Dict[str, str]] +Messages = List[Dict[str, Union[str,List[Dict[str,Union[str,Dict[str,str]]]]]]] Cookies = Dict[str, str] ImageType = Union[str, bytes, IO, Image, None] -- cgit v1.2.3