Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: ChatGPT Plugins/OpenAPI specs for Plugins Endpoint #620

Merged
merged 33 commits into from
Jul 16, 2023

Conversation

danny-avila
Copy link
Owner

@danny-avila danny-avila commented Jul 11, 2023

Introduces ChatGPT plugins/openAPI specs to the project through Plugins endpoint.

Type of change

  • New feature (non-breaking change which adds functionality)
  • This change requires a documentation update
  • Documentation update

How Has This Been Tested?

Unit Tests written for all new utils in the backend

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@danny-avila danny-avila marked this pull request as draft July 11, 2023 20:12
@danny-avila danny-avila force-pushed the openapi-chain branch 2 times, most recently from 62e565a to dc25083 Compare July 14, 2023 19:51
danny-avila and others added 27 commits July 15, 2023 12:40
…wser"

chore(handleTools.js): update customConstructor key for "web-browser" tool
… action.tool directly

refactor(endpoints.js): rename availableTools to tools and transform it into a map
refactor(CodeBlock.tsx): refactor to typescript
refactor(Plugin.tsx): use recoil Map for plugin name and refactor to typescript
chore(Message.jsx): linting
chore(PluginsOptions/index.jsx): remove comment/linting
chore(svg): export Clipboard and CheckMark components from SVG index and refactor to typescript
fix(OpenAPIPlugin.js): handle JSON files in readSpecFile function
fix(OpenAPIPlugin.js): handle JSON URLs in getSpec function
fix(OpenAPIPlugin.js): handle JSON variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add description for variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(loadSpecs.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(Plugin.tsx): remove unnecessary callback parameter in getPluginName function
fix(getDefaultConversation.js): fix browser console error: handle null value for lastConversationSetup in getDefaultConversation function
Add Ai PDF tool for super-fast, interactive chats with PDFs of any size, complete with page references for fact checking.
Add VoxScript tool for searching through YouTube transcripts, financial data sources, Google Search results, and more.
Add WebPilot tool for browsing and QA of webpages, PDFs, and data. Generate articles from one or more URLs.

feat(api): update OpenAPIPlugin.js

- Add support for bearer token authorization in the OpenAPIPlugin.
- Add support for custom headers in the OpenAPIPlugin.

fix(api): fix loadTools.js

- Pass the user parameter to the loadSpecs function.
feat(PluginsClient.js): add message parameter to options object in initializeCustomAgent function
feat(PluginsClient.js): add content to errorMessage if message content is found
feat(PluginsClient.js): break out of loop if message content is found
feat(PluginsClient.js): add delay option with value of 8 to generateTextStream function
feat(PluginsClient.js): add support for process.env.PORT environment variable in app.listen function
feat(askyourpdf.json): add askyourpdf plugin configuration
feat(metar.json): add metar plugin configuration
feat(askyourpdf.yaml): add askyourpdf plugin OpenAPI specification
feat(OpenAPIPlugin.js): add message parameter to createOpenAPIPlugin function
feat(OpenAPIPlugin.js): add description_for_model to chain run message
feat(addOpenAPISpecs.js): remove verbose option from loadSpecs function call

fix(loadSpecs.js): add 'message' parameter to the loadSpecs function
feat(findMessageContent.js): add utility function to find message content in JSON objects
…iner

The z-index value for the dialog container was updated to "102" to ensure it appears above other elements on the page.
fix(Login.tsx): add missing semicolon after import statement
…_id' for consistency and clarity

feat(plugins): add documentation for using official ChatGPT Plugins with OpenAPI specs

This commit adds a new file `chatgpt_plugins_openapi.md` to the `docs/features/plugins` directory. The file provides detailed information on how to use official ChatGPT Plugins with OpenAPI specifications. It explains the components of a plugin, including the Plugin Manifest file and the OpenAPI spec. It also covers the process of adding a plugin, editing manifest files, and customizing OpenAPI spec files. Additionally, the commit includes disclaimers about the limitations and compatibility of plugins with LibreChat. The documentation also clarifies that the use of ChatGPT Plugins with LibreChat does not violate OpenAI's Terms of Service.

The purpose of this commit is to provide comprehensive documentation for developers who want to integrate ChatGPT Plugins into their projects using OpenAPI specs. It aims to guide them through the process of adding and configuring plugins, as well as addressing potential issues and

chore(introduction.md): update link to ChatGPT Plugins documentation
docs(introduction.md): clarify the purpose of the plugins endpoint and its capabilities
…scription

docs(chatgpt_plugins_openapi.md): update information about adding plugins via url on the frontend
fix(PluginsClient.js, server/index.js, gptPlugins.js): linting fixes
docs(chatgpt_plugins_openapi.md): update links and add additional information
The AI model selection list in the README.md file has been updated to reflect the current options available. The "Anthropic" model has been added as an alternative name for the "Claude" model.
feat(tools): remove tool Weather Report

feat(tools): add new tool Prompt Perfect

feat(tools): add new tool Scholarly Graph Link
feat(OpenAPIPlugin.spec.js): add tests for readSpecFile, getSpec, and createOpenAPIPlugin functions
chore(agent-demo-2.js): remove unused code and dependencies
chore(demo.js): remove unused code and dependencies
…esired format

feat(addOpenAPISpecs.spec): add tests for transformSpec function
fix(loadSpecs): remove debugging code
@danny-avila danny-avila marked this pull request as ready for review July 15, 2023 21:12
@danny-avila
Copy link
Owner Author

image

@danny-avila danny-avila merged commit 514f625 into main Jul 16, 2023
@danny-avila danny-avila deleted the openapi-chain branch July 16, 2023 16:19
bsu3338 added a commit to bsu3338/LibreChat that referenced this pull request Jul 17, 2023
commit 1ef53a4
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date:   Sun Jul 16 13:22:36 2023 -0400

    chore(Settings.jsx): update placeholder text for promptPrefix/system message (danny-avila#656)

commit 0246f16
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date:   Sun Jul 16 13:14:07 2023 -0400

    docs: add "chatgpt_plugins_openapi.md" to readme.md and mkdocs (danny-avila#655)

    * docs: add chatgpt_plugins_openapi.md to toc

    * docs: add chatgpt_plugins_openapi.md to mkdocs toc

commit 514f625
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date:   Sun Jul 16 12:19:47 2023 -0400

    feat: ChatGPT Plugins/OpenAPI specs for Plugins Endpoint (danny-avila#620)

    * wip: proof of concept for openapi chain

    * chore(api): update langchain dependency to version 0.0.105

    * feat(Plugins): use ChatGPT Plugins/OpenAPI specs (first pass)

    * chore(manifest.json): update pluginKey for "Browser" tool to "web-browser"
    chore(handleTools.js): update customConstructor key for "web-browser" tool

    * fix(handleSubmit.js): set unfinished property to false for all endpoints

    * fix(handlers.js): remove unnecessary capitalizeWords function and use action.tool directly
    refactor(endpoints.js): rename availableTools to tools and transform it into a map

    * feat(endpoints): add plugins selector to endpoints file
    refactor(CodeBlock.tsx): refactor to typescript
    refactor(Plugin.tsx): use recoil Map for plugin name and refactor to typescript
    chore(Message.jsx): linting
    chore(PluginsOptions/index.jsx): remove comment/linting
    chore(svg): export Clipboard and CheckMark components from SVG index and refactor to typescript

    * fix(OpenAPIPlugin.js): rename readYamlFile function to readSpecFile
    fix(OpenAPIPlugin.js): handle JSON files in readSpecFile function
    fix(OpenAPIPlugin.js): handle JSON URLs in getSpec function
    fix(OpenAPIPlugin.js): handle JSON variables in createOpenAPIPlugin function
    fix(OpenAPIPlugin.js): add description for variables in createOpenAPIPlugin function
    fix(OpenAPIPlugin.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
    fix(loadSpecs.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
    fix(Plugin.tsx): remove unnecessary callback parameter in getPluginName function
    fix(getDefaultConversation.js): fix browser console error: handle null value for lastConversationSetup in getDefaultConversation function

    * feat(api): add new tools

    Add Ai PDF tool for super-fast, interactive chats with PDFs of any size, complete with page references for fact checking.
    Add VoxScript tool for searching through YouTube transcripts, financial data sources, Google Search results, and more.
    Add WebPilot tool for browsing and QA of webpages, PDFs, and data. Generate articles from one or more URLs.

    feat(api): update OpenAPIPlugin.js

    - Add support for bearer token authorization in the OpenAPIPlugin.
    - Add support for custom headers in the OpenAPIPlugin.

    fix(api): fix loadTools.js

    - Pass the user parameter to the loadSpecs function.

    * feat(PluginsClient.js): import findMessageContent function from utils
    feat(PluginsClient.js): add message parameter to options object in initializeCustomAgent function
    feat(PluginsClient.js): add content to errorMessage if message content is found
    feat(PluginsClient.js): break out of loop if message content is found
    feat(PluginsClient.js): add delay option with value of 8 to generateTextStream function
    feat(PluginsClient.js): add support for process.env.PORT environment variable in app.listen function
    feat(askyourpdf.json): add askyourpdf plugin configuration
    feat(metar.json): add metar plugin configuration
    feat(askyourpdf.yaml): add askyourpdf plugin OpenAPI specification
    feat(OpenAPIPlugin.js): add message parameter to createOpenAPIPlugin function
    feat(OpenAPIPlugin.js): add description_for_model to chain run message
    feat(addOpenAPISpecs.js): remove verbose option from loadSpecs function call

    fix(loadSpecs.js): add 'message' parameter to the loadSpecs function
    feat(findMessageContent.js): add utility function to find message content in JSON objects

    * fix(PluginStoreDialog.tsx): update z-index value for the dialog container

    The z-index value for the dialog container was updated to "102" to ensure it appears above other elements on the page.

    * chore(web_pilot.json): add "params" field with "user_has_request" parameter set to true

    * chore(eslintrc.js): update eslint rules
    fix(Login.tsx): add missing semicolon after import statement

    * fix(package-lock.json): update langchain dependency to version ^0.0.105

    * fix(OpenAPIPlugin.js): change header key from 'id' to 'librechat_user_id' for consistency and clarity

    feat(plugins): add documentation for using official ChatGPT Plugins with OpenAPI specs

    This commit adds a new file `chatgpt_plugins_openapi.md` to the `docs/features/plugins` directory. The file provides detailed information on how to use official ChatGPT Plugins with OpenAPI specifications. It explains the components of a plugin, including the Plugin Manifest file and the OpenAPI spec. It also covers the process of adding a plugin, editing manifest files, and customizing OpenAPI spec files. Additionally, the commit includes disclaimers about the limitations and compatibility of plugins with LibreChat. The documentation also clarifies that the use of ChatGPT Plugins with LibreChat does not violate OpenAI's Terms of Service.

    The purpose of this commit is to provide comprehensive documentation for developers who want to integrate ChatGPT Plugins into their projects using OpenAPI specs. It aims to guide them through the process of adding and configuring plugins, as well as addressing potential issues and

    chore(introduction.md): update link to ChatGPT Plugins documentation
    docs(introduction.md): clarify the purpose of the plugins endpoint and its capabilities

    * fix(OpenAPIPlugin.js): update SUFFIX variable to provide a clearer description
    docs(chatgpt_plugins_openapi.md): update information about adding plugins via url on the frontend

    * feat(PluginsClient.js): sendIntermediateMessage on successful Agent load
    fix(PluginsClient.js, server/index.js, gptPlugins.js): linting fixes
    docs(chatgpt_plugins_openapi.md): update links and add additional information

    * Update chatgpt_plugins_openapi.md

    * chore: rebuild package-lock file

    * chore: format/lint all files with new rules

    * chore: format all files

    * chore(README.md): update AI model selection list

    The AI model selection list in the README.md file has been updated to reflect the current options available. The "Anthropic" model has been added as an alternative name for the "Claude" model.

    * fix(Plugin.tsx): type issue

    * feat(tools): add new tool WebPilot

    feat(tools): remove tool Weather Report

    feat(tools): add new tool Prompt Perfect

    feat(tools): add new tool Scholarly Graph Link

    * feat(OpenAPIPlugin.js): add getSpec and readSpecFile functions
    feat(OpenAPIPlugin.spec.js): add tests for readSpecFile, getSpec, and createOpenAPIPlugin functions

    * chore(agent-demo-1.js): remove unused code and dependencies
    chore(agent-demo-2.js): remove unused code and dependencies
    chore(demo.js): remove unused code and dependencies

    * feat(addOpenAPISpecs): add function to transform OpenAPI specs into desired format
    feat(addOpenAPISpecs.spec): add tests for transformSpec function
    fix(loadSpecs): remove debugging code

    * feat(loadSpecs.spec.js): add unit tests for ManifestDefinition, validateJson, and loadSpecs functions

    * fix: package file resolution bug

    * chore: move scholarly_graph_link manifest to 'has-issues'

    * refactor(client/hooks): convert to TS and export from index

    * Update introduction.md

    * Update chatgpt_plugins_openapi.md
bsu3338 added a commit to bsu3338/LibreChat that referenced this pull request Jul 17, 2023
commit 1ef53a4
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date:   Sun Jul 16 13:22:36 2023 -0400

    chore(Settings.jsx): update placeholder text for promptPrefix/system message (danny-avila#656)

commit 0246f16
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date:   Sun Jul 16 13:14:07 2023 -0400

    docs: add "chatgpt_plugins_openapi.md" to readme.md and mkdocs (danny-avila#655)

    * docs: add chatgpt_plugins_openapi.md to toc

    * docs: add chatgpt_plugins_openapi.md to mkdocs toc

commit 514f625
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date:   Sun Jul 16 12:19:47 2023 -0400

    feat: ChatGPT Plugins/OpenAPI specs for Plugins Endpoint (danny-avila#620)

    * wip: proof of concept for openapi chain

    * chore(api): update langchain dependency to version 0.0.105

    * feat(Plugins): use ChatGPT Plugins/OpenAPI specs (first pass)

    * chore(manifest.json): update pluginKey for "Browser" tool to "web-browser"
    chore(handleTools.js): update customConstructor key for "web-browser" tool

    * fix(handleSubmit.js): set unfinished property to false for all endpoints

    * fix(handlers.js): remove unnecessary capitalizeWords function and use action.tool directly
    refactor(endpoints.js): rename availableTools to tools and transform it into a map

    * feat(endpoints): add plugins selector to endpoints file
    refactor(CodeBlock.tsx): refactor to typescript
    refactor(Plugin.tsx): use recoil Map for plugin name and refactor to typescript
    chore(Message.jsx): linting
    chore(PluginsOptions/index.jsx): remove comment/linting
    chore(svg): export Clipboard and CheckMark components from SVG index and refactor to typescript

    * fix(OpenAPIPlugin.js): rename readYamlFile function to readSpecFile
    fix(OpenAPIPlugin.js): handle JSON files in readSpecFile function
    fix(OpenAPIPlugin.js): handle JSON URLs in getSpec function
    fix(OpenAPIPlugin.js): handle JSON variables in createOpenAPIPlugin function
    fix(OpenAPIPlugin.js): add description for variables in createOpenAPIPlugin function
    fix(OpenAPIPlugin.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
    fix(loadSpecs.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
    fix(Plugin.tsx): remove unnecessary callback parameter in getPluginName function
    fix(getDefaultConversation.js): fix browser console error: handle null value for lastConversationSetup in getDefaultConversation function

    * feat(api): add new tools

    Add Ai PDF tool for super-fast, interactive chats with PDFs of any size, complete with page references for fact checking.
    Add VoxScript tool for searching through YouTube transcripts, financial data sources, Google Search results, and more.
    Add WebPilot tool for browsing and QA of webpages, PDFs, and data. Generate articles from one or more URLs.

    feat(api): update OpenAPIPlugin.js

    - Add support for bearer token authorization in the OpenAPIPlugin.
    - Add support for custom headers in the OpenAPIPlugin.

    fix(api): fix loadTools.js

    - Pass the user parameter to the loadSpecs function.

    * feat(PluginsClient.js): import findMessageContent function from utils
    feat(PluginsClient.js): add message parameter to options object in initializeCustomAgent function
    feat(PluginsClient.js): add content to errorMessage if message content is found
    feat(PluginsClient.js): break out of loop if message content is found
    feat(PluginsClient.js): add delay option with value of 8 to generateTextStream function
    feat(PluginsClient.js): add support for process.env.PORT environment variable in app.listen function
    feat(askyourpdf.json): add askyourpdf plugin configuration
    feat(metar.json): add metar plugin configuration
    feat(askyourpdf.yaml): add askyourpdf plugin OpenAPI specification
    feat(OpenAPIPlugin.js): add message parameter to createOpenAPIPlugin function
    feat(OpenAPIPlugin.js): add description_for_model to chain run message
    feat(addOpenAPISpecs.js): remove verbose option from loadSpecs function call

    fix(loadSpecs.js): add 'message' parameter to the loadSpecs function
    feat(findMessageContent.js): add utility function to find message content in JSON objects

    * fix(PluginStoreDialog.tsx): update z-index value for the dialog container

    The z-index value for the dialog container was updated to "102" to ensure it appears above other elements on the page.

    * chore(web_pilot.json): add "params" field with "user_has_request" parameter set to true

    * chore(eslintrc.js): update eslint rules
    fix(Login.tsx): add missing semicolon after import statement

    * fix(package-lock.json): update langchain dependency to version ^0.0.105

    * fix(OpenAPIPlugin.js): change header key from 'id' to 'librechat_user_id' for consistency and clarity

    feat(plugins): add documentation for using official ChatGPT Plugins with OpenAPI specs

    This commit adds a new file `chatgpt_plugins_openapi.md` to the `docs/features/plugins` directory. The file provides detailed information on how to use official ChatGPT Plugins with OpenAPI specifications. It explains the components of a plugin, including the Plugin Manifest file and the OpenAPI spec. It also covers the process of adding a plugin, editing manifest files, and customizing OpenAPI spec files. Additionally, the commit includes disclaimers about the limitations and compatibility of plugins with LibreChat. The documentation also clarifies that the use of ChatGPT Plugins with LibreChat does not violate OpenAI's Terms of Service.

    The purpose of this commit is to provide comprehensive documentation for developers who want to integrate ChatGPT Plugins into their projects using OpenAPI specs. It aims to guide them through the process of adding and configuring plugins, as well as addressing potential issues and

    chore(introduction.md): update link to ChatGPT Plugins documentation
    docs(introduction.md): clarify the purpose of the plugins endpoint and its capabilities

    * fix(OpenAPIPlugin.js): update SUFFIX variable to provide a clearer description
    docs(chatgpt_plugins_openapi.md): update information about adding plugins via url on the frontend

    * feat(PluginsClient.js): sendIntermediateMessage on successful Agent load
    fix(PluginsClient.js, server/index.js, gptPlugins.js): linting fixes
    docs(chatgpt_plugins_openapi.md): update links and add additional information

    * Update chatgpt_plugins_openapi.md

    * chore: rebuild package-lock file

    * chore: format/lint all files with new rules

    * chore: format all files

    * chore(README.md): update AI model selection list

    The AI model selection list in the README.md file has been updated to reflect the current options available. The "Anthropic" model has been added as an alternative name for the "Claude" model.

    * fix(Plugin.tsx): type issue

    * feat(tools): add new tool WebPilot

    feat(tools): remove tool Weather Report

    feat(tools): add new tool Prompt Perfect

    feat(tools): add new tool Scholarly Graph Link

    * feat(OpenAPIPlugin.js): add getSpec and readSpecFile functions
    feat(OpenAPIPlugin.spec.js): add tests for readSpecFile, getSpec, and createOpenAPIPlugin functions

    * chore(agent-demo-1.js): remove unused code and dependencies
    chore(agent-demo-2.js): remove unused code and dependencies
    chore(demo.js): remove unused code and dependencies

    * feat(addOpenAPISpecs): add function to transform OpenAPI specs into desired format
    feat(addOpenAPISpecs.spec): add tests for transformSpec function
    fix(loadSpecs): remove debugging code

    * feat(loadSpecs.spec.js): add unit tests for ManifestDefinition, validateJson, and loadSpecs functions

    * fix: package file resolution bug

    * chore: move scholarly_graph_link manifest to 'has-issues'

    * refactor(client/hooks): convert to TS and export from index

    * Update introduction.md

    * Update chatgpt_plugins_openapi.md
Merge remote-tracking branch 'upstream/main' into Refresh-Token-Update
cnkang pushed a commit to cnkang/LibreChat that referenced this pull request Feb 6, 2024
…#620)

* wip: proof of concept for openapi chain

* chore(api): update langchain dependency to version 0.0.105

* feat(Plugins): use ChatGPT Plugins/OpenAPI specs (first pass)

* chore(manifest.json): update pluginKey for "Browser" tool to "web-browser"
chore(handleTools.js): update customConstructor key for "web-browser" tool

* fix(handleSubmit.js): set unfinished property to false for all endpoints

* fix(handlers.js): remove unnecessary capitalizeWords function and use action.tool directly
refactor(endpoints.js): rename availableTools to tools and transform it into a map

* feat(endpoints): add plugins selector to endpoints file
refactor(CodeBlock.tsx): refactor to typescript
refactor(Plugin.tsx): use recoil Map for plugin name and refactor to typescript
chore(Message.jsx): linting
chore(PluginsOptions/index.jsx): remove comment/linting
chore(svg): export Clipboard and CheckMark components from SVG index and refactor to typescript

* fix(OpenAPIPlugin.js): rename readYamlFile function to readSpecFile
fix(OpenAPIPlugin.js): handle JSON files in readSpecFile function
fix(OpenAPIPlugin.js): handle JSON URLs in getSpec function
fix(OpenAPIPlugin.js): handle JSON variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add description for variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(loadSpecs.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(Plugin.tsx): remove unnecessary callback parameter in getPluginName function
fix(getDefaultConversation.js): fix browser console error: handle null value for lastConversationSetup in getDefaultConversation function

* feat(api): add new tools

Add Ai PDF tool for super-fast, interactive chats with PDFs of any size, complete with page references for fact checking.
Add VoxScript tool for searching through YouTube transcripts, financial data sources, Google Search results, and more.
Add WebPilot tool for browsing and QA of webpages, PDFs, and data. Generate articles from one or more URLs.

feat(api): update OpenAPIPlugin.js

- Add support for bearer token authorization in the OpenAPIPlugin.
- Add support for custom headers in the OpenAPIPlugin.

fix(api): fix loadTools.js

- Pass the user parameter to the loadSpecs function.

* feat(PluginsClient.js): import findMessageContent function from utils
feat(PluginsClient.js): add message parameter to options object in initializeCustomAgent function
feat(PluginsClient.js): add content to errorMessage if message content is found
feat(PluginsClient.js): break out of loop if message content is found
feat(PluginsClient.js): add delay option with value of 8 to generateTextStream function
feat(PluginsClient.js): add support for process.env.PORT environment variable in app.listen function
feat(askyourpdf.json): add askyourpdf plugin configuration
feat(metar.json): add metar plugin configuration
feat(askyourpdf.yaml): add askyourpdf plugin OpenAPI specification
feat(OpenAPIPlugin.js): add message parameter to createOpenAPIPlugin function
feat(OpenAPIPlugin.js): add description_for_model to chain run message
feat(addOpenAPISpecs.js): remove verbose option from loadSpecs function call

fix(loadSpecs.js): add 'message' parameter to the loadSpecs function
feat(findMessageContent.js): add utility function to find message content in JSON objects

* fix(PluginStoreDialog.tsx): update z-index value for the dialog container

The z-index value for the dialog container was updated to "102" to ensure it appears above other elements on the page.

* chore(web_pilot.json): add "params" field with "user_has_request" parameter set to true

* chore(eslintrc.js): update eslint rules
fix(Login.tsx): add missing semicolon after import statement

* fix(package-lock.json): update langchain dependency to version ^0.0.105

* fix(OpenAPIPlugin.js): change header key from 'id' to 'librechat_user_id' for consistency and clarity

feat(plugins): add documentation for using official ChatGPT Plugins with OpenAPI specs

This commit adds a new file `chatgpt_plugins_openapi.md` to the `docs/features/plugins` directory. The file provides detailed information on how to use official ChatGPT Plugins with OpenAPI specifications. It explains the components of a plugin, including the Plugin Manifest file and the OpenAPI spec. It also covers the process of adding a plugin, editing manifest files, and customizing OpenAPI spec files. Additionally, the commit includes disclaimers about the limitations and compatibility of plugins with LibreChat. The documentation also clarifies that the use of ChatGPT Plugins with LibreChat does not violate OpenAI's Terms of Service.

The purpose of this commit is to provide comprehensive documentation for developers who want to integrate ChatGPT Plugins into their projects using OpenAPI specs. It aims to guide them through the process of adding and configuring plugins, as well as addressing potential issues and

chore(introduction.md): update link to ChatGPT Plugins documentation
docs(introduction.md): clarify the purpose of the plugins endpoint and its capabilities

* fix(OpenAPIPlugin.js): update SUFFIX variable to provide a clearer description
docs(chatgpt_plugins_openapi.md): update information about adding plugins via url on the frontend

* feat(PluginsClient.js): sendIntermediateMessage on successful Agent load
fix(PluginsClient.js, server/index.js, gptPlugins.js): linting fixes
docs(chatgpt_plugins_openapi.md): update links and add additional information

* Update chatgpt_plugins_openapi.md

* chore: rebuild package-lock file

* chore: format/lint all files with new rules

* chore: format all files

* chore(README.md): update AI model selection list

The AI model selection list in the README.md file has been updated to reflect the current options available. The "Anthropic" model has been added as an alternative name for the "Claude" model.

* fix(Plugin.tsx): type issue

* feat(tools): add new tool WebPilot

feat(tools): remove tool Weather Report

feat(tools): add new tool Prompt Perfect

feat(tools): add new tool Scholarly Graph Link

* feat(OpenAPIPlugin.js): add getSpec and readSpecFile functions
feat(OpenAPIPlugin.spec.js): add tests for readSpecFile, getSpec, and createOpenAPIPlugin functions

* chore(agent-demo-1.js): remove unused code and dependencies
chore(agent-demo-2.js): remove unused code and dependencies
chore(demo.js): remove unused code and dependencies

* feat(addOpenAPISpecs): add function to transform OpenAPI specs into desired format
feat(addOpenAPISpecs.spec): add tests for transformSpec function
fix(loadSpecs): remove debugging code

* feat(loadSpecs.spec.js): add unit tests for ManifestDefinition, validateJson, and loadSpecs functions

* fix: package file resolution bug

* chore: move scholarly_graph_link manifest to 'has-issues'

* refactor(client/hooks): convert to TS and export from index

* Update introduction.md

* Update chatgpt_plugins_openapi.md
jinzishuai pushed a commit to aitok-ai/LibreChat that referenced this pull request May 20, 2024
…#620)

* wip: proof of concept for openapi chain

* chore(api): update langchain dependency to version 0.0.105

* feat(Plugins): use ChatGPT Plugins/OpenAPI specs (first pass)

* chore(manifest.json): update pluginKey for "Browser" tool to "web-browser"
chore(handleTools.js): update customConstructor key for "web-browser" tool

* fix(handleSubmit.js): set unfinished property to false for all endpoints

* fix(handlers.js): remove unnecessary capitalizeWords function and use action.tool directly
refactor(endpoints.js): rename availableTools to tools and transform it into a map

* feat(endpoints): add plugins selector to endpoints file
refactor(CodeBlock.tsx): refactor to typescript
refactor(Plugin.tsx): use recoil Map for plugin name and refactor to typescript
chore(Message.jsx): linting
chore(PluginsOptions/index.jsx): remove comment/linting
chore(svg): export Clipboard and CheckMark components from SVG index and refactor to typescript

* fix(OpenAPIPlugin.js): rename readYamlFile function to readSpecFile
fix(OpenAPIPlugin.js): handle JSON files in readSpecFile function
fix(OpenAPIPlugin.js): handle JSON URLs in getSpec function
fix(OpenAPIPlugin.js): handle JSON variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add description for variables in createOpenAPIPlugin function
fix(OpenAPIPlugin.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(loadSpecs.js): add optional flag for is_user_authenticated and has_user_authentication in ManifestDefinition
fix(Plugin.tsx): remove unnecessary callback parameter in getPluginName function
fix(getDefaultConversation.js): fix browser console error: handle null value for lastConversationSetup in getDefaultConversation function

* feat(api): add new tools

Add Ai PDF tool for super-fast, interactive chats with PDFs of any size, complete with page references for fact checking.
Add VoxScript tool for searching through YouTube transcripts, financial data sources, Google Search results, and more.
Add WebPilot tool for browsing and QA of webpages, PDFs, and data. Generate articles from one or more URLs.

feat(api): update OpenAPIPlugin.js

- Add support for bearer token authorization in the OpenAPIPlugin.
- Add support for custom headers in the OpenAPIPlugin.

fix(api): fix loadTools.js

- Pass the user parameter to the loadSpecs function.

* feat(PluginsClient.js): import findMessageContent function from utils
feat(PluginsClient.js): add message parameter to options object in initializeCustomAgent function
feat(PluginsClient.js): add content to errorMessage if message content is found
feat(PluginsClient.js): break out of loop if message content is found
feat(PluginsClient.js): add delay option with value of 8 to generateTextStream function
feat(PluginsClient.js): add support for process.env.PORT environment variable in app.listen function
feat(askyourpdf.json): add askyourpdf plugin configuration
feat(metar.json): add metar plugin configuration
feat(askyourpdf.yaml): add askyourpdf plugin OpenAPI specification
feat(OpenAPIPlugin.js): add message parameter to createOpenAPIPlugin function
feat(OpenAPIPlugin.js): add description_for_model to chain run message
feat(addOpenAPISpecs.js): remove verbose option from loadSpecs function call

fix(loadSpecs.js): add 'message' parameter to the loadSpecs function
feat(findMessageContent.js): add utility function to find message content in JSON objects

* fix(PluginStoreDialog.tsx): update z-index value for the dialog container

The z-index value for the dialog container was updated to "102" to ensure it appears above other elements on the page.

* chore(web_pilot.json): add "params" field with "user_has_request" parameter set to true

* chore(eslintrc.js): update eslint rules
fix(Login.tsx): add missing semicolon after import statement

* fix(package-lock.json): update langchain dependency to version ^0.0.105

* fix(OpenAPIPlugin.js): change header key from 'id' to 'librechat_user_id' for consistency and clarity

feat(plugins): add documentation for using official ChatGPT Plugins with OpenAPI specs

This commit adds a new file `chatgpt_plugins_openapi.md` to the `docs/features/plugins` directory. The file provides detailed information on how to use official ChatGPT Plugins with OpenAPI specifications. It explains the components of a plugin, including the Plugin Manifest file and the OpenAPI spec. It also covers the process of adding a plugin, editing manifest files, and customizing OpenAPI spec files. Additionally, the commit includes disclaimers about the limitations and compatibility of plugins with LibreChat. The documentation also clarifies that the use of ChatGPT Plugins with LibreChat does not violate OpenAI's Terms of Service.

The purpose of this commit is to provide comprehensive documentation for developers who want to integrate ChatGPT Plugins into their projects using OpenAPI specs. It aims to guide them through the process of adding and configuring plugins, as well as addressing potential issues and

chore(introduction.md): update link to ChatGPT Plugins documentation
docs(introduction.md): clarify the purpose of the plugins endpoint and its capabilities

* fix(OpenAPIPlugin.js): update SUFFIX variable to provide a clearer description
docs(chatgpt_plugins_openapi.md): update information about adding plugins via url on the frontend

* feat(PluginsClient.js): sendIntermediateMessage on successful Agent load
fix(PluginsClient.js, server/index.js, gptPlugins.js): linting fixes
docs(chatgpt_plugins_openapi.md): update links and add additional information

* Update chatgpt_plugins_openapi.md

* chore: rebuild package-lock file

* chore: format/lint all files with new rules

* chore: format all files

* chore(README.md): update AI model selection list

The AI model selection list in the README.md file has been updated to reflect the current options available. The "Anthropic" model has been added as an alternative name for the "Claude" model.

* fix(Plugin.tsx): type issue

* feat(tools): add new tool WebPilot

feat(tools): remove tool Weather Report

feat(tools): add new tool Prompt Perfect

feat(tools): add new tool Scholarly Graph Link

* feat(OpenAPIPlugin.js): add getSpec and readSpecFile functions
feat(OpenAPIPlugin.spec.js): add tests for readSpecFile, getSpec, and createOpenAPIPlugin functions

* chore(agent-demo-1.js): remove unused code and dependencies
chore(agent-demo-2.js): remove unused code and dependencies
chore(demo.js): remove unused code and dependencies

* feat(addOpenAPISpecs): add function to transform OpenAPI specs into desired format
feat(addOpenAPISpecs.spec): add tests for transformSpec function
fix(loadSpecs): remove debugging code

* feat(loadSpecs.spec.js): add unit tests for ManifestDefinition, validateJson, and loadSpecs functions

* fix: package file resolution bug

* chore: move scholarly_graph_link manifest to 'has-issues'

* refactor(client/hooks): convert to TS and export from index

* Update introduction.md

* Update chatgpt_plugins_openapi.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant