From 19bf5b7ef6026069e70b9f1e236cee9112f4718b Mon Sep 17 00:00:00 2001 From: hlohaus <983577+hlohaus@users.noreply.github.com> Date: Sun, 26 Jan 2025 21:56:31 +0100 Subject: Fix upload files in demo mode Updates for memory with mem0 Fix asyncio import in nodriver function Add provider specific api endpoints Support for open settings in UI at /chat/settings --- g4f/api/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'g4f/api/__init__.py') diff --git a/g4f/api/__init__.py b/g4f/api/__init__.py index eb69c656..b9a5a11f 100644 --- a/g4f/api/__init__.py +++ b/g4f/api/__init__.py @@ -245,6 +245,25 @@ class Api: ] } + @self.app.get("/{provider}/models", responses={ + HTTP_200_OK: {"model": List[ModelResponseModel]}, + }) + async def models(provider: str): + if provider not in ProviderUtils.convert: + return ErrorResponse.from_message("The provider does not exist.", 404) + provider: ProviderType = ProviderUtils.convert[provider] + return { + "object": "list", + "data": [{ + "id": model, + "object": "model", + "created": 0, + "owned_by": getattr(provider, "label", provider.__name__), + "image": model in getattr(provider, "image_models", []), + "image": model in getattr(provider, "vision_models", []), + } for model in provider.get_models() if hasattr(provider, "get_models")] + } + @self.app.get("/v1/models/{model_name}", responses={ HTTP_200_OK: {"model": ModelResponseModel}, HTTP_404_NOT_FOUND: {"model": ErrorResponseModel}, @@ -352,6 +371,20 @@ class Api: logger.exception(e) return ErrorResponse.from_exception(e, config, HTTP_500_INTERNAL_SERVER_ERROR) + @self.app.post("/{provider}/chat/completions", responses={ + HTTP_200_OK: {"model": ChatCompletion}, + HTTP_401_UNAUTHORIZED: {"model": ErrorResponseModel}, + HTTP_404_NOT_FOUND: {"model": ErrorResponseModel}, + HTTP_422_UNPROCESSABLE_ENTITY: {"model": ErrorResponseModel}, + HTTP_500_INTERNAL_SERVER_ERROR: {"model": ErrorResponseModel}, + }) + async def provider_chat_completions( + provider: str, + config: ChatCompletionsConfig, + credentials: Annotated[HTTPAuthorizationCredentials, Depends(Api.security)] = None, + ): + return await chat_completions(config, credentials, provider) + responses = { HTTP_200_OK: {"model": ImagesResponse}, HTTP_401_UNAUTHORIZED: {"model": ErrorResponseModel}, -- cgit v1.2.3