diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-04 00:08:37 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-04 00:08:37 +0300 |
commit | 01fa7c10d9c301ca09e40ce2b2e70514cd3f1053 (patch) | |
tree | d0063186a2fad2f3f6ed6e56f72e367cc43097d3 /doc | |
parent | 9be457ffc1727f6a942a68c16e47ca0bcaa2f64a (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc')
-rw-r--r-- | doc/development/ai_features.md | 47 | ||||
-rw-r--r-- | doc/integration/twitter.md | 9 | ||||
-rw-r--r-- | doc/update/deprecations.md | 28 |
3 files changed, 83 insertions, 1 deletions
diff --git a/doc/development/ai_features.md b/doc/development/ai_features.md index 79d03ff6c72..aa9051438c8 100644 --- a/doc/development/ai_features.md +++ b/doc/development/ai_features.md @@ -138,6 +138,53 @@ To populate the embedding database for GitLab chat: 1. Open a rails console 1. Run [this script](https://gitlab.com/gitlab-com/gl-infra/production/-/issues/10588#note_1373586079) to populate the embedding database +### Contributing to GitLab Duo Chat + +The Chat feature uses a [zero-shot agent](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/lib/gitlab/llm/chain/agents/zero_shot/executor.rb) that includes a system prompt explaining how the large language model should interpret the question and provide an +answer. The system prompt defines available tools that can be used to gather +information to answer the user's question. + +The zero-shot agent receives the user's question and decides which tools to use to gather information to answer it. +It then makes a request to the large language model, which decides if it can answer directly or if it needs to use one +of the defined tools. + +The tools each have their own prompt that provides instructions to the large language model on how to use that tool to +gather information. The tools are designed to be self-sufficient and avoid multiple requests back and forth to +the large language model. + +After the tools have gathered the required information, it is returned to the zero-shot agent, which asks the large language +model if enough information has been gathered to provide the final answer to the user's question. + +#### Adding a new tool + +To add a new tool: + +1. Create files for the tool in the `ee/lib/gitlab/llm/chain/tools/` folder. Use existing tools like `issue_identifier` or +`resource_reader` as a template. + +1. Write a class for the tool that includes: + + - Name and description of what the tool does + - Example questions that would use this tool + - Instructions for the large language model on how to use the tool to gather information - so the main prompts that + this tool is using. + +1. Test and iterate on the prompt using RSpec tests that make real requests to the large language model. + - Prompts require trial and error, the non-deterministic nature of working with LLM can be surprising. + - Anthropic provides good [guide](https://docs.anthropic.com/claude/docs/introduction-to-prompt-design) on working on prompts. + +1. Implement code in the tool to parse the response from the large language model and return it to the zero-shot agent. + +1. Add the new tool name to the `tools` array in `ee/lib/gitlab/llm/completions/chat.rb` so the zero-shot agent knows about it. + +1. Add tests by adding questions to the test-suite for which the new tool should respond to. Iterate on the prompts as needed. + +The key things to keep in mind are properly instructing the large language model through prompts and tool descriptions, +keeping tools self-sufficient, and returning responses to the zero-shot agent. With some trial and error on prompts, +adding new tools can expand the capabilities of the chat feature. + +There are available short [videos](https://www.youtube.com/playlist?list=PL05JrBw4t0KoOK-bm_bwfHaOv-1cveh8i) covering this topic. + ### Debugging To gather more insights about the full request, use the `Gitlab::Llm::Logger` file to debug logs. diff --git a/doc/integration/twitter.md b/doc/integration/twitter.md index 3edb0f25938..4e1762d0268 100644 --- a/doc/integration/twitter.md +++ b/doc/integration/twitter.md @@ -4,7 +4,14 @@ group: Authentication and Authorization info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -# Twitter OAuth 1.0a OmniAuth Provider **(FREE SELF)** +# Twitter OAuth 1.0a OmniAuth Provider (deprecated) **(FREE SELF)** + +<!--- start_remove The following content will be removed on remove_date: '2024-05-17' --> + +WARNING: +This feature was [deprecated](https://gitlab.com/gitlab-com/Product/-/issues/11417) in GitLab 16.3 and is planned for removal in 17.0. Use [another supported OmniAuth provider](omniauth.md#supported-providers) instead. This change is a breaking change. + +<!--- end_remove --> NOTE: Twitter OAuth 2.0 support is [not supported](https://gitlab.com/gitlab-org/gitlab/-/issues/366213). diff --git a/doc/update/deprecations.md b/doc/update/deprecations.md index 89d7f04b549..47bece45a45 100644 --- a/doc/update/deprecations.md +++ b/doc/update/deprecations.md @@ -774,6 +774,20 @@ In some cases, like when a downstream pipeline had the `passed with warnings` st <div class="deprecation breaking-change" data-milestone="17.0"> +### Twitter OmniAuth login option is deprecated from self-managed GitLab + +<div class="deprecation-notes"> +- Announced in GitLab <span class="milestone">16.3</span> +- Removal in GitLab <span class="milestone">17.0</span> ([breaking change](https://docs.gitlab.com/ee/update/terminology.html#breaking-change)) +- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-com/Product/-/issues/11417). +</div> + +Twitter OAuth 1.0a OmniAuth is deprecated and will be removed for self-managed GitLab instances in GitLab 17.0 due to low use and lack of gem support. Use [another supported OmniAuth provider](https://docs.gitlab.com/ee/integration/omniauth.html#supported-providers) instead. + +</div> + +<div class="deprecation breaking-change" data-milestone="17.0"> + ### Unified approval rules are deprecated <div class="deprecation-notes"> @@ -1032,6 +1046,20 @@ The GitLab [License Compliance](https://docs.gitlab.com/ee/user/compliance/licen | LS template is included but DS template is not | License data from LS job is used | License data from LS job is used | No license data | </div> + +<div class="deprecation breaking-change" data-milestone="16.3"> + +### Twitter OmniAuth login option is removed from GitLab.com + +<div class="deprecation-notes"> +- Announced in GitLab <span class="milestone">16.3</span> +- Removal in GitLab <span class="milestone">16.3</span> ([breaking change](https://docs.gitlab.com/ee/update/terminology.html#breaking-change)) +- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-com/Product/-/issues/11417). +</div> + +Twitter OAuth 1.0a OmniAuth is being deprecated and removed on GitLab.com in GitLab 16.3 due to low use, lack of gem support, and the lack of a functional sign-in option for this feature. If you sign into GitLab.com with Twitter, you can sign in with a password or another [supported OmniAuth provider](https://gitlab.com/users/sign_in). + +</div> </div> <div class="milestone-wrapper" data-milestone="16.1"> |