Your task is to review pull requests. Instructions:
- Provide the response in following JSON format: {"reviews": [{"line": <line_number>, "body": "<review comment>"}]}
- Do not give positive comments or compliments.
- Provide comments and suggestions ONLY if there is something to improve, otherwise "reviews" should be an empty array.
- Write the comment in GitHub Markdown format.
- Use the given description only for the overall context and only comment the code.
- IMPORTANT: NEVER suggest adding comments to the code.

Review the following code diff in the file "docs/interference-api.md" and take the pull request title and description into account when writing the response.
  
Pull request title: Add new provider, enhance functionality, and update docs
Pull request description:
---
## # New provider added
   - **g4f/Provider/GizAI.py**
      - **Text generation:** `gemini-flash, gemini-pro, gpt-4o-mini, gpt-4o, claude-3.5-sonnet, claude-3-haiku, llama-3.1-70b, llama-3.1-8b, mistral-large`
      - **Image generation:** `sdxl, sd-1.5, sd-3.5, flux-schnell`
---



## G4F update
## # New feature added to G4F for anthropics
**(g4f/client/client.py): add system prompt support**
   - Enhance the Completions class by adding support for system prompts
      - Introduce a 'system' parameter to the create and async_create methods
      - Prepend the system message to the user messages if provided

> This change improves flexibility and aligns with best practices seen in APIs like Anthropic's, allowing better management of system-level instructions.

> **Reference:** [docs.anthropic](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/system-prompts#financial-analysis-without-role-prompting)


**Sample use of the new feature:**
**G4F Client**
```python
from g4f.client import Client

client = Client()

response = client.chat.completions.create(
    system="You are a helpful assistant.",
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            "content": "Say this is a test"
        }
    ]
    # Add any other necessary parameters
)

print(response.choices[0].message.content)
```

**G4F async client**
```python
import asyncio
from g4f.client import Client

async def main():
    client = Client()
    
    response = await client.chat.completions.async_create(
        system="You are a helpful assistant.", # <-- role prompt
        model="gpt-3.5-turbo",
        messages=[
            {
                "role": "user",
                "content": "Say this is a test"
            }
        ]
    )
    
    print(response.choices[0].message.content)

asyncio.run(main())
```


---
## # New feature added to Images Album G4F-GUI

**(g4f/gui/server/api.py): enhance image handling and directory management**
   - Enhance image handling functionalities and ensure image directory exists
      - Add ensure_images_dir function to create image directory if it doesn't exist
      - Modify serve_images and _copy_images methods to use ensure_images_dir
      - Remove unnecessary imports to clean up code
      - Update typing annotations to improve type safety

> This ensures that the directory for storing images is always present and improves code readability and maintainability.
---
**(g4f/gui/server/backend.py): add route to list generated images**
   - Introduce a new endpoint `/images` to list all generated images
   - Implement `get_images` method to retrieve and return image paths as JSON
   - Update `serve_images` method to serve images from the `./generated_images` directory
   - Enhance route registration to include the new `/images` endpoint

> This addition provides a way to dynamically list and access generated images via the API.
---
**(g4f/gui/server/website.py): add redirect for /images/ endpoint**
   - Add a new route '/images/' to the website routes configuration
      - The new route redirects to the home page similar to other routes
      - Supports both GET and POST methods

> This change ensures consistency in route management and better handles potential future expansion for the '/images/' endpoint.
---
**(g4f/gui/client/index.html): add image album and enhance model/provider options**
   - Added "Images Album" button in the bottom_buttons section for easier access to image-related functionalities.
   - Enhanced model selection options by adding new models such as gpt-4o, gpt-4o-mini, llama-3.1-405b, mixtral-8x7b, gemini-flash, claude-3-haiku, and claude-3.5-sonnet.
   - Enhanced provider selection options by adding new providers such as DeepInfraChat, ReplicateHome, Blackbox, HuggingChat, DDG, and Pizzagpt.
   - Introduced an image modal with navigation controls for better image viewing experience.

> These changes improve the user interface by adding new functionalities and expanding the available options for models and providers.
---
**(g4f/gui/client/static/css/style.css): add image modal and navigation controls**
   - Implemented a modal for displaying images in larger view with navigation controls.
      - Added styles for album images, modal, and navigation buttons.
      - Included close button and image counter within the modal.
      - Updated the blink animation for better visual feedback.
---
**(g4f/gui/client/static/js/chat.v1.js): add image album functionality**
   - Implement functionality to load, display, and navigate through images
      - Fetch images from the server and display them in the album
      - Add modal to view images in a larger format with zoom functionality
      - Allow navigation between images using arrow keys and buttons

**Changes:**
   - Added `loadImages`, `displayImages`, `openImageModal`, and navigation functions
   - Modified event listeners for image inputs and modal interactions
   - Updated CSS classes for hidden states and image styling
---


## # G4F improvements
**(g4f/api/__init__.py): refactor API structure and improve async handling**
   - Updated `create_app` to accept an optional `g4f_api_key` parameter.
   - Refactored `ChatCompletionsForm` to `ChatCompletionsConfig` and `ImagesGenerateForm` to `ImageGenerationConfig`.
   - Improved async handling for `chat_completions` and `generate_image` endpoints.
   - Added type hints for better readability and maintainability.
   - Updated routes to include `/v1/images/generate`.
   - Enhanced error handling and logging.
   - Introduced global `list_ignored_providers` and related setter method.

> Breaking change: Some API endpoints and request/response formats have been modified.
> https://github.com/xtekky/gpt4free/issues/2222#issue-2521995710
---
**(g4f/models.py): add new provider GizAI and update best providers**
   Add GizAI as a new provider for various models and update best provider lists
      - Add GizAI to the imports and update best provider lists for several models
      - Update `default` model's best providers
      - Adjust `gpt-4o`, `gpt-4o-mini`, `gpt-4`, `o1-mini`, `llama-3.1-8b`, `llama-3.1-70b`, `mistral-large`, `claude-3-haiku`, `claude-3.5-sonnet`, `gemini-pro`, `gemini-flash`, `sd-1.5`, `sd-3.5`, and `flux-schnell` to include GizAI

> Breaking change: Best provider logic updated to include new provider
---



## # Updating documentation and improving G4F
**(README.md): update README with badges and links**
   - Add new badges for commits, issues, and license at the top for improved visibility
   - Enhance author attribution with centered formatting
   - Correct various internal links within the Table of Contents
   - Fix broken link to the Interference API documentation
   - Adjust formatting for better readability and consistency throughout the file
   
   - Correct typo in the "Latest version" note and update internal links
      - Fix "Lastet" to "Latest" in the version note section
      - Update "Installation Guide for Windows (.exe)" link in the What's New section
      - Update link formats for internal references and external URLs
---
**(docs/async_client.md): update guide with Anthropic compatibility and improved chat completions example**
   - Add compatibility note for Anthropic API
   - Introduce new section for creating chat completions with an improved example
   - Update table of contents to include new section

> This update enhances the guide by providing clearer instructions for developers familiar with the OpenAI and Anthropic interfaces, making the transition to G4F smoother. The improved example helps developers understand how to create chat completions more effectively.
---
**(docs/client.md): update G4F Client API guide**
   - Update the G4F Client API guide to include new sections and examples:
      - Added section `Creating Chat Completions`
      - Improved example for creating chat completions with system message
      - Updated `Introduction` to mention Anthropic client compatibility
      - Minor text and format adjustments for clarity and completeness
---
**(docs/interference-api.md): update Interference API usage guide**
   - Enhance the Interference API usage guide with detailed instructions and examples for better clarity and usability.
      - Added sections for "Using the Interference API" and "Basic Usage"
      - Introduced example curl commands for text and image generation
      - Updated existing examples with improved formatting and explanations
      - Included a "Conclusion" section to summarize the guide's content
      - Defined how to run the API from both PyPI and the repository more clearly

> These updates aim to provide a more comprehensive and user-friendly guide for integrating G4F with OpenAI-based applications.
---

---

Each line is prefixed by its number. Code to review:
```
-
1: # G4F - Interference API Usage Guide
-
2:+  
3: 
4: ## Table of Contents
5:    - [Introduction](#introduction)
6:    - [Running the Interference API](#running-the-interference-api)
7:    - [From PyPI Package](#from-pypi-package)
8:    - [From Repository](#from-repository)
-   - [Usage with OpenAI Library](#usage-with-openai-library)
-   - [Usage with Requests Library](#usage-with-requests-library)
9:+   - [Using the Interference API](#using-the-interference-api)
10:+   - [Basic Usage](#basic-usage)
11:+   - [With OpenAI Library](#with-openai-library)
12:+   - [With Requests Library](#with-requests-library)
13:    - [Key Points](#key-points)
14:+   - [Conclusion](#conclusion)
15:+  
16: 
17: ## Introduction
-The Interference API allows you to serve other OpenAI integrations with G4F. It acts as a proxy, translating requests to the OpenAI API into requests to the G4F providers.
18:+The G4F Interference API is a powerful tool that allows you to serve other OpenAI integrations using G4F (Gpt4free). It acts as a proxy, translating requests intended for the OpenAI and Anthropic API into requests compatible with G4F providers. This guide will walk you through the process of setting up, running, and using the Interference API effectively.
19:+  
20: 
21: ## Running the Interference API
22:+**You can run the Interference API in two ways:** using the PyPI package or from the repository.
23:+  
24: 
25: ### From PyPI Package
-**You can run the Interference API directly from the G4F PyPI package:**
26:+**To run the Interference API directly from the G4F PyPI package, use the following Python code:**
27:+
28: ```python
29: from g4f.api import run_api
30: 
32: ```
33: 
34:   
-
35: ### From Repository
-Alternatively, you can run the Interference API from the cloned repository.  
36:+**If you prefer to run the Interference API from the cloned repository, you have two options:**
37: 
-**Run the server with:**
38:+1. **Using the command line:**
39: ```bash
40: g4f api
41: ```
-or
42:+
43:+2. **Using Python:**
44: ```bash
45: python -m g4f.api.run
46: ```
47: 
48:+**Once running, the API will be accessible at:** `http://localhost:1337/v1`
49:   
50: 
-## Usage with OpenAI Library
51:+## Using the Interference API
52: 
-  
53:+### Basic Usage
54:+**You can interact with the Interference API using curl commands for both text and image generation:**
55: 
56:+**For text generation:**
57:+```bash
58:+curl -X POST "http://localhost:1337/v1/chat/completions" \
59:+     -H "Content-Type: application/json" \
60:+     -d '{
61:+           "messages": [
62:+             {
63:+               "role": "user",
64:+               "content": "Hello"
65:+             }
66:+           ],
67:+           "model": "gpt-3.5-turbo"
68:+         }'
69:+```
70:+
71:+**For image generation:**
72:+1. **url:**
73:+```bash
74:+curl -X POST "http://localhost:1337/v1/images/generate" \
75:+     -H "Content-Type: application/json" \
76:+     -d '{
77:+           "prompt": "a white siamese cat",
78:+           "model": "dall-e-3",
79:+           "response_format": "url"
80:+         }'
81:+```
82:+
83:+2. **b64_json**
84:+```bash
85:+curl -X POST "http://localhost:1337/v1/images/generate" \
86:+     -H "Content-Type: application/json" \
87:+     -d '{
88:+           "prompt": "a white siamese cat",
89:+           "model": "dall-e-3",
90:+           "response_format": "b64_json"
91:+         }'
92:+```
93:+
94:+
95:+### With OpenAI Library
96:+
97:+**You can use the Interference API with the OpenAI Python library by changing the `base_url`:**
98: ```python
99: from openai import OpenAI
100: 
101: client = OpenAI(
102:     api_key="",
-    # Change the API base URL to the local interference API
-    base_url="http://localhost:1337/v1"  
103:+    base_url="http://localhost:1337/v1"
104: )
105: 
106: response = client.chat.completions.create(
107:     model="gpt-3.5-turbo",
-    messages=[{"role": "user", "content": "write a poem about a tree"}],
108:+    messages=[{"role": "user", "content": "Write a poem about a tree"}],
109:     stream=True,
110: )
111: 
118:         content = token.choices[0].delta.content
119:         if content is not None:
120:             print(content, end="", flush=True)
-```
121: 
122:+```
123:   
124: 
-## Usage with Requests Library
-You can also send requests directly to the Interference API using the requests library. 
125:+### With Requests Library
126: 
-**Send a POST request to `/v1/chat/completions` with the request body containing the model and other parameters:**
127:+**You can also send requests directly to the Interference API using the `requests` library:**
128: ```python
129: import requests
130: 
131: url = "http://localhost:1337/v1/chat/completions"
132:+
133: body = {
-    "model": "gpt-3.5-turbo", 
134:+    "model": "gpt-3.5-turbo",
135:     "stream": False,
136:     "messages": [
137:         {"role": "assistant", "content": "What can you do?"}
142: 
143: for choice in json_response:
144:     print(choice.get('message', {}).get('content', ''))
-```
145: 
-  
146:+```
147: 
148: ## Key Points
-- The Interference API translates OpenAI API requests into G4F provider requests
-- You can run it from the PyPI package or the cloned repository
-- It supports usage with the OpenAI Python library by changing the `base_url`
-- Direct requests can be sent to the API endpoints using libraries like `requests`
149:+   - The Interference API translates OpenAI API requests into G4F provider requests.
150:+   - It can be run from either the PyPI package or the cloned repository.
151:+   - The API supports usage with the OpenAI Python library by changing the `base_url`.
152:+   - Direct requests can be sent to the API endpoints using libraries like `requests`.
153:+   - Both text and image generation are supported.
154: 
155:   
-**_The Interference API allows easy integration of G4F with existing OpenAI-based applications and tools._**
156:+## Conclusion
157:+The G4F Interference API provides a seamless way to integrate G4F with existing OpenAI-based applications and tools. By following this guide, you should now be able to set up, run, and use the Interference API effectively. Whether you're using it for text generation, image creation, or as a drop-in replacement for OpenAI in your projects, the Interference API offers flexibility and power for your AI-driven applications.
158:+ 
159: 
160: ---
161: 
```