Copilot Extensions - 3P Skillsets (public preview) (#53141)

Co-authored-by: Dimitrios Philliou <d1m1tr10s@github.com>
Co-authored-by: hubwriter <hubwriter@github.com>
This commit is contained in:
Sunbrye Ly 2024-11-19 09:39:35 -08:00 коммит произвёл GitHub
Родитель 0e2ccc30ad
Коммит 0ff4b8c56c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
33 изменённых файлов: 355 добавлений и 86 удалений

Просмотреть файл

@ -46,7 +46,7 @@ If you're interested in creating an app for {% data variables.product.prodname_m
### {% data variables.product.prodname_copilot_extensions %}
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %}

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: About building Extensions
type: overview
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions_short %}
@ -45,6 +45,12 @@ type: overview
* Integrate their tool into the developer workflow on {% data variables.product.company_short %} and the IDE
* Leverage the {% data variables.product.company_short %} ecosystem to raise awareness for their product
### About skillsets and agents
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
### Resources for building {% data variables.product.prodname_copilot_extensions %}
{% data variables.product.company_short %} provides a comprehensive toolkit for extension builders, with code samples, a CLI debugging tool, quickstart SDKs, and a user feedback repository. For more information, see the [copilot-extensions](https://github.com/orgs/copilot-extensions/) organization on {% data variables.product.company_short %}.

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: About Copilot agents
type: overview
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_agents_short %} are custom tools embedded in {% data variables.product.prodname_copilot_extensions_short %}. They integrate with {% data variables.product.prodname_copilot_chat_short %} to provide additional functionalities tailored to specific needs. {% data variables.product.prodname_copilot_agents_short %} can perform various tasks such as querying documentation, retrieving data, executing specific actions, or providing AI-assisted coding suggestions. They enhance the capabilities of {% data variables.product.prodname_copilot %} by allowing developers to build and integrate custom features directly into the {% data variables.product.prodname_copilot_chat_short %} interface.

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Communicate with GitHub
type: reference
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## Prerequisites

Просмотреть файл

@ -10,7 +10,7 @@ type: reference
layout: inline
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_agents_short %} communicate with the {% data variables.product.prodname_copilot_short %} platform in the form of server-sent events (SSEs). Rather than waiting for the {% data variables.product.prodname_copilot_short %} platform to request an update from your agent, or vice versa, you can use SSEs to send and receive updates to and from the platform in real time.

Просмотреть файл

@ -10,7 +10,7 @@ type: reference
allowTitleToDifferFromFilename: true
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_short %}'s Language Learning Model (LLM)

Просмотреть файл

@ -0,0 +1,56 @@
---
title: About Copilot skillsets
intro: 'Learn what {% data variables.product.prodname_copilot_skillsets %} are and how they simplify integrating third-party tools and functions into your {% data variables.product.prodname_copilot_short %} experience.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: About {% data variables.product.prodname_copilot_skillsets_short %}
type: overview
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
A skill within {% data variables.product.prodname_copilot %} is a tool that the model calls to perform a specific task in response to a user query. A skillset is a collection of these skills (up to five per skillset). {% data variables.product.prodname_copilot_skillsets %} provide a streamlined way to extend {% data variables.product.prodname_copilot_short %}s functionality, allowing builders to integrate external services or custom API endpoints into their {% data variables.product.prodname_copilot_short %} workflow. With skillsets, builders can enable {% data variables.product.prodname_copilot_short %} to perform tasks—such as retrieving data or executing actions in third-party services—without needing to manage complex workflows or architecture.
For a quickstart example of a skillset, see the "[skillset-example](https://github.com/copilot-extensions/skillset-example)" repository. For information on building a skillset, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets)."
## How skillsets and agents differ
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
## The extensibility platform
Skillsets and agents both operate on the {% data variables.product.prodname_copilot_extensibility_platform %}, which manages the flow of user requests and function evaluations. With {% data variables.product.prodname_copilot_skillsets_short %}, the platform handles routing, prompt crafting, function calls and prompt generation.
### Workflow overview
The extensibility platform follows a structured workflow to process user requests and generate responses:
1. **User request**
A user issues a request in the {% data variables.product.prodname_copilot_chat_short %} interface, such as asking for data or executing a specific action.
1. **Routing**
The request is routed to the appropriate extension. For skillsets, this means the platform agent identifies and invokes the corresponding skillset based on the users intent. Each skills inference description helps the platform determine which skill to call.
1. **Dynamic Prompt Crafting**
{% data variables.product.prodname_copilot %} generates a prompt using:
* The users query.
* Relevant thread history.
* Available functions within the skillset.
* Results from any prior function calls.
1. **LLM Completion**
The language model (LLM) processes the prompt and determines:
* Whether the users intent matches a skillset function.
* Which function(s) to call and with what arguments.
* If required, the LLM may send additional function calls to gather more context.
1. **Function Evaluation**
The extension invokes the selected function(s), which may involve:
* Gathering relevant context, such as {% data variables.product.prodname_copilot_skillsets_short %} repository or user metadata.
* Making an API call to an external service to retrieve data or execute an action.
1. **Response generation**
The platform iteratively refines the output, looping through prompt crafting, LLM completion, and function evaluation as needed. Once the process is complete, {% data variables.product.prodname_copilot_short %} streams a final response back to the user in the chat interface.

Просмотреть файл

@ -0,0 +1,82 @@
---
title: Building Copilot skillsets
intro: 'Learn the steps to build {% data variables.product.prodname_copilot_skillsets %} and integrate custom tools and functions into your Copilot environment.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Build {% data variables.product.prodname_copilot_skillsets_short %}
type: how_to
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## Introduction
{% data variables.product.prodname_copilot_skillsets %} are a streamlined way to extend {% data variables.product.prodname_copilot %}'s functionality by defining API endpoints that {% data variables.product.prodname_copilot_short %} can call. When you create a skillset, {% data variables.product.prodname_copilot_short %} handles all the AI interactions while your endpoints provide the data or functionality. This guide walks you through configuring and deploying a skillset within your {% data variables.product.prodname_github_app %}.
## Prerequisites
Before you begin, make sure you have the following:
1. **A configured {% data variables.product.prodname_github_app %}**: Youll need a {% data variables.product.prodname_github_app %} to act as the container for your skillset. If you havent already set one up, refer to "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension)" and "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension)".
1. **API endpoints**: You need one endpoint per skill. Each endpoint must:
* Accept POST requests with the `application/json` MIME type
* Be able to verify the signature of requests from {% data variables.product.github %} to authenticate their origin and prevent unauthorized access
* Be publicly accessible via HTTPS
For more information about signature verification, see "[Verifying that payloads are coming from Github](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github#verifying-that-payloads-are-coming-from-github)".
## Configuration requirements
Each skillset is defined within a {% data variables.product.prodname_github_app %}. A single{% data variables.product.prodname_github_app %} can contain up to five skills. Each individual skill needs:
* **Name**: A clear and descriptive name (for example, "Get Issues").
* **Inference description**: A detailed explanation of what the skill does and when to use it (for example, "Searches for external issues matching specific criteria like status and labels").
* **API endpoint**: A POST endpoint that accepts JSON requests.
* **JSON schema**: The structure of data your endpoint expects.
### Example JSON schema
This example demonstrates a skill that requires two parameters: a status string and a label string. If no parameters are provided, an empty object with the type 'object' must be passed in as the request body.
```json
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "filter issues by status (open, closed)",
"enum": ["open", "closed"]
},
"label": {
"type": "string",
"description": "filter issues by label"
}
}
}
```
This format lets users make natural-language requests like `find open security issues` and {% data variables.product.prodname_copilot_short %} will structure the appropriate API call.
## Using your skillset
To use your skillset:
1. Type `@` followed by your extension's name.
1. Type your prompt in natural language.
For example:
* `@skillset-example generate a lorem ipsum`
* `@skillset-example give me sample data with 100 words`
Copilot interprets your request and calls the appropriate skill with the right parameters. There's no need to specify which skill to use—{% data variables.product.prodname_copilot_short %} determines this from your natural-language request and the inference descriptions provided.
## Setting up a skillset
{% data reusables.apps.settings-step-personal-orgs %}
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.github_apps %}
1. In the list of {% data variables.product.prodname_github_apps %}, click the {% data variables.product.prodname_github_app %} you want to configure for your skillset.
1. In the navigation menu on the left, select **{% data variables.product.prodname_copilot_short %}**.
1. Under **App Type**, select **Skillset** from the dropdown menu.
1. Optionally, in the **Pre-authorization URL** field, enter the URL where users will be redirected to start the authentication process. This step is necessary if your API requires users to connect their GitHub account to access certain features or data.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}

Просмотреть файл

@ -0,0 +1,13 @@
---
title: Building a Copilot skillset for your Copilot Extension
shortTitle: Build a Copilot skillset
intro: 'Learn how to build a custom {% data variables.product.prodname_copilot_skillset_short %} to combine custom skills and extend the capabilities of {% data variables.product.prodname_copilot_short %}.'
versions:
feature: copilot
topics:
- Copilot
children:
- /about-copilot-skillsets
- /building-copilot-skillsets
---

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Extensions Glossary
type: reference
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
The following terms are used in the context of {% data variables.product.prodname_copilot_extensions_short %}, and are defined here for clarity.
@ -55,7 +55,11 @@ An extension that is visible and installable by any {% data variables.product.co
#### Skill
A piece of code that retrieves context or executes an action in response to a users prompt (e.g., "findIssueByID(id: number)").
A piece of code that retrieves context or executes an action in response to a users prompt (for example, "findIssueByID(id: number)"). For a list of a skills, see "[Currently available skills](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#currently-available-skills)".
#### Skillset
A collection of skills in the form of an implementation in {% data variables.product.prodname_copilot_extensions %} that allows developers to connect external services or custom API endpoints to Copilot with minimal complexity. The {% data variables.product.prodname_copilot_extensibility_platform_short %} handles prompt crafting, function evaluation, and response generation. The developer handles only the API call.
#### Tool/Function Calling

Просмотреть файл

@ -1,50 +0,0 @@
---
title: Configuring your GitHub App for your Copilot agent
intro: 'Learn how to configure your {% data variables.product.prodname_github_app %} so that it is associated with your {% data variables.product.prodname_copilot_agent_short %}.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Configure App for agent
type: how_to
---
{% data reusables.copilot.copilot-extensions.beta-note %}
Once you have configured your server and created your {% data variables.product.prodname_github_app %}, you need to configure your {% data variables.product.prodname_github_app %} for use with your {% data variables.product.prodname_copilot_short %} agent.
## Prerequisites
* You have configured your server to deploy your {% data variables.product.prodname_copilot_agent_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
* You have created a {% data variables.product.prodname_github_app %} for your {% data variables.product.prodname_copilot_short %} agent. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension).
## Configuring your {% data variables.product.prodname_github_app %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Agent**.
1. Under "URL," enter your server's hostname (aka forwarding endpoint) that you copied from your terminal.
> [!NOTE] If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. Under "Inference description", type a brief description of your agent, then click **Save**. This will be the description users see when they hover over your agent's slug in the chat window.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.

Просмотреть файл

@ -0,0 +1,88 @@
---
title: Configuring your GitHub App for your Copilot extension
intro: 'Learn how to configure your {% data variables.product.prodname_github_app %} so that it is associated with your {% data variables.product.prodname_copilot_extension_short %}.'
defaultTool: agents
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Configure App for extension
type: how_to
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
Once you have configured your server and created your {% data variables.product.prodname_github_app %}, you need to configure your {% data variables.product.prodname_github_app %} for use with your {% data variables.product.prodname_copilot_short %} extension.
## Prerequisites
* You have configured your server to deploy your {% data variables.product.prodname_copilot_extension_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
* You have created a {% data variables.product.prodname_github_app %} for your {% data variables.product.prodname_copilot_short %} extension. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension).
## Configuring your {% data variables.product.prodname_github_app %}
{% agents %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Agent**.
1. Under "URL," enter your server's hostname (aka forwarding endpoint) that you copied from your terminal.
> [!NOTE] If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. Under "Inference description", type a brief description of your agent, then click **Save**. This will be the description users see when they hover over your extension's slug in the chat window.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endagents %}
{% skillsets %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Skillset**.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endskillsets %}

Просмотреть файл

@ -1,25 +1,26 @@
---
title: Configuring your server to host your Copilot agent
intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} agent accessible to the internet.'
title: Configuring your server to host your Copilot extension
intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} extension accessible to the internet.'
versions:
feature: copilot-extensions
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-host-your-copilot-agent
topics:
- Copilot
shortTitle: Host your agent
shortTitle: Host your extension
type: how_to
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
Your {% data variables.product.prodname_copilot_agent_short %} must be hosted on a server that is accessible to the internet. In this guide, we will use [ngrok](https://ngrok.com/) to create a tunnel to your local server, but you could also use a service like [localtunnel](https://localtunnel.github.io/www/) or [serveo](https://serveo.net/).
Your {% data variables.product.prodname_copilot_extension_short %} must be hosted on a server that is accessible to the internet. In this guide, we will use [ngrok](https://ngrok.com/) to create a tunnel to your local server, but you could also use a service like [localtunnel](https://localtunnel.github.io/www/) or [serveo](https://serveo.net/).
Alternatively, if you are a {% data variables.product.prodname_codespaces %} user, you can use the built-in {% data variables.product.prodname_codespaces %} port forwarding. For more information, see "[AUTOTITLE](/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace)."
## Prerequisites
* You have created a {% data variables.product.prodname_copilot_agent_short %}. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension)."
* You have created a {% data variables.product.prodname_copilot_extension_short %}. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension) or [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension)."
## Configuring your server
@ -28,25 +29,25 @@ Alternatively, if you are a {% data variables.product.prodname_codespaces %} use
1. Under "Agents," ensure the correct operating system is selected.
1. Under "Installation," follow the instructions for your operating system to download and install ngrok.
1. Under "Deploy your app online," select **Ephemeral domain** or **Static domain**.
1. Run the command provided in your terminal, replacing the port number with the port your agent is configured to run on. For example:
1. Run the command provided in your terminal, replacing the port number with the port your extension is configured to run on. For example:
* For an ephemeral domain:
```shell copy
ngrok http http://localhost:AGENT-PORT-NUMBER
ngrok http http://localhost:EXTENSION-PORT-NUMBER
```
* For a static domain:
```shell copy
ngrok http --domain=YOUR-STATIC-DOMAIN.ngrok-free.app AGENT-PORT-NUMBER
ngrok http --domain=YOUR-STATIC-DOMAIN.ngrok-free.app EXTENSION-PORT-NUMBER
```
1. In your terminal, next to "Forwarding," copy the URL that ngrok has assigned to your server. You will need this forwarding endpoint when you are configuring your {% data variables.product.prodname_github_app %}.
> [!NOTE] Do not copy the `-> http://localhost:XXXX` part of the URL.
>
> Keep the terminal window open while you are using your agent.
> Keep the terminal window open while you are using your extension.
## Next steps

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Create GitHub App
type: how_to
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
A {% data variables.product.prodname_copilot_extension_short %} is a {% data variables.product.prodname_github_app %} that is associated with a {% data variables.product.prodname_copilot_agent_short %}. The {% data variables.product.prodname_github_app %} you associate your {% data variables.product.prodname_copilot_agent_short %} with is used to authenticate the {% data variables.product.prodname_copilot_agent_short %} with {% data variables.product.prodname_dotcom %} and to authorize the {% data variables.product.prodname_copilot_agent_short %} to access the {% data variables.product.prodname_copilot_chat_short %} API. Each {% data variables.product.prodname_copilot_agent_short %} must be associated with a unique {% data variables.product.prodname_github_app %}.

Просмотреть файл

@ -7,7 +7,8 @@ versions:
topics:
- Copilot
children:
- /configuring-your-server-to-host-your-copilot-agent
- /configuring-your-server-to-host-your-copilot-extension
- /creating-a-github-app-for-your-copilot-extension
- /configuring-your-github-app-for-your-copilot-agent
- /configuring-your-github-app-for-your-copilot-extension
---

Просмотреть файл

@ -8,7 +8,7 @@ topics:
shortTitle: Debug Copilot Extension
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
With the debug tool for {% data variables.product.prodname_copilot_extensions_short %}, you can chat with your {% data variables.product.prodname_copilot_agent_short %} from the command line, then view detailed logs as your agent generates a response. You can pass several flags to the tool, with the most important flags being:
* The `url` flag, which contains the URL to access your {% data variables.product.prodname_copilot_agent_short %}. This is the only required flag to start the tool.

Просмотреть файл

@ -8,9 +8,10 @@ topics:
- Copilot
children:
- /about-building-copilot-extensions
- /quickstart-for-github-copilot-extensions
- /quickstart-for-github-copilot-extensions-using-agents
- /setting-up-copilot-extensions
- /building-a-copilot-agent-for-your-copilot-extension
- /building-a-copilot-skillset-for-your-copilot-extension
- /creating-a-copilot-extension
- /debugging-your-github-copilot-extension
- /managing-the-availability-of-your-copilot-extension

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Manage Extension availability
type: how_to
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
When you build a {% data variables.product.prodname_copilot_extension_short %}, you have two options for the visibility of your {% data variables.product.prodname_github_app %}:

Просмотреть файл

@ -1,21 +1,22 @@
---
title: Quickstart for GitHub Copilot Extensions
title: Quickstart for GitHub Copilot Extensions using agents
defaultTool: vscode
intro: 'Build and try out {% data variables.product.github %}''s Blackbeard extension to learn about the development process for {% data variables.product.prodname_copilot_extensions %}.'
versions:
feature: copilot-extensions
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-a-demo-agent
- /copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions
topics:
- Copilot
shortTitle: Extensions quickstart
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
The [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension) is a {% data variables.product.prodname_copilot_extension %} built with a simple agent that responds to requests like a pirate using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts.
The [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension) is a {% data variables.product.prodname_copilot_extension %} built with a simple agent that responds to requests like a pirate using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts. This guide uses a simple agent implementation, but the process is similar for skillsets.
This quickstart is designed to help you build and chat with the Blackbeard extension as quickly as possible. To instead learn how to create a new {% data variables.product.prodname_copilot_extension %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions)."
This quickstart is designed to help you build and chat with the Blackbeard extension as quickly as possible, so you can develop and test your extension without deploying infrastructure. For production, you'll need to host the application for your agent or skillset's endpoints on a publicly accessible server. To instead learn how to create a new {% data variables.product.prodname_copilot_extension %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions)."
## 1. Create and install a {% data variables.product.prodname_github_app %}

Просмотреть файл

@ -1,6 +1,7 @@
---
title: Setting up Copilot Extensions
intro: 'Follow these steps to start building {% data variables.product.prodname_copilot_extensions_short %}.'
defaultTool: agents
versions:
feature: copilot-extensions
topics:
@ -8,10 +9,16 @@ topics:
shortTitle: Set up Copilot Extensions
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
This article is designed to help you build an entirely new {% data variables.product.prodname_copilot_extension %}. To instead learn how to quickly build and test a demo {% data variables.product.prodname_copilot_extension_short %} created by {% data variables.product.github %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
{% agents %}
## 1. Learn about {% data variables.product.prodname_copilot_agents_short %}
{% data variables.product.prodname_copilot_agents_short %} contain the custom code for your {% data variables.product.prodname_copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.product.prodname_copilot_extension_short %} itself. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents)."
@ -59,3 +66,43 @@ To learn how to change the visibility of your {% data variables.product.prodname
## Next steps
To learn how to use your {% data variables.product.prodname_copilot_extension_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."
{% endagents %}
{% skillsets %}
## 1. Learn about {% data variables.product.prodname_copilot_skillsets %}
{% data variables.product.prodname_copilot_skillsets %} contain the custom code for your {% data variables.product.prodname_copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.product.prodname_copilot_extension_short %} itself.
Unlike {% data variables.product.prodname_copilot_agents_short %}, {% data variables.product.prodname_copilot_skillsets_short %} handle the logic behind prompt crafting, function evaluation, and response generation, making them an ideal choice for developers seeking quick and effective integrations with minimal effort. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
## 2. Build a {% data variables.product.prodname_copilot_skillset_short %}
To explore an example of a skillset implementation, see the [skillset-example](https://github.com/copilot-extensions/skillset-example) repository in the [`copilot-extensions`](https://github.com/copilot-extensions) organization.
To build a skillset, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets)."
## 3. Deploy your {% data variables.product.prodname_copilot_skillset_short %}
To make your {% data variables.product.prodname_copilot_skillset_short %} accessible to the {% data variables.product.prodname_copilot_short %} platform and {% data variables.product.github %}, you need to deploy it to a server that is reachable by HTTP request. See "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
## 4. Create a {% data variables.product.prodname_github_app %} and integrate it with your {% data variables.product.prodname_copilot_skillset_short %}
To create a {% data variables.product.prodname_copilot_extension_short %}, you need to create and configure a {% data variables.product.prodname_github_app %}, then integrate it with your {% data variables.product.prodname_copilot_skillset_short %}. See "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension)" and "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent)."
## 5. Choose the availability of your {% data variables.product.prodname_copilot_skillset_short %}
Choose one of two visibility levels for your {% data variables.product.prodname_copilot_extension_short %}:
* **Public**: Any user or organization account with the installation page link for the extension can install it.
* **Private**: Only the user or organization account that created the extension can install it.
If you make your {% data variables.product.prodname_copilot_extension_short %} public, you can then choose to list it on the {% data variables.product.prodname_marketplace %}.
To learn how to change the visibility of your {% data variables.product.prodname_copilot_extension_short %} and list it on the {% data variables.product.prodname_marketplace %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/managing-the-availability-of-your-copilot-extension)."
## Next steps
To learn how to use your {% data variables.product.prodname_copilot_extension_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."
{% endskillsets %}

Просмотреть файл

@ -16,7 +16,7 @@ redirect_from:
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/installing-github-copilot-extensions-for-your-organization
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %} for your organization

Просмотреть файл

@ -12,7 +12,7 @@ redirect_from:
- /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %} for your personal account

Просмотреть файл

@ -61,7 +61,7 @@ You can chat with {% data variables.product.prodname_copilot %} in your IDE to g
### {% data variables.product.prodname_copilot_extensions %}
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}, helping members of your enterprise reduce context switching, interact with tools using natural language, and customize their {% data variables.product.prodname_copilot_chat_short %} experience.

Просмотреть файл

@ -64,7 +64,7 @@ If an organization member is assigned a seat by multiple organizations with diff
## Setting a policy for {% data variables.product.prodname_copilot_extensions %} in your organization
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}. See "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."

Просмотреть файл

@ -67,7 +67,7 @@ Chat participants include:
In addition to the built-in {% data variables.product.prodname_vscode %} chat participants, you can also install {% data variables.product.prodname_copilot_extensions_short %} that provide chat participants. You can install these extensions from [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true) and from [{% data variables.product.prodname_vscode_marketplace %}](https://marketplace.visualstudio.com/search?target=VSCode&category=Chat&sortBy=Installs). For information about extensions from {% data variables.product.prodname_marketplace %} that provide chat participants, see "[AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/about-github-copilot-extensions)."
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
To see all available chat participants, type `@` in the chat prompt box.

Просмотреть файл

@ -14,7 +14,7 @@ redirect_from:
- /copilot/github-copilot-chat/github-copilot-extensions
---
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %}

Просмотреть файл

@ -0,0 +1,2 @@
Skillsets and agents are the two ways to extend {% data variables.product.prodname_copilot_short %}'s capabilities and context through the {% data variables.product.prodname_copilot_extensibility_platform_short %}. They let you integrate external services and APIs into {% data variables.product.prodname_copilot_chat_short %}, but each one serves different use cases and offers different levels of control and complexity:
* **Skillsets** are lightweight and streamlined, designed for developers who need {% data variables.product.prodname_copilot_short %} to perform specific tasks (e.g., data retrieval or simple operations) with minimal setup. They handle routing, prompt crafting, function evaluation, and response generation automatically, making them ideal for quick and straightforward integrations.

Просмотреть файл

@ -0,0 +1 @@
* **Agents** are for complex integrations that need full control over how requests are processed and responses are generated. They let you implement custom logic, integrate with other LLMs and/or the Copilot API, manage conversation context, and handle all aspects of the user interaction. While Agents require more engineering and maintenance, they offer maximum flexibility for sophisticated workflows. For more information about agents, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents)."

Просмотреть файл

@ -1,4 +1,4 @@
{% data reusables.copilot.copilot-extensions.beta-note %}
{% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate the power of external tools into {% data variables.product.prodname_copilot_chat_short %}, helping you reduce context switching and receive responses with domain-specific context. You can install {% data variables.product.prodname_copilot_extensions_short %} from the {% data variables.product.prodname_marketplace %} or build private ones within your organization, then type `@` in a chat window to see a list of your available extensions. To use an extension, select the extension from the list or type the full slug name, then type your prompt.

Просмотреть файл

@ -0,0 +1,8 @@
1. For each skill you want to add (maximum 5):
1. Click **Add new skill**.
1. Enter a clear **Name** for the skill (e.g., "Generate Lorem Ipsum Data").
1. Write a detailed **Inference description** to help {% data variables.product.prodname_copilot_short %} understand when to use this skill.
1. Add your **API endpoint URL** that will receive the POST requests.
1. In the **Parameter** field, add the JSON schema defining the expected request format.
1. Click **Add Definition** to save your skill.
1. Click **Save** to save your skillset.

Просмотреть файл

@ -285,10 +285,16 @@ prodname_copilot_extensions_short: 'Copilot Extensions'
prodname_copilot_extension_short: 'Copilot Extension'
prodname_copilot_extensions_vsc: 'Copilot-enabled Visual Studio Code extensions'
prodname_copilot_extension_vsc: 'Copilot-enabled Visual Studio Code extension'
prodname_copilot_extensibility_platform: 'GitHub Copilot Extensibility Platform'
prodname_copilot_extensibility_platform_short: 'Copilot Extensibility Platform'
prodname_copilot_agent: 'GitHub Copilot agent'
prodname_copilot_agent_short: 'Copilot agent'
prodname_copilot_agents: 'GitHub Copilot agents'
prodname_copilot_agents_short: 'Copilot agents'
prodname_copilot_skillset: 'Github Copilot skillset'
prodname_copilot_skillset_short: 'Copilot skillset'
prodname_copilot_skillsets: 'Github Copilot skillsets'
prodname_copilot_skillsets_short: 'Copilot skillsets'
prodname_copilot_cli: 'GitHub Copilot in the CLI'
prodname_copilot_cli_short: 'Copilot in the CLI'
prodname_copilot_for_prs: 'Copilot pull request summaries'

Просмотреть файл

@ -1,5 +1,6 @@
// all the tools available for the Tool Picker
export const allTools = {
agents: 'Agents',
api: 'API',
azure_data_studio: 'Azure Data Studio',
bash: 'Bash',
@ -11,6 +12,7 @@ export const allTools = {
javascript: 'JavaScript',
jetbrains: 'JetBrains IDEs',
jetbrains_beta: 'JetBrains IDEs (Beta)',
skillsets: 'Skillsets',
vimneovim: 'Vim/Neovim',
powershell: 'PowerShell',
visualstudio: 'Visual Studio',