Coder Social home page Coder Social logo

k3rn3l-p / gpt-actions Goto Github PK

View Code? Open in Web Editor NEW

This project forked from id-2/gpt-actions

0.0 0.0 0.0 4.7 MB

A compendium of action-schemas designed to work with OpenAI's "custom GPTs".

License: Creative Commons Attribution Share Alike 4.0 International

gpt-actions's Introduction

Repository header

Ready-to-use action-schemas for "custom GPTs" via the ChatGPT webapp.

Pretty banner thing

Action Directory    |    What is This?    |    How to Use    |    Contributing    |    TODO


📁 Action Directory

APIs.guru Search - Uses the APIs.guru web service to gather information on publicly-accessible APIs.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: No authentication

Description:

Because @elmstedt mentioned on the forums that those looking to create API actions should use apis.guru (among other resources) for reference in creating schemas, I've decided to write an action that should make this easier by allowing GPT to look for information from this web service all on its own.

This isn't perfect, as some API specs can be quite long and will thus give the ResponseTooLargeError, however I have tried to compensate for this by instructing the model to return a link to the appropriate API docs in the event that it cannot parse the spec directly from the site.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/apisguru-search/schema.json

Schema
{
    "info": {
      "title": "APIs.guru Search",
      "description": "Allows various queries to the apis.guru web service, which enables searching through information on various publically accessible APIs for a wide variety of different use-cases.",
      "version": "v1.0.0"
    },
    "servers": [
      {
        "url": "https://api.apis.guru/v2"
      }
    ],
    "paths": {
      "/providers.json": {
        "get": {
          "description": "Lists all the providers that are available in the apis.guru database.",
          "operationId": "listProviders",
          "deprecated": false
        }
      },
      "/{provider}.json": {
        "get": {
          "description": "Lists all the APIs for a given provider (typically based on the results of the 'listProviders' operation).",
          "operationId": "listProviderAPIs",
          "parameters": [
            {
              "name": "provider",
              "in": "path",
              "description": "The provider string to list the APIs for.",
              "required": true,
              "schema": {
                "type": "string"
              }
            }
          ],
          "deprecated": false
        }
      },
      "/specs/{provider}/{api}/{version}/openapi.json": {
        "get": {
          "description": "Returns the OpenAPI specification for a given API from a given provider (look in the 'swaggerUrl' field of the 'listProviderAPIs' operation for the parameters to use here, which are the last 3 respectively before 'openapi.json').",
          "operationId": "getAPI",
          "parameters": [
            {
              "name": "provider",
              "in": "path",
              "description": "The provider string to list the APIs for (e.g. 'github.com').",
              "required": true,
              "schema": {
                "type": "string"
              }
            },
            {
              "name": "api",
              "in": "path",
              "description": "The API string to get the specification for (e.g. 'api.github.com').",
              "required": true,
              "schema": {
                "type": "string"
              }
            },
            {
                "name": "version",
                "in": "path",
                "description": "The version string to get the specification for (e.g. '1.1.4').",
                "required": true,
                "schema": {
                  "type": "string"
                }
            }
          ],
          "deprecated": false
        }
      }
    },
    "responses": {
        "200": {
            "description": "Successful, continue as normal."
        },
        "ResponseTooLargeError": {
            "description": "If the output is too long to retrieve, inform the user that this is a technical limitation of your system, then attempt to instead give the user a link to the API docs, which can likely be found in previously retrieved data."
        }
    },
    "components": {
      "schemas": {}
    }
}
ArXiv Search - A GET-request based search operation for searching through arXiv.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: No authentication

Description:

This allows GPT to make requests for entries from arXiv, a free distribution service and an open-access archive for millions of scholarly articles via the https://export.arxiv.org endpoint. The specification for said endpoint can be found here.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/arxiv-search/schema.json

Schema
{
    "info": {
        "title": "ArXiv Search",
        "description": "A GET-request based search operation for searching through arXiv.",
        "version": "v1.0.0"
    },
    "servers": [
        {
            "url": "https://export.arxiv.org"
        }
    ],
    "paths": {
        "/api/query": {
            "get": {
                "description": "Searches through arXiv for the given query.",
                "operationId": "searchArxiv",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "The query to search for.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "The index of the first result to return.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "max_results",
                        "in": "query",
                        "description": "The maximum number of results to return. Defaults to 10.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "sortBy",
                        "in": "query",
                        "description": "The field to sort by.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "relevance",
                                "lastUpdatedDate",
                                "submittedDate"
                            ]
                        }
                    },
                    {
                        "name": "sortOrder",
                        "in": "query",
                        "description": "The order to sort by.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ascending",
                                "descending"
                            ]
                        }
                    }
                ],
                "deprecated": false
            }
        }
    },
    "components": {
        "schemas": {}
    }
}
DevDocs Reader - Allows GPT to read pages from the devdocs.io documentation hub.

  • Author: bapo2
  • Schema format: YAML
  • Authentication type: No authentication

Description:

This action allows GPT to read entries on DevDocs via devdocs.io. Simply provide it with the URL of the entry (e.g. "https://devdocs.io/javascript/global_objects/array/fill") and it will attempt to use a GET request to read the raw HTML of said entry. This is a makeshift implementation because DevDocs provides no official API for reading from its website.

Occasionally, this may return a ResponseTooLargeError, which is caused by the response having >100k characters. This is a limitation of ChatGPT, not of DevDocs, and there's not much I can do about it sadly.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/devdocs-reader/schema.yaml

Schema
openapi: 3.0.0
info:
  title: DevDocs Reader
  description: >-
    A GET-request based search operation for DevDocs. This is useful, as DevDocs contains a myriad of various documentations for different things. If using this, ask the user about the parameters beforehand. If doing as an intermediary research step, ask the user to go find the URL.
  version: v1.0.0
servers:
  - url: https://documents.devdocs.io
    description: DevDocs Documentation Hub
paths:
  /{doc}/{topic}.html:
    get:
      operationId: readDevDocs
      summary: Fetch Documentation from DevDocs
      description: >-
        Searches for a specific topic and path in DevDocs based on the provided documentation name and topic. This endpoint simulates user navigation on the DevDocs website to retrieve documentation content.
      parameters:
        - name: doc
          in: path
          description: The name of the documentation, such as "vuex~4" or "css". The exact value should be identified by the user.
          required: true
          schema:
            type: string
          example: javascript
        - name: topic
          in: path
          description: The path of the section/topic, such as "guide/actions" for Vuex or "display-box" for CSS.
          required: true
          schema:
            type: string
          example: strings
      responses:
        '200':
          description: Successfully retrieved the documentation content.
        '400':
          description: Bad request, often due to missing or invalid parameters.
        '404':
          description: The specified documentation or topic was not found.
        '429':
          description: Too many requests - rate limiting applied.
components:
  schemas: {}
Github File Lister - Allows for the traversal of Github repos similar to using the 'ls' command.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: API Key [Bearer]

Description:

This allows GPT to use the api.github.com endpoint to traverse directories in a repository similar to how one would use the ls command. It also allows fetching of a given file's download_url to pass to the file reader if both actions are present on the same GPT.

Providing an API key is optional when reading from public repos, but is required when reading from private ones. To create one for GPT to use, simply go to the "developer settings" page and create a PAT with read-access to whatever you want GPT to be able to view.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/github-file-lister/schema.json

Schema
{
    "info": {
        "title": "Github File Lister",
        "description": "Acts like the 'ls' command and can list the contents of directories on Github repos. Can not be used to read file contents directly, as it will return base64.",
        "version": "v1.0.0"
    },
    "servers": [
        {
            "url": "https://api.github.com"
        }
    ],
    "paths": {
        "/repos/{owner}/{repo}/contents/{path}": {
            "get": {
                "description": "Gets the contents (files) of a specific repo/directory. The 'download_url' property can be used to get the path for the file reader. Make sure to use the 'Github File Reader' action when trying to read contents (if its available).",
                "operationId": "listGithubFiles",
                "parameters": [
                    {
                        "name": "owner",
                        "in": "path",
                        "description": "The owner of the repository (username).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "repo",
                        "in": "path",
                        "description": "The name of the repository itself.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "path",
                        "description": "The path to the file or folder (leave this blank to just get the root of the repo). This is case-sensetive.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "deprecated": false
            }
        }
    },
    "components": {
        "schemas": {}
    }
}
Github File Reader - Can read files on Github via their "raw" URLs.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: API Key [Bearer]

Description:

This allows GPT to read a file from Github via its raw.githubusercontent.com URL. When paired with the "Github File Lister" action, this is capable of allowing GPT to look through and read any repository accessible to it.

Providing an API key is optional when reading from public repos, but is required when reading from private ones. To create one for GPT to use, simply go to the "developer settings" page and create a PAT with read-access to whatever you want GPT to be able to view.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/github-file-reader/schema.json

Schema
{
    "info": {
        "title": "Github File Reader",
        "description": "Request the raw contents of a file from a Github repository given its path.",
        "version": "v1.0.0"
    },
    "servers": [
        {
            "url": "https://raw.githubusercontent.com"
        }
    ],
    "paths": {
        "/{owner}/{repo}/{branch}/{filepath}": {
            "get": {
                "description": "Returns the raw contents of a file from a Github repository given its path. The relevant details can be queried from the 'Github File Lister' action if it is available.",
                "operationId": "readGithubFile",
                "parameters": [
                    {
                        "name": "owner",
                        "in": "path",
                        "description": "The owner of the repository (username).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "repo",
                        "in": "path",
                        "description": "The name of the repository.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "branch",
                        "in": "path",
                        "description": "The branch of the repository (this is 'main' by default).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "filepath",
                        "in": "path",
                        "description": "The path to the file.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "deprecated": false
            }
        }
    },
    "components": {
        "schemas": {}
    }
}
Klarna Product Search - Find products that match your query

  • Author: sanzgiri
  • Schema format: YAML
  • Authentication type: No authentication

Description:

This is an action for Klarna Product Search. Its primary function is to assist users in finding products that match their queries. It can search for a wide range of products based on specific user requests, including details like product type, brand, price range, and more. Additionally, it has the capability to generate images of these products using DALL-E, providing a visual representation of the items you're interested in.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/klarna-product-search/schema.yaml

Schema
openapi: 3.0.1
servers:
  - url: https://www.klarna.com/us/shopping
info:
  title: Open AI Klarna product Api
  version: v0
  x-apisguru-categories:
    - ecommerce
  x-logo:
    url: https://www.klarna.com/static/img/social-prod-imagery-blinds-beauty-default.jpg
  x-origin:
    - format: openapi
      url: https://www.klarna.com/us/shopping/public/openai/v0/api-docs/
      version: "3.0"
  x-providerName: klarna.com
  x-serviceName: openai
tags:
  - description: Open AI Product Endpoint. Query for products.
    name: open-ai-product-endpoint
paths:
  /public/openai/v0/products:
    get:
      deprecated: false
      operationId: productsUsingGET
      parameters:
        - description: A precise query that matches one very small category or product that needs to be searched for to find the products the user is looking for. If the user explicitly stated what they want, use that as a query. The query is as specific as possible to the product name or category mentioned by the user in its singular form, and don't contain any clarifiers like latest, newest, cheapest, budget, premium, expensive or similar. The query is always taken from the latest topic, if there is a new topic a new query is started.
          in: query
          name: q
          required: true
          schema:
            type: string
        - description: number of products returned
          in: query
          name: size
          required: false
          schema:
            type: integer
        - description: maximum price of the matching product in local currency, filters results
          in: query
          name: budget
          required: false
          schema:
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductResponse"
          description: Products found
        "503":
          description: one or more services are unavailable
      summary: API for fetching Klarna product information
      tags:
        - open-ai-product-endpoint
components:
  schemas:
    Product:
      properties:
        attributes:
          items:
            type: string
          type: array
        name:
          type: string
        price:
          type: string
        url:
          type: string
      title: Product
      type: object
    ProductResponse:
      properties:
        products:
          items:
            $ref: "#/components/schemas/Product"
          type: array
      title: ProductResponse
      type: object
Semantic Scholar Search - A GET-request based search operation for papers on Semantic Scholar.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: No authentication

Description:

This allows GPT to request entries from Semantic Scholar, which uses a vector space model to find relevant papers based on a query (which can be very helpful for natural language searches). The API specification for Semantic Scholar can be found here.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/semantic-scholar-search/schema.json

Schema
{
    "info": {
        "title": "Semantic Scholar Search",
        "description": "A GET-request based search operation for papers on Semantic Scholar, which uses a vector space model to find relevant papers based on a query (it can be very helpful for natural language searches).",
        "version": "v1.0.0"
    },
    "servers": [
        {
            "url": "https://api.semanticscholar.org"
        }
    ],
    "paths": {
        "/graph/v1/paper/search": {
            "get": {
                "description": "Relevancy-based search for papers on Semantic Scholar.",
                "operationId": "searchSemanticScholar",
                "parameters": [
                    {
                        "name": "query",
                        "in": "query",
                        "description": "The search query itself, this can be any natural language query.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "The maximum number of papers to return. Defaults to 10, maximum is 100.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "fields",
                        "in": "query",
                        "description": "The fields to return in the response. Use the pre-specified value for this (don't change it).",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": ["url,abstract,publicationTypes,tldr,openAccessPdf"]
                        }
                    },
                    {
                        "name": "fieldsOfStudy",
                        "in": "query",
                        "description": "The fields of study to filter the results by. These are comma-separated values, e.g. \"Computer Science,Medicine\".",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "Computer Science",
                                "Medicine",
                                "Chemistry",
                                "Biology",
                                "Materials Science",
                                "Physics",
                                "Geology",
                                "Psychology",
                                "Art",
                                "History",
                                "Geography",
                                "Sociology",
                                "Business",
                                "Political Science",
                                "Economics",
                                "Philosophy",
                                "Mathematics",
                                "Engineering",
                                "Environmental Science",
                                "Agricultural and Food Sciences",
                                "Education",
                                "Law",
                                "Linguistics"
                            ]
                        }
                    },
                    {
                        "name": "publicationDateOrYear",
                        "in": "query",
                        "description": "The publication date or year to filter the results by (inclusive). Accepts the format <startDate>:<endDate> (YYYY-MM-DD), e.g. 2016-03:2020-06 (as early as March, 2016 or as late as June, 2020).",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "publicationTypes",
                        "in": "query",
                        "description": "The publication types to filter the results by. These are comma-separated values, e.g. \"JournalArticle,CaseReport\".",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "Review",
                                "JournalArticle",
                                "CaseReport",
                                "ClinicalTrial",
                                "Dataset",
                                "Editorial",
                                "LettersAndComments",
                                "MetaAnalysis",
                                "News",
                                "Study",
                                "Book",
                                "BookSection"
                            ]
                        }
                    }
                ],
                "deprecated": false
            }
        }
    },
    "components": {
        "schemas": {}
    }
}
StackExchange Search - A GET-request based search operation for any of several StackExchange boards.

  • Author: bapo2
  • Schema format: JSON
  • Authentication type: No authentication

Description:

This allows GPT to make several types of queries to any of several StackExchange boards. The documentation for StackExchange's API can be found here. This is useful if GPT happens to run into a development problem that it has difficulty solving, and is a good source of some information in general.

Import URL:

https://raw.githubusercontent.com/bapo2/gpt-actions/main/schemas/stackexchange-search/schema.json

Schema
{
    "info": {
        "title": "StackExchange Search",
        "description": "A GET-request based search operation for any of several StackExchange boards. This is useful as these boards contain vast amounts of useful information to both common and uncommon queries.",
        "version": "v1.0.0"
    },
    "servers": [
        {
            "url": "https://api.stackexchange.com"
        }
    ],
    "paths": {
        "/2.3/search": {
            "get": {
                "description": "Search one of several StackExchange boards based on the provided parameters.",
                "operationId": "searchStack",
                "parameters": [
                    {
                        "name": "intitle",
                        "in": "query",
                        "description": "The query to use for searching.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "How to sort the results returned for the query.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "activity",
                                "votes",
                                "creation",
                                "relevance"
                            ]
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "description": "The order in which to sort the results.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ]
                        }
                    },
                    {
                        "name": "site",
                        "in": "query",
                        "description": "The StackExchange site to search.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "stackoverflow",
                                "serverfault",
                                "superuser",
                                "askubuntu",
                                "unix",
                                "cs",
                                "softwareengineering",
                                "codegolf",
                                "codereview",
                                "cstheory",
                                "security",
                                "cryptography",
                                "reverseengineering",
                                "datascience",
                                "devops",
                                "ux",
                                "dba",
                                "gis",
                                "webmasters",
                                "arduino",
                                "raspberrypi",
                                "networkengineering",
                                "iot",
                                "tor",
                                "sqa",
                                "mathoverflow",
                                "math",
                                "mathematica",
                                "dsp",
                                "gamedev",
                                "robotics",
                                "genai",
                                "computergraphics"
                            ]
                        }
                    },
                    {
                        "name": "tagged",
                        "in": "query",
                        "description": "A semicolon-separated list of tags to search for.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "nottagged",
                        "in": "query",
                        "description": "A semicolon-separated list of tags to exclude from the search.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "accepted",
                        "in": "query",
                        "description": "Whether or not to search for only accepted answers.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "pagesize",
                        "in": "query",
                        "description": "The number of results to return per page.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "deprecated": false
            }
        },
        "/2.3/questions/{id}/answers": {
            "get": {
                "description": "Bring up all answers for a given question ID.",
                "operationId": "searchStackAnswers",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the question to query.",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "site",
                        "in": "query",
                        "description": "The StackExchange site to query from.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "stackoverflow",
                                "serverfault",
                                "superuser",
                                "askubuntu",
                                "unix",
                                "cs",
                                "softwareengineering",
                                "codegolf",
                                "codereview",
                                "cstheory",
                                "security",
                                "cryptography",
                                "reverseengineering",
                                "datascience",
                                "devops",
                                "ux",
                                "dba",
                                "gis",
                                "webmasters",
                                "arduino",
                                "raspberrypi",
                                "networkengineering",
                                "iot",
                                "tor",
                                "sqa",
                                "mathoverflow",
                                "math",
                                "mathematica",
                                "dsp",
                                "gamedev",
                                "robotics",
                                "genai",
                                "computergraphics"
                            ]
                        }
                    },
                    {
                        "name": "filter",
                        "in": "query",
                        "description": "This is required in order to actually get the body of the answer.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "!nNPvSNdWme"
                            ]
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "description": "The order in which to sort the results.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "How to sort the results returned for the query.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "activity",
                                "votes",
                                "creation"
                            ]
                        }
                    },
                    {
                        "name": "pagesize",
                        "in": "query",
                        "description": "The number of results to return per page.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page number to return given the page size.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "deprecated": false
            }
        },
        "/2.3/answers/{ids}": {
            "get": {
                "description": "Bring up relevant data for one of more answers based on the provided IDs.",
                "operationId": "getStackAnswers",
                "parameters": [
                    {
                        "name": "ids",
                        "in": "path",
                        "description": "A semicolon-separated list of answer IDs to query.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "description": "The order in which to sort the results.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "How to sort the results returned for the query.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "activity",
                                "votes",
                                "creation"
                            ]
                        }
                    },
                    {
                        "name": "site",
                        "in": "query",
                        "description": "The StackExchange site to query from.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "stackoverflow",
                                "serverfault",
                                "superuser",
                                "askubuntu",
                                "unix",
                                "cs",
                                "softwareengineering",
                                "codegolf",
                                "codereview",
                                "cstheory",
                                "security",
                                "cryptography",
                                "reverseengineering",
                                "datascience",
                                "devops",
                                "ux",
                                "dba",
                                "gis",
                                "webmasters",
                                "arduino",
                                "raspberrypi",
                                "networkengineering",
                                "iot",
                                "tor",
                                "sqa",
                                "mathoverflow",
                                "math",
                                "mathematica",
                                "dsp",
                                "gamedev",
                                "robotics",
                                "genai",
                                "computergraphics"
                            ]
                        }
                    },
                    {
                        "name": "filter",
                        "in": "query",
                        "description": "This is required in order to actually get the body of the answer.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "!nNPvSNdWme"
                            ]
                        }
                    }
                ],
                "deprecated": false
            }
        }
    },
    "components": {
        "schemas": {}
    }
}

🤔 What is This?

This repository is meant as a compendium of action-schemas for ChatGPT's "custom GPT" feature, which allows users to implement highly customizable API function-calls into their prompt-tuned instances of GPT, letting it perform a wide variety of tasks using request to said APIs. This is accomplished by providing the model with an OpenAPI-spec compliant schema (in either JSON or YAML format) that describes the API call(s) to be made in detail, including the request body, headers, and query parameters, as well as the expected response body and status code (if need be). The model then uses this schema to generate a request to the API, and returns the response body as its output, which it can then use in completions as context for the task being performed.

This feature is extremely powerful, and can be used to perform a wide variety of tasks, from simple things like getting the weather or searching for a video on YouTube, to more complex tasks like creating and managing a GitHub repository programmatically. See the official ChatGPT docs for more information on how this feature works. In essence, anything accessible via an API can be interacted with by the model using this feature, with virtually no limitations on what can be done.

In the interest of building a community around this incredibly versatile feature, and to allow for the development of more capable and powerful actions to equip GPT with, I created this repository as a place for users to share their action-schemas publicly, so that others can use them in their own "custom GPTs", and so that they can be improved upon iteratively by the community as a whole. If you have an action-schema you'd like to share, please consider contributing it to this repository! See the contributing section for more information on how to do so.

📖 How to Use

How to import actions

To use an action from this repository, simply copy the import URL of the action you'd like to use, and paste it into the "Import from URL" field in the "Add actions" section of the ChatGPT webapp's "Create a GPT" panel. After this, you can test the action by either prompting the model to use it or by clicking "Test" next to the path you wish to test. If the action is working properly, you should see a status indicator that the model is querying the appropriate endpoint, after which it will show if the action was successful or not.

Note

If you are using an action that requires authentication, you will need to provide the appropriate credentials in the "Authentication" section of the "Add actions" panel. If applicable, the instructions for this will be included in the action's description (if not, please open an issue on this repository requesting that the author add them).

🤝 Contributing

If you'd like to contribute an action-schema to this repository, please follow the steps below:

  1. Submit a new schema for approval by filling out the template provided. This will aid you in creating a new issue for the schema you wish to contribute, and will ensure that all the necessary information is provided for the schema to be approved and added to the repository.
  2. The schema will be automatically validated by a GitHub workflow, ensuring that all required information is provided and that the schema is syntactically valid according to what is required by the respective format accepted by the ChatGPT webapp.
  3. If the schema is valid and all required information is provided, it will be marked for manual review. This is to ensure that the schema is not malicious, otherwise harmful, or breaks any of the rules outlined in the repo's code of conduct.
  4. Once the schema has manually been reviewed and approved by a repository maintainer, it will be marked for inclusion. This means that, at the next PR triggered by workflow dispatch, the schema will be added to the repository among the other existing entries. PRs for this repository are structured as batches of all schemas that have been marked for inclusion since the last PR. This is so that the repository is updated in bulk rather than one schema at a time and so that we can keep track of the number of schemas that have been contributed to the repository. This is done fairly often, so you shouldn't have to wait long for your schema to be added to the repository.

Tip

If the schema is not valid, the workflow will attempt to provide a sufficiently descriptive error message to help you fix the issue, at which point you can simply edit the issue to fix the problem and the workflow will re-run automatically.

If you'd like to contribute to the repository in other ways, such as by improving the documentation, adding new features, or fixing bugs in the workflows, please feel free to submit a PR:

  1. Fork the repository. This will create a copy of the repository under your own account, which you can then make changes to. You only need to copy the default branch, main.
  2. Make the changes you'd like to contribute. This can be done either directly on GitHub or by cloning the repository to your local machine and making the changes there.
  3. Submit a pull request. This will open a new PR, which will be reviewed by a repository maintainer. If the changes are approved, they will be merged into the repository at an appropriate time as not to conflict with automated workflows.

📝 TODO

This will be updated as new features are added to the repository.

  • Add issue templates for feature requests, reports of invalid schemas, and other presumably common issues.
  • Add a workflow to allow authors to update existing schemas similar to submitting a new ones.
  • Have the PR workflow run on a schedule rather than on workflow dispatch.
  • Add a more elegant means of removing obsolete schemas from the repository.

gpt-actions's People

Contributors

bapo2 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.