File size: 3,315 Bytes
773739d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
title: ChatGPT Plugins In Gradio
emoji: 💻
colorFrom: green
colorTo: gray
sdk: gradio
sdk_version: 3.35.2
app_file: app.py
pinned: true
license: mit
duplicated_from: ysharma/ChatGPT-Plugins-in-Gradio
---

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference


## Steps to add new Plugins to your Gradio ChatGPT Chatbot

1. **Acquire the API Endpoint**
    - You need an API which you can query, and for this example let's consider using a text-to-speech demo hosted on Huggingface Spaces.
    - **API Endpoint**: [https://gradio-neon-tts-plugin-coqui.hf.space/](https://gradio-neon-tts-plugin-coqui.hf.space/)

2. **Create a Function to Query the API**
    - You can access any Gradio demo as an API via the Gradio Python Client.
    ```python
    from gradio.client import Client

    def texttospeech(input_text):
        client = Client("https://gradio-neon-tts-plugin-coqui.hf.space/")
        result = client.predict(
            input_text,	# str  in 'Input' Textbox component
            "en",	    # str  in 'Language' Radio component
            api_name="/predict"
        )
        return result
    ```

3. **Describe the Function to GPT-3.5**
    - You need to describe your function to GPT3.5/4. This function definition will get passed to gpt and will suck up your token. GPT may or may not use this function based on user inputs later on.  
    - You can either use the Gradio demo for converting any given function to the required JSON format for GPT-3.5.
      - Demo: [Function to JSON](https://huggingface.co/spaces/ysharma/function-to-JSON)
      - Or, you can create the dictionary object on your own. Note that, the correct format is super important here.
    - MAke sure to name your JSON object description as `<function_name>_func`.
    ```python
    texttospeech_func = {
        "name": "texttospeech",
        "description": "generate speech from the given input text",
        "parameters": {
            "type": "object",
            "properties": {
                "input_text": {
                    "type": "string",
                    "description": "text that will be used to generate speech"
                }
            },
            "required": [
                "input_text"
            ]
        }
    }
    ```

4. **Add Function and JSON Object Details**
    - Add the function definition and description to the `gpt_function_definitions.py` file (simply copy and paste).
    - `dict_plugin_functions` is a dictionary of all available plugins. Add your plugin information to this dictionary in the required format.
    ```python
    'texttospeech_func': {
        'dict': texttospeech_func,
        'func': texttospeech
    }
    ```

5. **Update the Chatbot Layout**
    - Go to the Blocks Chatbot layout and add a new checkbox for your plugin as:
    ```python
    texttospeech = gr.Checkbox(label="📝🗣️Text-To-Speech", value=False)
    ```
    - Add the new checkbox component to your submit and click events for your chatbot and to the predict function accordingly.
    - And also to the `plugins` list in `predict`
      ```python
      plugins = [music_gen, stable_diff, image_cap, top_news, texttospeech]
      ```

**Thats it! you are have added your own brand new CHATGPT Plugin for yourself. Go PLAY!!**