/openai-plugin-fastapi

A simple ChatGPT Plugin running in Codespaces for dev and Azure for production.

Primary LanguageBicepMIT LicenseMIT

ChatGPT Plugin Quickstart using Python and FastAPI

This is a quickstart for sample for creating ChatGPT Plugin using GitHub Codespaces, VS Code, and Azure. The sample includes templates to deploy the plugin to Azure Container Apps using the Azure Developer CLI. To gain access to ChatGPT plugins, join waitlist here!

Open in GitHub Codespaces Open in Dev Container

Getting started

  1. 📤 One-click setup: Open a new Codespace, giving you a fully configured cloud developer environment.
  2. 🪄 Make an API: Add routes in main.py, done in a few minutes even without FastAPI experience, thanks to GitHub Copilot.
  3. ▶️ Run, one-click again: Use VS Code's built-in Run command and open the forwarded port 8000 in your browser.
  4. 💬 Test in ChatGPT: Copy the URL (make sure its public) and paste it in ChatGPT's Develop your own plugin flow.
  5. 🔄 Iterate quickly: Codespaces updates the server on each save, and VS Code's debugger lets you dig into the code execution.

Run

Run in Codespaces

  1. Click here to open in GitHub Codespaces

    Open in GitHub Codespaces

  2. Open Codespaces Ports tab, right click 8000, and make it public.

  3. Copy the Codesapces address for port 8000

  4. Open Chat GPT and add the plugin with the Codespaces address

  5. Run a query for 'hiking boots'

Run in Dev Container

  1. Click here to open in Dev Container

    Open in Dev Container

  2. Hit F5 to start the API

  3. Open Chat GPT and add the plugin with localhost:8000

  4. Run a query for 'hiking boots'

Run Locally

  1. Clone the repo to your local machine git clone https://github.com/azure-samples/openai-plugin-fastapi
  2. Open repo in VS Code
  3. Create a new Python virtual environment and activate it
  4. Hit F5 to start the API
  5. Open Chat GPT and add the plugin with localhost:8000
  6. Run a query for 'hiking boots'

Deploy to Azure

NOTE: If you are running locally, then you first need to install the Azure Developer CLI

Deploy with Azure Developer CLI

  1. Open a terminal
  2. Run azd auth login
  3. Run azd up
  4. Copy the endpoint printed to the terminal
  5. Open Chat GPT and add the plugin with that endpoint
  6. Run a query for 'hiking boots'

Deploy with GitHub Actions

NOTE: Due to a security restriction Codespaces in the browser may not work for you. If you see an error when running the following commands, then please open the project with VS Code by choosing the Connect to Codespace option.

  1. Fork this repo to your own account
  2. Open your fork in Codespaces, Dev Container or Local
  3. Open a terminal
  4. Run azd auth login
  5. Run azd pipeline config
  6. Click on the printed actions link. Scroll to the bottom of the logs to find the endpoint.
  7. Open Chat GPT and add the plugin with that endpoint
  8. Run a query for 'hiking boots'

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.