Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com> Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Carlin Cherry <61124041+carlincherry@users.noreply.github.com> Co-authored-by: Rachael Sewell <rachmari@github.com> Co-authored-by: Felicity Chapman <felicitymay@github.com>
107 lines
11 KiB
Markdown
107 lines
11 KiB
Markdown
---
|
|
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:
|
|
- Copilot
|
|
shortTitle: Set up Copilot Extensions
|
|
---
|
|
|
|
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).
|
|
|
|
To successfully build a {% data variables.product.prodname_copilot_agent_short %}, you need to understand how the agent communicates with:
|
|
|
|
* The {% data variables.product.prodname_copilot_short %} platform using server-sent events. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-the-copilot-platform).
|
|
* The {% data variables.product.github %} API. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github).
|
|
|
|
## 2. Review example {% data variables.product.prodname_copilot_agents_short %} and the {% data variables.product.prodname_copilot_extensions_short %} SDK
|
|
|
|
To see the previous concepts in practice and learn about agent implementations, review the following example agents and software development kit (SDK), all of which are available in the [`copilot-extensions`](https://github.com/copilot-extensions) organization:
|
|
|
|
* [Blackbeard](https://github.com/copilot-extensions/blackbeard-extension) (best starting point): 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.
|
|
* [{% data variables.product.prodname_github_models %}](https://github.com/copilot-extensions/github-models-extension): A more complex agent that lets you ask about and interact with various LLMs listed on the {% data variables.product.prodname_marketplace %} through {% data variables.product.prodname_copilot_chat_short %}. The {% data variables.product.prodname_github_models %} agent makes use of function calling.
|
|
* [Function Calling](https://github.com/copilot-extensions/function-calling-extension): An example agent written in Go that demonstrates function calling and confirmation dialogs.
|
|
* [RAG Extension](https://github.com/copilot-extensions/rag-extension): An example agent written in Go that demonstrates a simple implementation of retrieval augmented generation.
|
|
* [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js/tree/main): An SDK that streamlines the development of {% data variables.product.prodname_copilot_extensions_short %} by handling request verification, payload parsing, and response formatting automatically. This SDK allows extension builders to focus more on creating core functionality and less on boilerplate code.
|
|
|
|
## 3. Build a {% data variables.product.prodname_copilot_agent_short %}
|
|
|
|
Using the reference material from the previous steps, plan and build your {% data variables.product.prodname_copilot_agent_short %}. You can choose to implement any of the following options:
|
|
|
|
* To avoid building and managing your own LLM deployment, your agent can call the Copilot LLM deployment. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-copilots-llm-for-your-agent).
|
|
* To quickly interpret user input and choose from a variety of predefined functions to execute, you can implement function calling in your agent. To learn more, see [How to use function calling with Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/function-calling) in the Azure OpenAI documentation and [Function calling](https://platform.openai.com/docs/guides/function-calling) in the OpenAI documentation.
|
|
|
|
## 4. Deploy your {% data variables.product.prodname_copilot_agent_short %}
|
|
|
|
To make your {% data variables.product.prodname_copilot_agent_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).
|
|
|
|
## 5. Create a {% data variables.product.prodname_github_app %} and integrate it with your {% data variables.product.prodname_copilot_agent_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_agent_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).
|
|
|
|
## 6. Choose the availability of your {% data variables.product.prodname_copilot_extension_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).
|
|
|
|
{% 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 %}
|