Function Calling Extensions Sample Description This project is a Go application that demonstrates how to use function calling in an agent-based GitHub Copilot Extension. Prerequisites Go 1.16 or higher Set the following environment variables (example below): export PORT=8080 export CLIENT_ID=Iv1.0ae52273ad3193eb // the application id export CLIENT_SECRET="your_client_secret" // generate a new client secret for your application export FQDN=https://6de513480979.ngrok.app // use ngrok to expose a url Installation: Clone the repository: git clone git@github.com:copilot-extensions/function-calling-extension.git cd function-calling-extension Install dependencies: go mod tidy Usage Start up ngrok with the port provided: ngrok http http://localhost:8080 Set the environment variables (use the ngrok generated url for the FDQN) Run the application: go run . Accessing the Agent in Chat: In the Copilot tab of your Application settings (https://github.com/settings/apps/ 8B15 <app_name>/agent) Set the URL that was set for your FQDN above with the endpoint /agent (e.g. https://6de513480979.ngrok.app/agent) Set the Pre-Authorization URL with the endpoint /auth/authorization (e.g. https://6de513480979.ngrok.app/auth/authorization) In the General tab of your application settings (https://github.com/settings/apps/<app_name>) Set the Callback URL with the /auth/callback endpoint (e.g. https://6de513480979.ngrok.app/auth/callback) Set the Homepage URL with the base ngrok endpoint (e.g. https://6de513480979.ngrok.app/auth/callback) Ensure your permissions are enabled in Permissions & events > Repository Permissions > Issues > Access: Read and Write Account Permissions > Copilot Chat > Access: Read Only Ensure you install your application at (https://github.com/apps/<app_name>) Now if you go to https://github.com/copilot you can @ your agent using the name of your application. What Can It Do Test out the agent with the following commands! Description Prompt User asking @agent to create a GitHub issue @agent Create an issue in the repo (org/repo) with title "my first issue" and body "hooray I created an issue" User asking @agent to list GitHub issues @agent list all issues in this repo (org/repo) Copilot Extensions Documentation Using Copilot Extensions About building Copilot Extensions Set up process Communicating with the Copilot platform Communicating with GitHub