diff --git a/404.html b/404.html index e49481f8..572edf47 100644 --- a/404.html +++ b/404.html @@ -14,8 +14,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications/index.html b/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications/index.html index bfd8eb01..954f52e7 100644 --- a/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications/index.html +++ b/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications/index.html @@ -14,8 +14,8 @@ - - + +
Skip to main content

How to call image-to-text DIAL applications

From this diff --git a/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications/index.html b/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications/index.html index 0004d032..c3842aee 100644 --- a/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications/index.html +++ b/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications/index.html @@ -14,8 +14,8 @@ - - + +

How to call text-to-image DIAL applications

From this diff --git a/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications/index.html b/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications/index.html index fbe3145a..5c187ba7 100644 --- a/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications/index.html +++ b/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications/index.html @@ -14,8 +14,8 @@ - - + +

+
{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}
{'content': 'Hello world!', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}
{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}
Completion: 'Hello world!'
\ No newline at end of file diff --git a/Deployment/Bedrock Model Deployment/index.html b/Deployment/Bedrock Model Deployment/index.html index 0fb3fc54..7829cd7c 100644 --- a/Deployment/Bedrock Model Deployment/index.html +++ b/Deployment/Bedrock Model Deployment/index.html @@ -14,11 +14,11 @@ - - + + -

Bedrock Model Deployment

+

Bedrock Model Deployment

In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config.

Refer to AWS Documentation to learn about this model.

@@ -128,6 +128,6 @@

Use

Before taking this step, configure IAM roles for service accounts.

In this scenario, provide the IAM Role that you have assigned to your AWS Service Account:

-
# --example of AI DIAL configuration for service account
bedrock:
# -- Enable/disable ai-dial-adapter-bedrock
enabled: true

env:
DEFAULT_REGION: "us-east-1"

serviceAccount:
create: true
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::000001206603:role/role_name"
+
# --example of AI DIAL configuration for service account
bedrock:
# -- Enable/disable ai-dial-adapter-bedrock
enabled: true

env:
DEFAULT_REGION: "us-east-1"

serviceAccount:
create: true
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::000001206603:role/role_name"
\ No newline at end of file diff --git a/Deployment/OpenAI Model Deployment/index.html b/Deployment/OpenAI Model Deployment/index.html index 104a43ca..59c19350 100644 --- a/Deployment/OpenAI Model Deployment/index.html +++ b/Deployment/OpenAI Model Deployment/index.html @@ -14,11 +14,11 @@ - - + + -

OpenAI Model Deployment

+

OpenAI Model Deployment

From this instruction, you will learn how to create an Azure OpenAI model GPT-3.5-turbo/GPT-4 and use it in AI DIAL config.

Table of Contents

  • Prerequisites
  • diff --git a/Deployment/Vertex Model Deployment/index.html b/Deployment/Vertex Model Deployment/index.html index 4ee4c1e7..5032ee99 100644 --- a/Deployment/Vertex Model Deployment/index.html +++ b/Deployment/Vertex Model Deployment/index.html @@ -14,11 +14,11 @@ - - + + -

    Vertex Model Deployment

    +

    Vertex Model Deployment

    In this instruction, you will learn how to create VertexAI model in Google Cloud Platform and use it in AI DIAL config.

    Table of Contents

    • Prerequisites
    • diff --git a/Deployment/configuration/index.html b/Deployment/configuration/index.html index b7390db1..0002ed67 100644 --- a/Deployment/configuration/index.html +++ b/Deployment/configuration/index.html @@ -14,11 +14,11 @@ - - + + -

      Configuration

      +

      Configuration

      Important: it is assumed that you have a working knowledge of standard Helm chart parameters in order to define them within the configuration file.

      diff --git a/Deployment/idp-configuration/cognito/index.html b/Deployment/idp-configuration/cognito/index.html index 1e59d9e0..15b44d3d 100644 --- a/Deployment/idp-configuration/cognito/index.html +++ b/Deployment/idp-configuration/cognito/index.html @@ -14,11 +14,11 @@ - - + + -

      How to Set AWS Cognito as Identity Provider

      +

      How to Set AWS Cognito as Identity Provider

      Introduction

      This basic tutorial demonstrates the steps to create a user pool in AWS Cognito and use it as an identity and access management solution for AI DIAL users.

      Table of Contents

        @@ -87,6 +87,6 @@

        AI DIA
        aidial.identityProviders.cognito.jwksUrl: "<token_url>" # URL to jwks token
        aidial.identityProviders.cognito.rolePath: "roles"
        aidial.identityProviders.cognito.issuerPattern: '^https:\/\/cognito-idp\.<region>\.amazonaws\.com.+$'
        aidial.identityProviders.cognito.loggingKey: "email"
        aidial.identityProviders.cognito.loggingSalt: "loggingSalt"

        token_url example: https://cognito-idp.<region>.amazonaws.com/<my-pool-id>/.well-known/jwks.json

        -

      +
      \ No newline at end of file diff --git a/architecture/index.html b/architecture/index.html index 658d5a36..514a4903 100644 --- a/architecture/index.html +++ b/architecture/index.html @@ -14,8 +14,8 @@ - - + +

      Architecture

      diff --git a/assets/images/Conversation_start_procedure-96428e0c010c3f6cd581df4f1f475d25.png b/assets/images/Conversation_start_procedure-96428e0c010c3f6cd581df4f1f475d25.png deleted file mode 100644 index c7a8122e..00000000 Binary files a/assets/images/Conversation_start_procedure-96428e0c010c3f6cd581df4f1f475d25.png and /dev/null differ diff --git a/assets/images/Interface_components-40e13b49592befbd1da2e3d64d55e307.png b/assets/images/Interface_components-40e13b49592befbd1da2e3d64d55e307.png deleted file mode 100644 index 511c20a8..00000000 Binary files a/assets/images/Interface_components-40e13b49592befbd1da2e3d64d55e307.png and /dev/null differ diff --git a/assets/images/Prompts_panel_with_menu-b67ca46323fb78250592d3894a1ae7f9.png b/assets/images/Prompts_panel_with_menu-b67ca46323fb78250592d3894a1ae7f9.png deleted file mode 100644 index 80b836a1..00000000 Binary files a/assets/images/Prompts_panel_with_menu-b67ca46323fb78250592d3894a1ae7f9.png and /dev/null differ diff --git a/assets/images/Settings_System_prompt-b2de8854bb75ac731c92cdc71335ae6a.png b/assets/images/Settings_System_prompt-b2de8854bb75ac731c92cdc71335ae6a.png deleted file mode 100644 index 50c46266..00000000 Binary files a/assets/images/Settings_System_prompt-b2de8854bb75ac731c92cdc71335ae6a.png and /dev/null differ diff --git a/assets/images/Settings_Temperature-8db9fc6550a7028be324de946c6e0052.png b/assets/images/Settings_Temperature-8db9fc6550a7028be324de946c6e0052.png deleted file mode 100644 index 308f6aab..00000000 Binary files a/assets/images/Settings_Temperature-8db9fc6550a7028be324de946c6e0052.png and /dev/null differ diff --git a/assets/images/conversations-a284e306a9213cf466ff6e50ec734c0d.png b/assets/images/conversations-a284e306a9213cf466ff6e50ec734c0d.png new file mode 100644 index 00000000..c17aa624 Binary files /dev/null and b/assets/images/conversations-a284e306a9213cf466ff6e50ec734c0d.png differ diff --git a/assets/images/export-conv-cdf65ca84cfc687f467cd245e592b1f0.png b/assets/images/export-conv-cdf65ca84cfc687f467cd245e592b1f0.png new file mode 100644 index 00000000..0a7dd667 Binary files /dev/null and b/assets/images/export-conv-cdf65ca84cfc687f467cd245e592b1f0.png differ diff --git a/assets/images/home-9d069fea243ec7a3ea2e6e6e7f105989.png b/assets/images/home-9d069fea243ec7a3ea2e6e6e7f105989.png new file mode 100644 index 00000000..7ca62a6e Binary files /dev/null and b/assets/images/home-9d069fea243ec7a3ea2e6e6e7f105989.png differ diff --git a/assets/images/manage_attachments-973b015ae7c53d8b4dde7593df82d640.png b/assets/images/manage_attachments-973b015ae7c53d8b4dde7593df82d640.png new file mode 100644 index 00000000..52338a04 Binary files /dev/null and b/assets/images/manage_attachments-973b015ae7c53d8b4dde7593df82d640.png differ diff --git a/assets/images/play-f22e318abc763d90a52fc7dc069afbf9.png b/assets/images/play-f22e318abc763d90a52fc7dc069afbf9.png new file mode 100644 index 00000000..0c5c394d Binary files /dev/null and b/assets/images/play-f22e318abc763d90a52fc7dc069afbf9.png differ diff --git a/assets/images/prompt_actions-4fbbf3872ca18751a819977efcfa0a77.png b/assets/images/prompt_actions-4fbbf3872ca18751a819977efcfa0a77.png new file mode 100644 index 00000000..f85b5e8d Binary files /dev/null and b/assets/images/prompt_actions-4fbbf3872ca18751a819977efcfa0a77.png differ diff --git a/assets/images/pt_search-13fa8427ae1e46b9553930dd91fdc41a.png b/assets/images/pt_search-13fa8427ae1e46b9553930dd91fdc41a.png new file mode 100644 index 00000000..95a78fe9 Binary files /dev/null and b/assets/images/pt_search-13fa8427ae1e46b9553930dd91fdc41a.png differ diff --git a/assets/images/pt_share-2fe22502e0aac65be9db10c2195d7071.png b/assets/images/pt_share-2fe22502e0aac65be9db10c2195d7071.png new file mode 100644 index 00000000..3541eba5 Binary files /dev/null and b/assets/images/pt_share-2fe22502e0aac65be9db10c2195d7071.png differ diff --git a/assets/images/pt_unshare-6586692d9e1f05edfe8a1bf967365c0c.png b/assets/images/pt_unshare-6586692d9e1f05edfe8a1bf967365c0c.png new file mode 100644 index 00000000..207b8674 Binary files /dev/null and b/assets/images/pt_unshare-6586692d9e1f05edfe8a1bf967365c0c.png differ diff --git a/assets/images/search-conv-6f8993d9ed3be0be9ef1d2d5a0e3c829.png b/assets/images/search-conv-6f8993d9ed3be0be9ef1d2d5a0e3c829.png new file mode 100644 index 00000000..f48de2e9 Binary files /dev/null and b/assets/images/search-conv-6f8993d9ed3be0be9ef1d2d5a0e3c829.png differ diff --git a/assets/images/settings-ca674f998fe45d51d2915c5bd5e79f6f.png b/assets/images/settings-ca674f998fe45d51d2915c5bd5e79f6f.png deleted file mode 100644 index 33f9f967..00000000 Binary files a/assets/images/settings-ca674f998fe45d51d2915c5bd5e79f6f.png and /dev/null differ diff --git a/assets/images/share_conv-a95b232e78f139731210e52e9f36857a.png b/assets/images/share_conv-a95b232e78f139731210e52e9f36857a.png new file mode 100644 index 00000000..60b8922e Binary files /dev/null and b/assets/images/share_conv-a95b232e78f139731210e52e9f36857a.png differ diff --git a/assets/images/system_prompt-c64a3a8ad45aa928cf8e8fd41a9c95f3.png b/assets/images/system_prompt-c64a3a8ad45aa928cf8e8fd41a9c95f3.png new file mode 100644 index 00000000..daed0f50 Binary files /dev/null and b/assets/images/system_prompt-c64a3a8ad45aa928cf8e8fd41a9c95f3.png differ diff --git a/assets/images/temperature-259895bafb8f9c1336e6fa97864ace7c.png b/assets/images/temperature-259895bafb8f9c1336e6fa97864ace7c.png new file mode 100644 index 00000000..b74940b5 Binary files /dev/null and b/assets/images/temperature-259895bafb8f9c1336e6fa97864ace7c.png differ diff --git a/assets/images/user_settings-0a34980bd07353872d12bc1d39d86e04.png b/assets/images/user_settings-0a34980bd07353872d12bc1d39d86e04.png new file mode 100644 index 00000000..3382ebe7 Binary files /dev/null and b/assets/images/user_settings-0a34980bd07353872d12bc1d39d86e04.png differ diff --git a/assets/js/1db65d89.2ea267b8.js b/assets/js/1db65d89.2ea267b8.js new file mode 100644 index 00000000..f8768451 --- /dev/null +++ b/assets/js/1db65d89.2ea267b8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[659],{7925:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var s=t(5893),a=t(1151);const i={},o="Chat User Guide",r={id:"user-guide",title:"Chat User Guide",description:"Interface Components",source:"@site/docs/user-guide.md",sourceDirName:".",slug:"/user-guide",permalink:"/user-guide",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"CustomSideBar",previous:{title:"How to Enable Authentication with Azure AD",permalink:"/tutorials/azure-ad-configuration"},next:{title:"configuration",permalink:"/Deployment/configuration"}},l={},c=[{value:"Interface Components",id:"interface-components",level:2},{value:"Chat Settings",id:"chat-settings",level:3},{value:"Talk To",id:"talk-to",level:4},{value:"Language Models",id:"language-models",level:4},{value:"Assistants",id:"assistants",level:4},{value:"Applications",id:"applications",level:4},{value:"System Prompt",id:"system-prompt",level:4},{value:"Example of Prompt",id:"example-of-prompt",level:4},{value:"Temperature",id:"temperature",level:4},{value:"Addons",id:"addons",level:4},{value:"User Settings",id:"user-settings",level:3},{value:"Prompts",id:"prompts",level:2},{value:"Create",id:"create",level:3},{value:"Variables",id:"variables",level:3},{value:"Actions",id:"actions",level:3},{value:"Arrange",id:"arrange",level:3},{value:"Search and Filter",id:"search-and-filter",level:3},{value:"Share",id:"share",level:3},{value:"Unshare",id:"unshare",level:3},{value:"Duplicate",id:"duplicate",level:3},{value:"Conversations",id:"conversations",level:2},{value:"Create",id:"create-1",level:3},{value:"Actions",id:"actions-1",level:3},{value:"Arrange",id:"arrange-1",level:3},{value:"Search and Filter",id:"search-and-filter-1",level:3},{value:"Share",id:"share-1",level:3},{value:"Unshare",id:"unshare-1",level:3},{value:"Duplicate",id:"duplicate-1",level:3},{value:"Export",id:"export",level:3},{value:"Export a single conversation with attachments",id:"export-a-single-conversation-with-attachments",level:5},{value:"Export a single conversation without attachments",id:"export-a-single-conversation-without-attachments",level:5},{value:"Export all conversations",id:"export-all-conversations",level:5},{value:"Import",id:"import",level:3},{value:"Delete",id:"delete",level:3},{value:"Replay",id:"replay",level:3},{value:"Playback",id:"playback",level:3},{value:"Compare",id:"compare",level:3},{value:"Manage Attachments",id:"manage-attachments",level:3},{value:"Upload a file",id:"upload-a-file",level:5},{value:"Download attachments",id:"download-attachments",level:5},{value:"Delete attachments",id:"delete-attachments",level:5}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"chat-user-guide",children:"Chat User Guide"}),"\n",(0,s.jsx)(n.h2,{id:"interface-components",children:"Interface Components"}),"\n",(0,s.jsx)(n.p,{children:"The AI DIAL Chat application interface has several sections, such as the chat box, settings, and panels for managing conversations and saved prompts."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7830).Z+"",width:"1914",height:"947"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Conversations"}),": Here, you can manage your conversations: create new ones, organize them in folders, and delete. You can collapse and expand the panel by clicking the ",(0,s.jsx)(n.strong,{children:"Hide panel"})," icon above it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Panel"}),": Use this section to enter a prompt, view results, and interact with language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Settings"}),": In this section, you can select the language model, assistant, application, and addons you'd like to use. You can also provide a system prompt and adjust the temperature setting."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Prompt Templates"}),": In this section, you can work with saved prompts: create new templates, update them, and organize them in folders. You can collapse and expand the panel by clicking the ",(0,s.jsx)(n.strong,{children:"Hide panel"})," icon above it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Account User Settings"}),": In your account settings, you can customize the color theme (dark or light) as well as log in or log out."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"chat-settings",children:"Chat Settings"}),"\n",(0,s.jsx)(n.p,{children:"In the Chat Settings section, there are the following components:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Talk To"}),"\n",(0,s.jsx)(n.li,{children:"System Prompt"}),"\n",(0,s.jsx)(n.li,{children:"Temperature"}),"\n",(0,s.jsx)(n.li,{children:"Addons"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Take a closer look at each of these elements."}),"\n",(0,s.jsx)(n.h4,{id:"talk-to",children:"Talk To"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3565).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:"In this section, you can choose the language model for communication, as well as an Assistant or Application to implement specific behavior for the LLM."}),"\n",(0,s.jsx)(n.h4,{id:"language-models",children:"Language Models"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7276).Z+"",width:"775",height:"501"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Available language models"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-3.5"})," is an advanced language model developed by OpenAI, known for its powerful natural language processing, understanding, and context awareness. Enabling human-like conversations, it can carry out various tasks, including summarizing, translation, content creation, and answering queries."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-4"})," is the latest iteration of the GTP series by OpenAI, offering more powerful natural language processing capabilities than its previous versions. It harnesses extensive training and massive datasets to deliver lifelike conversations, unsurpassed context awareness, and high-quality content generation across multiple languages and domains."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-4-32K"})," is the extension for GTP-4 that can possess a larger context window size (32,000 tokens). It offers several advantages, including a better understanding of context, improved performance in long-form tasks, enhanced reasoning and knowledge handling, and increased creativity in content generation. Please only use this one if you absolutely need it. It's slower and more expensive."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"PaLM2 (Bison)"})," is an LLM developed by Google that leverages an innovative hierarchical architecture to enhance its linguistic competence and computational efficiency. By employing parallel and multitask learning mechanisms, PaLM2 (Bison) provides exceptional performance in diverse language tasks, like question-answering, summarization, and translation, while also being highly scalable and adaptive to new environments."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AI21 (Jurassic-2 Grande)"})," is a large-scale language model with 178 billion parameters developed by AI21 Labs. It is an upgraded version of its predecessor AI21 Jurassic-1 and is capable of processing extensive amounts of text and generating contextually appropriate replies. The model's distinguishing features include its scale, contextual understanding, multilingualism, few-shot learning, and knowledge integration with external sources. It is designed to enhance natural language processing, chatbots, virtual assistants, and other applications requiring advanced language capabilities."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AI21 (Jurassic-2 Jumbo)"})," is an expansion of the AI21 Jurassic-2 Grande model, leveraging improved training techniques, larger datasets, and advanced hardware resources. Jumbo provides a boost in performance and is specifically designed for challenging natural language applications such as sentiment analysis, language translation, and document summarization. AI21 Jurassic-2 Jumbo has 199 billion parameters, making it the largest publicly available language model to date."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"CodeLlama-34b"})," is a language model developed by AI21 that has 34 billion parameters. CodeLlama-34b is specifically designed for use in software development and is trained on a diverse set of technical documentation, including programming languages, code samples, and developer forums. The model is optimized for code-related natural language queries, including code completion, code understanding, and code generation."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Llama2q-70B"})," is an LLM developed by AI21, which has 70 billion parameters. Like CodeLlama-34b, it is designed for technical applications but with a broader scope. Llama2q-70B has a wide range of capabilities, including question answering, text classification, and summarization. It is trained on a variety of sources, including technical documents, academic papers, and news articles, and is designed to provide accurate results for a wide range of technical queries and applications."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude)"})," is a large-scale LLM with 175 billion parameters that is optimized for general-purpose language tasks, including question answering, dialogue generation, and text completion. The model has been trained on data from a wide range of sources to provide high accuracy in many contexts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude Instant)"})," is an LLM that can generate responses in real-time, making it useful for applications such as chatbots and virtual assistants. It is a smaller model than the Anthropic (Claude) model, with 9 billion parameters, and is optimized for low-latency inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude V2)"})," is an upgraded version of the Anthropic (Claude) model, with 400 billion parameters, making it one of the largest language models to date. This model is designed for sophisticated NLP applications involving complex reasoning, inference, and understanding of long-form text data."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AWS (Titan)"}),": AWS (Amazon Web Services) developed an LLM called Titan in 2021, which has 850 billion parameters, making it the largest publicly available language model at the time of its introduction. The model was trained on a diverse set of text sources, including web pages, books, and news articles. Titan is designed to handle complex natural language processing tasks, such as summarization, dialogue generation, and translation."]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"assistants",children:"Assistants"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9229).Z+"",width:"771",height:"292"})}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, Assistants are a combination of preselected Addons and System Prompts that enable specific behavior in the LLM, allowing for more tailored and adaptive responses to user needs. Unlike the Model+Addon configuration, where users have the flexibility to choose different Addons, Assistants come with predetermined Addons that cannot be removed or unselected. However, the Model can still be reassigned within the Assistant."}),"\n",(0,s.jsx)(n.p,{children:"Assistants give you more control over LLM behavior, resulting in tailored and accurate responses that match specific needs. The flexibility of this combination lets you create custom Assistants within the AI DIAL framework. These Assistants can range from simple tasks, like asking the LLM to provide answers in a specific tone or style (e.g., like a pirate), to more complex tasks, such as restricting the LLM's data to a specific geographical area (e.g., providing weather forecasts for Chicago only). Combining Addons and System Prompts enables better customization and adaptability to various situations, leading to more versatile responses."}),"\n",(0,s.jsx)(n.p,{children:"In a chat application, you can include custom Assistant(s) that users can choose when using AI DIAL."}),"\n",(0,s.jsx)(n.h4,{id:"applications",children:"Applications"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5584).Z+"",width:"766",height:"715"})}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, Applications are ready-to-use solutions made up of predefined configurations of Addons and other services or any custom logic. They help you customize LLM behavior by integrating Addons with any desired logic. Applications can be any component that meets API requirements and implements non-LLM-related logic, such as repeating user messages, creating a fully deterministic chatbot, or managing complex multi-LLM interactions. This versatility in Applications allows for tailored handling of unique scenarios and requirements."}),"\n",(0,s.jsx)(n.h4,{id:"system-prompt",children:"System Prompt"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9180).Z+"",width:"1912",height:"580"})}),"\n",(0,s.jsxs)(n.p,{children:["The system prompt in AI DIAL refers to the initial instructions given to the model. You can use any previously created prompt as a system prompt (for details, refer to the ",(0,s.jsx)(n.a,{href:"#create",children:"Create"})," in Prompts), and it will set the context and tone for the whole conversation."]}),"\n",(0,s.jsx)(n.p,{children:"The system prompt in AI DIAL is like a compass for a traveler, pointing the model in the right direction to navigate the conversational landscape, ensuring it stays on course and aligned with the overall purpose and desired outcome."}),"\n",(0,s.jsxs)(n.p,{children:["You can change system prompts during a conversation by selecting the ",(0,s.jsx)(n.strong,{children:"Settings"})," icon at the top bar of the conversation."]}),"\n",(0,s.jsx)(n.h4,{id:"example-of-prompt",children:"Example of Prompt"}),"\n",(0,s.jsxs)(n.p,{children:["Let\u2019s compare a conversation with a system prompt selected and a conversation without a system prompt. For illustration purposes, we\u2019re going to use the compare mode (refer to the ",(0,s.jsx)(n.a,{href:"#compare",children:"Compare"})," section for details) and create two conversations with identical settings except for the system prompt selection."]}),"\n",(0,s.jsx)(n.p,{children:"The prompt used as a system prompt is as follows:"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Let's play a game. Name a city that starts with the last letter of the one that I named in a previous message and then tell me that it is my turn to name a city."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9855).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5937).Z+"",width:"1383",height:"714"})}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"User message"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Language model response without a system prompt"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Language model response with a system prompt"})})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Grodno"}),(0,s.jsx)(n.td,{children:"Grodno, also known as Hrodna, is a city in western Belarus, near the borders with Poland and Lithuania. It is the administrative center of Grodno region and has a population of around 365,000 people. Grodno is one of the oldest cities in Belarus, dating back to the 11th century. The city boasts a rich history and diverse architectural styles, including baroque, classicism, and modernism."}),(0,s.jsx)(n.td,{children:"Oslo. It's your turn!"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Osaka"}),(0,s.jsx)(n.td,{children:"Osaka is a large port city and commercial center on the Japanese island of Honshu. It's known for its modern architecture, nightlife, and hearty street food. One of Osaka's most popular tourist destinations is the bustling urban area of Dotonbori, where the city's entertainment and dining scenes come to life with numerous restaurants, bars, and shops."}),(0,s.jsx)(n.td,{children:"Ankara. Now it's your turn to name a city!"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Antwerp"}),(0,s.jsx)(n.td,{children:"Antwerp is a city in Belgium, and it's the country\u2019s biggest port. It is located on the River Scheldt, linked to the North Sea by the Westerschelde estuary. Known for its many historical buildings, squares, museums, and cultural attractions, it's a popular tourist destination."}),(0,s.jsx)(n.td,{children:"Prague. Your turn to name a city!"})]})]})]}),"\n",(0,s.jsx)(n.h4,{id:"temperature",children:"Temperature"}),"\n",(0,s.jsx)(n.p,{children:"The temperature parameter controls the creativity and randomness of the model's output. A higher temperature (e.g., 1.0) makes the output more diverse and creative, while a lower temperature (e.g., 0.1) makes the output more focused and deterministic."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9402).Z+"",width:"1912",height:"580"})}),"\n",(0,s.jsx)(n.p,{children:"Adjusting the temperature allows you to balance creativity and consistency in the generated response."}),"\n",(0,s.jsx)(n.h4,{id:"addons",children:"Addons"}),"\n",(0,s.jsx)(n.p,{children:"You may want LLM to access particular data or technology to generate responses. This could be your company's database, a collection of PDF documents, calculation engines, API or any other data source or technology.\nWithin the AI DIAL framework, an Addon is a service or any component that follows the Open API specification. LLMs can access and use any desired data source or technology to create responses."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(2138).Z+"",width:"992",height:"570"})}),"\n",(0,s.jsx)(n.p,{children:"Some examples of Addon implementation are semantic search, Q&A search, DB query generator, or any other custom logic that meets your business needs. AI DIAL can include custom Addons that you can choose to activate a specific system behavior."}),"\n",(0,s.jsx)(n.h3,{id:"user-settings",children:"User Settings"}),"\n",(0,s.jsx)(n.p,{children:"On the top bar, in the user area, you can click a down arrow to access additional settings or logout."}),"\n",(0,s.jsx)(n.p,{children:"You can select the chat theme, dark or light, add a custom logo, and switch on a full width chat mode."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3578).Z+"",width:"1910",height:"679"})}),"\n",(0,s.jsx)(n.h2,{id:"prompts",children:"Prompts"}),"\n",(0,s.jsx)(n.p,{children:"A prompt is an instruction, a question, or a message that a user provides to a language model to receive an answer. Prompts can also contain constraints or requirements. They help the model understand the task at hand and the types of responses that are expected.\nYou can use prompts as templates for your messages, instructions to the model, or to encourage the model to generate specific types of content.\nIn AI DIAL, you can create prompts beforehand and reuse them in one or several conversations."}),"\n",(0,s.jsxs)(n.p,{children:["Prompts can be applied to one message or a whole conversation. Refer to the ",(0,s.jsx)(n.a,{href:"#system-prompt",children:"System prompt"})," section of this guide for details."]}),"\n",(0,s.jsx)(n.p,{children:"The section with your prompts is located in the right-hand area of the screen. In this section, you can work with saved prompts: create new templates, update them, and organize them with folders."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"All your prompts are stored on the server, and you can access them from any device you use."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"create",children:"Create"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3463).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:"To create a new prompt:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the right panel, select ",(0,s.jsx)(n.strong,{children:"New prompt"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Fill in the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Description"}),", and ",(0,s.jsx)(n.strong,{children:"Prompt"}),' boxes. The following symbols in the prompt names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Save"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Name"})," and ",(0,s.jsx)(n.strong,{children:"Description"})," aren\u2019t used as instructions for a language model. They only help you to distinguish the prompt from others. The language model will only use instructions from the ",(0,s.jsx)(n.strong,{children:"Prompt"})," box."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"variables",children:"Variables"}),"\n",(0,s.jsxs)(n.p,{children:["You can use prompts as templates for your messages to a language model. For example, you need to calculate an equation ",(0,s.jsx)(n.code,{children:"a + c/d"}),", round up the answer, and then divide it by 4. Let\u2019s imagine that you need results for four sets of ",(0,s.jsx)(n.code,{children:"a"}),", ",(0,s.jsx)(n.code,{children:"c"}),", and ",(0,s.jsx)(n.code,{children:"d"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"In that case you can create the following prompt:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(848).Z+"",width:"1241",height:"775"})}),"\n",(0,s.jsxs)(n.p,{children:["Here, ",(0,s.jsx)(n.code,{children:"a"}),", ",(0,s.jsx)(n.code,{children:"c"}),", and ",(0,s.jsx)(n.code,{children:"d"})," are variables. In the prompt body, they are denoted by double curly brackets: ",(0,s.jsx)(n.code,{children:"{{ }}"}),"."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"You can combine mathematical expressions and natural language in your prompts."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["After you\u2019ve created the prompt, you can use it by typing a slash ",(0,s.jsx)(n.code,{children:"/"})," in the chat box and selecting the name of a prompt (it is ",(0,s.jsx)(n.strong,{children:"Math"})," in our example). You\u2019ll see the following form where you can enter any numbers:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9555).Z+"",width:"967",height:"775"})}),"\n",(0,s.jsx)(n.p,{children:"When you submit the form, your message will look like on the illustration below:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1003).Z+"",width:"972",height:"116"})}),"\n",(0,s.jsx)(n.p,{children:"Send the message to the model, and it will generate an answer using both mathematical and natural language instructions:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3064).Z+"",width:"804",height:"727"})}),"\n",(0,s.jsxs)(n.p,{children:["Generally, variables can be anything, not only numbers. For example, you can create a prompt with the following body: ",(0,s.jsx)(n.code,{children:"Who played {{character}} in {{movie}}? or What is a Latin name of {{plant common name}}?"})]}),"\n",(0,s.jsx)(n.h3,{id:"actions",children:"Actions"}),"\n",(0,s.jsx)(n.p,{children:"You can perform various actions with your prompts:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Edit a prompt"}),": select a prompt on the right panel to invoke the Edit window. Make all necessary changes and click ",(0,s.jsx)(n.strong,{children:"Save"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Export a prompt"}),": right-click a prompt on the right panel and select ",(0,s.jsx)(n.strong,{children:"Export"}),". The prompt will be exported as JSON."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Move to"}),": use to place a prompt in a folder."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Delete a prompt"}),": right-click a prompt on the right panel and select ",(0,s.jsx)(n.strong,{children:"Delete"}),", then confirm the action."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Delete all prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Delete all"})," icon at the bottom of the right panel and confirm your action."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Export all prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Export prompts"})," icon at the bottom of the right panel. All your prompts will be exported as JSON."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Import prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Import prompts"})," icon at the bottom of the right panel and then select a JSON file with prompts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Share"}),": use to share a prompt or a folder with several prompts with other users."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Unshare"}),": use to revoke access to shared prompts."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(155).Z+"",width:"393",height:"277"})}),"\n",(0,s.jsx)(n.h3,{id:"arrange",children:"Arrange"}),"\n",(0,s.jsx)(n.p,{children:"You can gather your prompts in folders."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7181).Z+"",width:"362",height:"477"})}),"\n",(0,s.jsxs)(n.p,{children:["You can create a hierarchy of folders with three nesting levels. Just create a folder and drag-n-drop it in the other folder to create a nesting level.\nThe same way, you can either drag-n-drop a prompt into a folder or use ",(0,s.jsx)(n.strong,{children:"Move to"})," in the context menu of a prompt to place it in one of the folders."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"After refreshing the page or logging in again, any empty folders will be deleted."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:['The following symbols in the folders names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsx)(n.h3,{id:"search-and-filter",children:"Search and Filter"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3115).Z+"",width:"255",height:"251"})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Search"})," box can be utilized to find prompts and folders by their names."]}),"\n",(0,s.jsxs)(n.p,{children:['You can filter prompts by the "Shared by me" criterion. To do so, click the ',(0,s.jsx)(n.strong,{children:"Filter"})," icon and select ",(0,s.jsx)(n.strong,{children:"Shared by me"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"share",children:"Share"}),"\n",(0,s.jsx)(n.p,{children:"You can share a prompt or a folder with several prompts with other users."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["When someone shared a prompt with you, you can find it in the ",(0,s.jsx)(n.strong,{children:"Shared with me"})," section on the right panel. ",(0,s.jsx)(n.strong,{children:"Important"}),": you cannot change a prompt that has been shared with you. To be able to work with it, ",(0,s.jsx)(n.a,{href:"#duplicate",children:"duplicate it"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To share a prompt or a folder, click ",(0,s.jsx)(n.strong,{children:"Share"})," in the contextual menu and copy the link. After someone has opened your link, an arrow icon appears near its name."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you share a folder, all folders and prompts in this folders will be shared."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3845).Z+"",width:"255",height:"361"})}),"\n",(0,s.jsx)(n.h3,{id:"unshare",children:"Unshare"}),"\n",(0,s.jsxs)(n.p,{children:["To revoke access from all users, click ",(0,s.jsx)(n.strong,{children:"Unshare"})," in the contextual menu and then click ",(0,s.jsx)(n.strong,{children:"Revoke access"})," in the dialog."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1254).Z+"",width:"258",height:"370"})}),"\n",(0,s.jsx)(n.h3,{id:"duplicate",children:"Duplicate"}),"\n",(0,s.jsxs)(n.p,{children:["You can duplicate a prompt, for example, to be able to change a prompt that was shared with you. To duplicate a prompt, click ",(0,s.jsx)(n.strong,{children:"Duplicate"})," in the contextual menu."]}),"\n",(0,s.jsx)(n.h2,{id:"conversations",children:"Conversations"}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, a conversation is a dialogue between an agent, such as a language model, assistant, or application, and a human user. The agent uses natural language to interact with a human and receive/give a feedback. Within one conversation, you can refer to previous questions and answers. But different conversations don\u2019t share context."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"All your conversations are stored on the server, and you can access them from any device you use."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"create-1",children:"Create"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8593).Z+"",width:"1910",height:"947"})}),"\n",(0,s.jsx)(n.p,{children:"To create a conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, click ",(0,s.jsx)(n.strong,{children:"New conversation"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the main section, under ",(0,s.jsx)(n.strong,{children:"Talk To"}),", select a language model, an assistant, or an application. Five most recently used items are shown in the section. To see all available items, click ",(0,s.jsx)(n.strong,{children:"See full list"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Optionally, under ",(0,s.jsx)(n.strong,{children:"System prompts"}),', select a prompt by typing "/" in the text box. For details, refer to the ',(0,s.jsx)(n.a,{href:"#prompts",children:"Prompts"})," section of this guide."]}),"\n",(0,s.jsxs)(n.li,{children:["Under ",(0,s.jsx)(n.strong,{children:"Temperature"}),", set a value of the temperature parameter. For details, refer to the ",(0,s.jsx)(n.a,{href:"#temperature",children:"Temperature"})," section of this guide."]}),"\n",(0,s.jsxs)(n.li,{children:["Optionally, under ",(0,s.jsx)(n.strong,{children:"Addons"}),", select an Addon. For details, refer to the ",(0,s.jsx)(n.a,{href:"#addons",children:"Addons"})," section of this guide."]}),"\n",(0,s.jsxs)(n.li,{children:["Under conversation settings, type your text (prompt) in the chat box and click the ",(0,s.jsx)(n.strong,{children:"Send"})," icon. The conversation will be created, and your first question will be used as its name."]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:['The following symbols in the conversation names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&" and will be excluded. Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"actions-1",children:"Actions"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"During a conversation"}),", you can perform various actions:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Enter prompt"}),": you can use a text box at the bottom to enter your prompts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Generate answer"}),": click enter to generate the response to your prompt."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Stop generating"}),": in the process of generating the response, you can stop it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Regenerate response"}),": when stopped, you can regenerate the response. ",(0,s.jsx)(n.strong,{children:"Important"}),": If you encounter a server error or click the ",(0,s.jsx)(n.strong,{children:"Stop Generating"})," button and receive an empty response, the ",(0,s.jsx)(n.strong,{children:"Send"})," button will be disabled. To continue the conversation, you'll need to generate the answer again. If you receive a partial response (a combination of text and an error), the model can still proceed, while for Assistants/Applications, you'll need to generate the response again."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Delete/Edit"}),": during the conversation, you can edit or delete your prompts. After a prompt has been edited, the response is regenerated, and all your prompts after the edited one will be deleted. When you delete your prompt, the response will be deleted, too."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Attach files"}),": some models and applications, like ",(0,s.jsx)(n.em,{children:"DIAL RAG"})," and ",(0,s.jsx)(n.em,{children:"Echo"}),", allow adding attachments to the conversation. In this case, you'll see the ",(0,s.jsx)(n.strong,{children:"Attachments"})," icon available in the chat panel. Click it to upload a file from your device or select an already uploaded file. Refer to the ",(0,s.jsx)(n.a,{href:"#manage-attachments",children:"Manage attachments"})," section for details."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Download attached files"}),": click the ",(0,s.jsx)(n.strong,{children:"Download"})," icon near the file name."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Preview attached images"}),": click the ",(0,s.jsx)(n.strong,{children:"Expand"})," icon near the image name."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Copy"}),": you can copy answers."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Like/dislike"}),": you can like and dislike responses in a conversation. Use likes to highlight important responses and dislikes to mark the responses you don't need."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Clear conversation messages"}),": you can clear all messages in your conversation. Click the eraser icon on the top bar to do that."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Change conversation settings"}),": during the conversation, you can access and edit its setting by clicking the gear icon on the top bar. Refer to ",(0,s.jsx)(n.a,{href:"#chat-settings",children:"Chat Settings"})," to learn more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"View current settings"}),": on the top bar, point to the language model logo icon near the conversation name to see current settings."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(6902).Z+"",width:"755",height:"189"})}),"\n",(0,s.jsx)(n.h3,{id:"arrange-1",children:"Arrange"}),"\n",(0,s.jsx)(n.p,{children:"You can gather your conversations in folders."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9383).Z+"",width:"519",height:"630"})}),"\n",(0,s.jsxs)(n.p,{children:["You can create a hierarchy of folders with three nesting levels. Just create a folder and drag-n-drop it in the other folder to create a nesting level. The same way, you can either drag-n-drop a conversation into a folder or use ",(0,s.jsx)(n.strong,{children:"Move to"})," in the context menu of a conversation to move it to a folder.\nEmpty folders are deleted after refreshing a page."]}),"\n",(0,s.jsxs)(n.p,{children:['The following symbols in the folders names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&" and will be excluded. Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you use the contextual menu to move a conversation, you can create a new folder, in which the conversation should be moved."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"search-and-filter-1",children:"Search and Filter"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Search"})," box can be utilized to find conversations and folders by their names."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(6969).Z+"",width:"373",height:"235"})}),"\n",(0,s.jsxs)(n.p,{children:['You can filter conversations by the "Shared by me" criterion. To do so, click the ',(0,s.jsx)(n.strong,{children:"Filter"})," icon and select ",(0,s.jsx)(n.strong,{children:"Shared by me"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"share-1",children:"Share"}),"\n",(0,s.jsx)(n.p,{children:"You can share a conversation or a folder with several conversations with other users."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["When someone shared a conversation with you, you can find it in the ",(0,s.jsx)(n.strong,{children:"Shared with me"})," section on the left panel. ",(0,s.jsx)(n.strong,{children:"Important"}),": you cannot change a conversation that has been shared with you. To be able to work with it, ",(0,s.jsx)(n.a,{href:"#duplicate",children:"duplicate it"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To share a conversation or a folder, click ",(0,s.jsx)(n.strong,{children:"Share"})," in the contextual menu and copy the link. After someone has opened your link, an arrow icon appears near its name."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you share a folder, all folders and conversations in this folders will be shared."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1563).Z+"",width:"351",height:"428"})}),"\n",(0,s.jsx)(n.h3,{id:"unshare-1",children:"Unshare"}),"\n",(0,s.jsxs)(n.p,{children:["To revoke access from all users, click ",(0,s.jsx)(n.strong,{children:"Unshare"})," in the contextual menu and then click ",(0,s.jsx)(n.strong,{children:"Revoke access"})," in the dialog."]}),"\n",(0,s.jsx)(n.h3,{id:"duplicate-1",children:"Duplicate"}),"\n",(0,s.jsxs)(n.p,{children:["You can duplicate a conversation, for example, to be able to change a conversation that was shared with you. To duplicate a conversation, click ",(0,s.jsx)(n.strong,{children:"Duplicate"})," in the contextual menu."]}),"\n",(0,s.jsx)(n.h3,{id:"export",children:"Export"}),"\n",(0,s.jsx)(n.p,{children:"You can export selected conversations with or without attachments or all conversations without attachments in a JSON format."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:'Exported conversations are named by the following pattern: prefix "epam_ai_dial_chat", then "with_attachments" if the conversation was exported with attachments, then "month_day".'}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5603).Z+"",width:"512",height:"469"})}),"\n",(0,s.jsx)(n.h5,{id:"export-a-single-conversation-with-attachments",children:"Export a single conversation with attachments"}),"\n",(0,s.jsx)(n.p,{children:"To export a single conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, in the conversation contextual menu, point to ",(0,s.jsx)(n.strong,{children:"Export"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"With attachments"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The conversation will be exported as a zip archive."}),"\n",(0,s.jsx)(n.h5,{id:"export-a-single-conversation-without-attachments",children:"Export a single conversation without attachments"}),"\n",(0,s.jsx)(n.p,{children:"To export a single conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, in the conversation contextual menu, point to ",(0,s.jsx)(n.strong,{children:"Export"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Without attachments"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The conversation will be exported as a JSON."}),"\n",(0,s.jsx)(n.h5,{id:"export-all-conversations",children:"Export all conversations"}),"\n",(0,s.jsxs)(n.p,{children:["To export all conversations, at the bottom of the left panel, click the ",(0,s.jsx)(n.strong,{children:"Export conversations"})," icon."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Conversations will be exported without attachments."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"import",children:"Import"}),"\n",(0,s.jsx)(n.p,{children:"Exported conversations can be imported."}),"\n",(0,s.jsxs)(n.p,{children:["To import JSON or a zip file with conversations, click the ",(0,s.jsx)(n.strong,{children:"Import conversations"})," icon at the bottom of the left panel and then select a file with conversations."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you import a conversation with attachments, the attachments will be available in the Imports folder."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"delete",children:"Delete"}),"\n",(0,s.jsx)(n.p,{children:"You can delete a single conversation or all conversations."}),"\n",(0,s.jsxs)(n.p,{children:["To delete a single conversation, on the left panel, in the conversation contextual menu, select ",(0,s.jsx)(n.strong,{children:"Delete"})," and confirm your action."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3299).Z+"",width:"422",height:"822"})}),"\n",(0,s.jsxs)(n.p,{children:["To delete all conversations, at the bottom of the left panel, click the ",(0,s.jsx)(n.strong,{children:"Delete conversations"})," icon."]}),"\n",(0,s.jsx)(n.h3,{id:"replay",children:"Replay"}),"\n",(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.strong,{children:"Replay"})," to reproduce conversations but with different settings (e.g. a different model). A replayed conversation can be used to compare responses to the same questions from different models and with different settings of the conversation."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8287).Z+"",width:"393",height:"633"})}),"\n",(0,s.jsxs)(n.p,{children:["Use ",(0,s.jsx)(n.strong,{children:"Replay as is"})," to reproduce the conversation with the original settings."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3903).Z+"",width:"513",height:"140"})}),"\n",(0,s.jsx)(n.p,{children:"To replay a conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Replay"})," in the conversation menu."]}),"\n",(0,s.jsxs)(n.li,{children:["Select ",(0,s.jsx)(n.strong,{children:"Replay as is"})," in ",(0,s.jsx)(n.strong,{children:"More info"})," in the Replay settings to reproduce the conversation with the original settings or change the conversation settings."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Start replay"}),"."]}),"\n",(0,s.jsx)(n.li,{children:"In the process of replaying, you can stop and resume the replay process."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The replayed conversation is displayed as a new conversation with the ",(0,s.jsx)(n.code,{children:"[Replay]"})," tag in the list of your conversations."]}),"\n",(0,s.jsx)(n.h3,{id:"playback",children:"Playback"}),"\n",(0,s.jsx)(n.p,{children:"The Playback mode can be used to simulate the current conversation without any engagement with models. This mode accurately reproduces the conversation like a recording. It should be noted that this differs from the Replay mode, where the prompts are resubmitted to the chosen model and the outcomes may differ from the initial conversation."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8834).Z+"",width:"375",height:"635"})}),"\n",(0,s.jsx)(n.p,{children:"During the playback, you can manually stop and resume the playback process."}),"\n",(0,s.jsx)(n.h3,{id:"compare",children:"Compare"}),"\n",(0,s.jsx)(n.p,{children:"Use the Compare mode to compare two new or existing conversations at the same time with different setting (e.g. different models or temperature)."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(647).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsxs)(n.p,{children:["To compare two ",(0,s.jsx)(n.strong,{children:"new"})," conversations:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Compare"})," icon at the bottom of the left panel."]}),"\n",(0,s.jsx)(n.li,{children:"Choose settings of the first conversations."}),"\n",(0,s.jsx)(n.li,{children:"Choose settings of the second conversation."}),"\n",(0,s.jsx)(n.li,{children:"Type your question (prompt) in the chat box."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"As you can see on the picture above, the system creates two conversations with the same name. If you have chosen different language models, the conversations icons on the left panel will differ."}),"\n",(0,s.jsxs)(n.p,{children:["You can also compare two ",(0,s.jsx)(n.strong,{children:"existing"})," conversations:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8848).Z+"",width:"379",height:"624"})}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"The Compare mode works only with conversations with the same amount of prompts from a user. The application will not allow comparing two conversations with different amounts of prompts."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, in the conversation menu of a conversation, select ",(0,s.jsx)(n.strong,{children:"Compare"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the main section, under ",(0,s.jsx)(n.strong,{children:"Select conversation to compare with"}),", select the second conversation from the drop box."]}),"\n",(0,s.jsxs)(n.li,{children:["By default, only conversations with the same name are available in the drop box. Select ",(0,s.jsx)(n.strong,{children:"Show all conversations"})," to see the full list of conversations."]}),"\n",(0,s.jsx)(n.li,{children:"Type your question (prompt) in the chat box."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"manage-attachments",children:"Manage Attachments"}),"\n",(0,s.jsxs)(n.p,{children:["To manage all attachments, click the ",(0,s.jsx)(n.strong,{children:"Attachments"})," icon at the bottom of the left panel."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3851).Z+"",width:"298",height:"86"})}),"\n",(0,s.jsx)(n.h5,{id:"upload-a-file",children:"Upload a file"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["In the Manage attachments dialog, select ",(0,s.jsx)(n.strong,{children:"Upload from device"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select one or several files you want to upload and click ",(0,s.jsx)(n.strong,{children:"Open"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Under ",(0,s.jsx)(n.strong,{children:"Upload to"}),", select ",(0,s.jsx)(n.strong,{children:"Change"})," to pick a folder, in which the files will be uploaded."]}),"\n",(0,s.jsxs)(n.li,{children:["Under ",(0,s.jsx)(n.strong,{children:"Files"}),', change file names or delete files, if necessary. The following symbols in the file names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Upload and attach files"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(2022).Z+"",width:"519",height:"588"})}),"\n",(0,s.jsx)(n.h5,{id:"download-attachments",children:"Download attachments"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Click a folder to expand it."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"In the Manage attachments dialog, point to a file and select it. You can select several files."}),"\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Download"})," icon below the files tree."]}),"\n"]}),"\n",(0,s.jsx)(n.h5,{id:"delete-attachments",children:"Delete attachments"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"You won't be able to preview or download a deleted file in a conversation, but you still will see its name."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"In the Manage attachments dialog, point to a file and select it. You can select several files."}),"\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Delete"})," icon below the files tree."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8848:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Compare_menu-75811b9b4f9eabb6b3561287512955ca.png"},647:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Compare_new-bf0e06e0b60718b1654c4471f80e477e.png"},3299:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Delete_conv-a4ad2f554e80d9e8beb4ad9592d4bf13.png"},9383:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Move_to-ef61a6b607e41f9e2196e832d0cdcb9b.png"},3463:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_create-f20435b4a2ed9dfa007efb36ae9f55aa.png"},848:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_edit_window-0c9e0cf4b5e706e8c777da1c10249a8b.png"},9555:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_enter_variables-75f9d1be8618f9c42e6a1b8e69c54842.png"},3064:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_response-8af03a748626eae59a3ca38522dd0601.png"},1003:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_resulting_message-280e6af59bea553b1b25c7efa28020b8.png"},7181:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_move_to-cc23c822071f9b4e255bc21bf4ed3195.png"},8287:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Replay-e3fd18f83259b66a46b9589e49589559.png"},3903:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,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"},2138:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Settings_Addons_section-c5af997edb0af1e7afb91e07b3cf5cf1.png"},9855:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/System_prompt_example_compare_settings-9bae1a272e703e3e7a19783586bda7d3.png"},5937:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/System_prompt_example_conversation-b8acac4bc78a51dd979a1526c2bd3b5e.png"},3565:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list-0f8667f4ebc22985de2fd75a7cdee746.png"},5584:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_apps-0c043b9cfb7280f013fce2c1ecd386b8.png"},9229:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_assistants-90f8dc510f8ea1b3c0edf9a55c1e99f0.png"},7276:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_models-60d060845058a1b2a103e6fdd6478ac9.png"},6902:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/View_settings-d5c1b2a8dd7ea820d49698714e512ef2.png"},3851:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,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"},8593:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/conversations-a284e306a9213cf466ff6e50ec734c0d.png"},5603:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/export-conv-cdf65ca84cfc687f467cd245e592b1f0.png"},7830:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/home-9d069fea243ec7a3ea2e6e6e7f105989.png"},2022:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/manage_attachments-973b015ae7c53d8b4dde7593df82d640.png"},8834:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/play-f22e318abc763d90a52fc7dc069afbf9.png"},155:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/prompt_actions-4fbbf3872ca18751a819977efcfa0a77.png"},3115:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/pt_search-13fa8427ae1e46b9553930dd91fdc41a.png"},3845:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/pt_share-2fe22502e0aac65be9db10c2195d7071.png"},1254:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/pt_unshare-6586692d9e1f05edfe8a1bf967365c0c.png"},6969:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/search-conv-6f8993d9ed3be0be9ef1d2d5a0e3c829.png"},1563:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/share_conv-a95b232e78f139731210e52e9f36857a.png"},9180:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/system_prompt-c64a3a8ad45aa928cf8e8fd41a9c95f3.png"},9402:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/temperature-259895bafb8f9c1336e6fa97864ace7c.png"},3578:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/user_settings-0a34980bd07353872d12bc1d39d86e04.png"},1151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>o});var s=t(7294);const a={},i=s.createContext(a);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1db65d89.3384cd90.js b/assets/js/1db65d89.3384cd90.js deleted file mode 100644 index 2f44ebb2..00000000 --- a/assets/js/1db65d89.3384cd90.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[659],{7925:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var s=t(5893),a=t(1151);const i={},o="Chat User Guide",r={id:"user-guide",title:"Chat User Guide",description:"Interface Components",source:"@site/docs/user-guide.md",sourceDirName:".",slug:"/user-guide",permalink:"/user-guide",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"CustomSideBar",previous:{title:"How to Enable Authentication with Azure AD",permalink:"/tutorials/azure-ad-configuration"},next:{title:"configuration",permalink:"/Deployment/configuration"}},l={},c=[{value:"Interface Components",id:"interface-components",level:2},{value:"Chat Settings",id:"chat-settings",level:3},{value:"Talk To",id:"talk-to",level:4},{value:"Language Models",id:"language-models",level:4},{value:"Assistants",id:"assistants",level:4},{value:"Applications",id:"applications",level:4},{value:"System Prompt",id:"system-prompt",level:4},{value:"Example of Prompt",id:"example-of-prompt",level:4},{value:"Temperature",id:"temperature",level:4},{value:"Addons",id:"addons",level:4},{value:"User Settings",id:"user-settings",level:3},{value:"Prompts",id:"prompts",level:2},{value:"Create",id:"create",level:3},{value:"Variables",id:"variables",level:3},{value:"Actions",id:"actions",level:3},{value:"Arrange",id:"arrange",level:3},{value:"Search and Filter",id:"search-and-filter",level:3},{value:"Share",id:"share",level:3},{value:"Unshare",id:"unshare",level:3},{value:"Duplicate",id:"duplicate",level:3},{value:"Conversations",id:"conversations",level:2},{value:"Create",id:"create-1",level:3},{value:"Actions",id:"actions-1",level:3},{value:"Arrange",id:"arrange-1",level:3},{value:"Search and Filter",id:"search-and-filter-1",level:3},{value:"Share",id:"share-1",level:3},{value:"Unshare",id:"unshare-1",level:3},{value:"Duplicate",id:"duplicate-1",level:3},{value:"Export",id:"export",level:3},{value:"Export a single conversation with attachments",id:"export-a-single-conversation-with-attachments",level:5},{value:"Export a single conversation without attachments",id:"export-a-single-conversation-without-attachments",level:5},{value:"Export all conversations",id:"export-all-conversations",level:5},{value:"Import",id:"import",level:3},{value:"Delete",id:"delete",level:3},{value:"Replay",id:"replay",level:3},{value:"Playback",id:"playback",level:3},{value:"Compare",id:"compare",level:3},{value:"Manage Attachments",id:"manage-attachments",level:3},{value:"Upload a file",id:"upload-a-file",level:5},{value:"Download attachments",id:"download-attachments",level:5},{value:"Delete attachments",id:"delete-attachments",level:5}];function d(e){const n={a:"a",blockquote:"blockquote",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"chat-user-guide",children:"Chat User Guide"}),"\n",(0,s.jsx)(n.h2,{id:"interface-components",children:"Interface Components"}),"\n",(0,s.jsx)(n.p,{children:"The AI DIAL Chat application interface has several sections, such as the chat box, settings, and panels for managing conversations and saved prompts."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3963).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Conversations"}),": Here, you can manage your conversations: create new ones, organize them in folders, and delete. You can collapse and expand the panel by clicking the ",(0,s.jsx)(n.strong,{children:"Hide panel"})," icon above it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Panel"}),": Use this section to enter a prompt, view results, and interact with language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Settings"}),": In this section, you can select the language model, assistant, application, and addons you'd like to use. You can also provide a system prompt and adjust the temperature setting."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Prompt Templates"}),": In this section, you can work with saved prompts: create new templates, update them, and organize them in folders. You can collapse and expand the panel by clicking the ",(0,s.jsx)(n.strong,{children:"Hide panel"})," icon above it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Account User Settings"}),": In your account settings, you can customize the color theme (dark or light) as well as log in or log out."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"chat-settings",children:"Chat Settings"}),"\n",(0,s.jsx)(n.p,{children:"In the Chat Settings section, there are the following components:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Talk To"}),"\n",(0,s.jsx)(n.li,{children:"System Prompt"}),"\n",(0,s.jsx)(n.li,{children:"Temperature"}),"\n",(0,s.jsx)(n.li,{children:"Addons"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Take a closer look at each of these elements."}),"\n",(0,s.jsx)(n.h4,{id:"talk-to",children:"Talk To"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3565).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:"In this section, you can choose the language model for communication, as well as an Assistant or Application to implement specific behavior for the LLM."}),"\n",(0,s.jsx)(n.h4,{id:"language-models",children:"Language Models"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7276).Z+"",width:"775",height:"501"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Available language models"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-3.5"})," is an advanced language model developed by OpenAI, known for its powerful natural language processing, understanding, and context awareness. Enabling human-like conversations, it can carry out various tasks, including summarizing, translation, content creation, and answering queries."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-4"})," is the latest iteration of the GTP series by OpenAI, offering more powerful natural language processing capabilities than its previous versions. It harnesses extensive training and massive datasets to deliver lifelike conversations, unsurpassed context awareness, and high-quality content generation across multiple languages and domains."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"GPT-4-32K"})," is the extension for GTP-4 that can possess a larger context window size (32,000 tokens). It offers several advantages, including a better understanding of context, improved performance in long-form tasks, enhanced reasoning and knowledge handling, and increased creativity in content generation. Please only use this one if you absolutely need it. It's slower and more expensive."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"PaLM2 (Bison)"})," is an LLM developed by Google that leverages an innovative hierarchical architecture to enhance its linguistic competence and computational efficiency. By employing parallel and multitask learning mechanisms, PaLM2 (Bison) provides exceptional performance in diverse language tasks, like question-answering, summarization, and translation, while also being highly scalable and adaptive to new environments."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AI21 (Jurassic-2 Grande)"})," is a large-scale language model with 178 billion parameters developed by AI21 Labs. It is an upgraded version of its predecessor AI21 Jurassic-1 and is capable of processing extensive amounts of text and generating contextually appropriate replies. The model's distinguishing features include its scale, contextual understanding, multilingualism, few-shot learning, and knowledge integration with external sources. It is designed to enhance natural language processing, chatbots, virtual assistants, and other applications requiring advanced language capabilities."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AI21 (Jurassic-2 Jumbo)"})," is an expansion of the AI21 Jurassic-2 Grande model, leveraging improved training techniques, larger datasets, and advanced hardware resources. Jumbo provides a boost in performance and is specifically designed for challenging natural language applications such as sentiment analysis, language translation, and document summarization. AI21 Jurassic-2 Jumbo has 199 billion parameters, making it the largest publicly available language model to date."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"CodeLlama-34b"})," is a language model developed by AI21 that has 34 billion parameters. CodeLlama-34b is specifically designed for use in software development and is trained on a diverse set of technical documentation, including programming languages, code samples, and developer forums. The model is optimized for code-related natural language queries, including code completion, code understanding, and code generation."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Llama2q-70B"})," is an LLM developed by AI21, which has 70 billion parameters. Like CodeLlama-34b, it is designed for technical applications but with a broader scope. Llama2q-70B has a wide range of capabilities, including question answering, text classification, and summarization. It is trained on a variety of sources, including technical documents, academic papers, and news articles, and is designed to provide accurate results for a wide range of technical queries and applications."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude)"})," is a large-scale LLM with 175 billion parameters that is optimized for general-purpose language tasks, including question answering, dialogue generation, and text completion. The model has been trained on data from a wide range of sources to provide high accuracy in many contexts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude Instant)"})," is an LLM that can generate responses in real-time, making it useful for applications such as chatbots and virtual assistants. It is a smaller model than the Anthropic (Claude) model, with 9 billion parameters, and is optimized for low-latency inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"Anthropic (Claude V2)"})," is an upgraded version of the Anthropic (Claude) model, with 400 billion parameters, making it one of the largest language models to date. This model is designed for sophisticated NLP applications involving complex reasoning, inference, and understanding of long-form text data."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.em,{children:"AWS (Titan)"}),": AWS (Amazon Web Services) developed an LLM called Titan in 2021, which has 850 billion parameters, making it the largest publicly available language model at the time of its introduction. The model was trained on a diverse set of text sources, including web pages, books, and news articles. Titan is designed to handle complex natural language processing tasks, such as summarization, dialogue generation, and translation."]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"assistants",children:"Assistants"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9229).Z+"",width:"771",height:"292"})}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, Assistants are a combination of preselected Addons and System Prompts that enable specific behavior in the LLM, allowing for more tailored and adaptive responses to user needs. Unlike the Model+Addon configuration, where users have the flexibility to choose different Addons, Assistants come with predetermined Addons that cannot be removed or unselected. However, the Model can still be reassigned within the Assistant."}),"\n",(0,s.jsx)(n.p,{children:"Assistants give you more control over LLM behavior, resulting in tailored and accurate responses that match specific needs. The flexibility of this combination lets you create custom Assistants within the AI DIAL framework. These Assistants can range from simple tasks, like asking the LLM to provide answers in a specific tone or style (e.g., like a pirate), to more complex tasks, such as restricting the LLM's data to a specific geographical area (e.g., providing weather forecasts for Chicago only). Combining Addons and System Prompts enables better customization and adaptability to various situations, leading to more versatile responses."}),"\n",(0,s.jsx)(n.p,{children:"In a chat application, you can include custom Assistant(s) that users can choose when using AI DIAL."}),"\n",(0,s.jsx)(n.h4,{id:"applications",children:"Applications"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5584).Z+"",width:"766",height:"715"})}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, Applications are ready-to-use solutions made up of predefined configurations of Addons and other services or any custom logic. They help you customize LLM behavior by integrating Addons with any desired logic. Applications can be any component that meets API requirements and implements non-LLM-related logic, such as repeating user messages, creating a fully deterministic chatbot, or managing complex multi-LLM interactions. This versatility in Applications allows for tailored handling of unique scenarios and requirements."}),"\n",(0,s.jsx)(n.h4,{id:"system-prompt",children:"System Prompt"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9833).Z+"",width:"992",height:"570"})}),"\n",(0,s.jsxs)(n.p,{children:["The system prompt in AI DIAL refers to the initial instructions given to the model. You can use any previously created prompt as a system prompt (for details, refer to the ",(0,s.jsx)(n.a,{href:"#create",children:"Create"})," in Prompts), and it will set the context and tone for the whole conversation."]}),"\n",(0,s.jsx)(n.p,{children:"The system prompt in AI DIAL is like a compass for a traveler, pointing the model in the right direction to navigate the conversational landscape, ensuring it stays on course and aligned with the overall purpose and desired outcome."}),"\n",(0,s.jsxs)(n.p,{children:["You can change system prompts during a conversation by selecting the ",(0,s.jsx)(n.strong,{children:"Settings"})," icon at the top bar of the conversation."]}),"\n",(0,s.jsx)(n.h4,{id:"example-of-prompt",children:"Example of Prompt"}),"\n",(0,s.jsxs)(n.p,{children:["Let\u2019s compare a conversation with a system prompt selected and a conversation without a system prompt. For illustration purposes, we\u2019re going to use the compare mode (refer to the ",(0,s.jsx)(n.a,{href:"#compare",children:"Compare"})," section for details) and create two conversations with identical settings except for the system prompt selection."]}),"\n",(0,s.jsx)(n.p,{children:"The prompt used as a system prompt is as follows:"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Let's play a game. Name a city that starts with the last letter of the one that I named in a previous message and then tell me that it is my turn to name a city."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9855).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5937).Z+"",width:"1383",height:"714"})}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"User message"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Language model response without a system prompt"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Language model response with a system prompt"})})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Grodno"}),(0,s.jsx)(n.td,{children:"Grodno, also known as Hrodna, is a city in western Belarus, near the borders with Poland and Lithuania. It is the administrative center of Grodno region and has a population of around 365,000 people. Grodno is one of the oldest cities in Belarus, dating back to the 11th century. The city boasts a rich history and diverse architectural styles, including baroque, classicism, and modernism."}),(0,s.jsx)(n.td,{children:"Oslo. It's your turn!"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Osaka"}),(0,s.jsx)(n.td,{children:"Osaka is a large port city and commercial center on the Japanese island of Honshu. It's known for its modern architecture, nightlife, and hearty street food. One of Osaka's most popular tourist destinations is the bustling urban area of Dotonbori, where the city's entertainment and dining scenes come to life with numerous restaurants, bars, and shops."}),(0,s.jsx)(n.td,{children:"Ankara. Now it's your turn to name a city!"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Antwerp"}),(0,s.jsx)(n.td,{children:"Antwerp is a city in Belgium, and it's the country\u2019s biggest port. It is located on the River Scheldt, linked to the North Sea by the Westerschelde estuary. Known for its many historical buildings, squares, museums, and cultural attractions, it's a popular tourist destination."}),(0,s.jsx)(n.td,{children:"Prague. Your turn to name a city!"})]})]})]}),"\n",(0,s.jsx)(n.h4,{id:"temperature",children:"Temperature"}),"\n",(0,s.jsx)(n.p,{children:"The temperature parameter controls the creativity and randomness of the model's output. A higher temperature (e.g., 1.0) makes the output more diverse and creative, while a lower temperature (e.g., 0.1) makes the output more focused and deterministic."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3103).Z+"",width:"992",height:"570"})}),"\n",(0,s.jsx)(n.p,{children:"Adjusting the temperature allows you to balance creativity and consistency in the generated response."}),"\n",(0,s.jsx)(n.h4,{id:"addons",children:"Addons"}),"\n",(0,s.jsx)(n.p,{children:"You may want LLM to access particular data or technology to generate responses. This could be your company's database, a collection of PDF documents, calculation engines, API or any other data source or technology.\nWithin the AI DIAL framework, an Addon is a service or any component that follows the Open API specification. LLMs can access and use any desired data source or technology to create responses."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(2138).Z+"",width:"992",height:"570"})}),"\n",(0,s.jsx)(n.p,{children:"Some examples of Addon implementation are semantic search, Q&A search, DB query generator, or any other custom logic that meets your business needs. AI DIAL can include custom Addons that you can choose to activate a specific system behavior."}),"\n",(0,s.jsx)(n.h3,{id:"user-settings",children:"User Settings"}),"\n",(0,s.jsx)(n.p,{children:"On the top bar, in the user area, you can click a down arrow to access additional settings or logout."}),"\n",(0,s.jsx)(n.p,{children:"You can select the chat theme, dark or light, add a custom logo, and switch on a full width chat mode."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(491).Z+"",width:"1588",height:"641"})}),"\n",(0,s.jsx)(n.h2,{id:"prompts",children:"Prompts"}),"\n",(0,s.jsx)(n.p,{children:"A prompt is an instruction, a question, or a message that a user provides to a language model to receive an answer. Prompts can also contain constraints or requirements. They help the model understand the task at hand and the types of responses that are expected.\nYou can use prompts as templates for your messages, instructions to the model, or to encourage the model to generate specific types of content.\nIn AI DIAL, you can create prompts beforehand and reuse them in one or several conversations."}),"\n",(0,s.jsxs)(n.p,{children:["Prompts can be applied to one message or a whole conversation. Refer to the ",(0,s.jsx)(n.a,{href:"#system-prompt",children:"System prompt"})," section of this guide for details."]}),"\n",(0,s.jsx)(n.p,{children:"The section with your prompts is located in the right-hand area of the screen. In this section, you can work with saved prompts: create new templates, update them, and organize them with folders."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"All your prompts are stored on the server, and you can access them from any device you use."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"create",children:"Create"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3463).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:"To create a new prompt:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the right panel, select ",(0,s.jsx)(n.strong,{children:"New prompt"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Fill in the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Description"}),", and ",(0,s.jsx)(n.strong,{children:"Prompt"}),' boxes. The following symbols in the prompt names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Save"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Name"})," and ",(0,s.jsx)(n.strong,{children:"Description"})," aren\u2019t used as instructions for a language model. They only help you to distinguish the prompt from others. The language model will only use instructions from the ",(0,s.jsx)(n.strong,{children:"Prompt"})," box."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"variables",children:"Variables"}),"\n",(0,s.jsxs)(n.p,{children:["You can use prompts as templates for your messages to a language model. For example, you need to calculate an equation ",(0,s.jsx)(n.code,{children:"a + c/d"}),", round up the answer, and then divide it by 4. Let\u2019s imagine that you need results for four sets of ",(0,s.jsx)(n.code,{children:"a"}),", ",(0,s.jsx)(n.code,{children:"c"}),", and ",(0,s.jsx)(n.code,{children:"d"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"In that case you can create the following prompt:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(848).Z+"",width:"1241",height:"775"})}),"\n",(0,s.jsxs)(n.p,{children:["Here, ",(0,s.jsx)(n.code,{children:"a"}),", ",(0,s.jsx)(n.code,{children:"c"}),", and ",(0,s.jsx)(n.code,{children:"d"})," are variables. In the prompt body, they are denoted by double curly brackets: ",(0,s.jsx)(n.code,{children:"{{ }}"}),"."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"You can combine mathematical expressions and natural language in your prompts."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["After you\u2019ve created the prompt, you can use it by typing a slash ",(0,s.jsx)(n.code,{children:"/"})," in the chat box and selecting the name of a prompt (it is ",(0,s.jsx)(n.strong,{children:"Math"})," in our example). You\u2019ll see the following form where you can enter any numbers:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9555).Z+"",width:"967",height:"775"})}),"\n",(0,s.jsx)(n.p,{children:"When you submit the form, your message will look like on the illustration below:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1003).Z+"",width:"972",height:"116"})}),"\n",(0,s.jsx)(n.p,{children:"Send the message to the model, and it will generate an answer using both mathematical and natural language instructions:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3064).Z+"",width:"804",height:"727"})}),"\n",(0,s.jsxs)(n.p,{children:["Generally, variables can be anything, not only numbers. For example, you can create a prompt with the following body: ",(0,s.jsx)(n.code,{children:"Who played {{character}} in {{movie}}? or What is a Latin name of {{plant common name}}?"})]}),"\n",(0,s.jsx)(n.h3,{id:"actions",children:"Actions"}),"\n",(0,s.jsx)(n.p,{children:"You can perform various actions with your prompts:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Edit a prompt"}),": select a prompt on the right panel to invoke the Edit window. Make all necessary changes and click ",(0,s.jsx)(n.strong,{children:"Save"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Export a prompt"}),": right-click a prompt on the right panel and select ",(0,s.jsx)(n.strong,{children:"Export"}),". The prompt will be exported as JSON."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Move to"}),": use to place a prompt in a folder."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Delete a prompt"}),": right-click a prompt on the right panel and select ",(0,s.jsx)(n.strong,{children:"Delete"}),", then confirm the action."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Delete all prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Delete all"})," icon at the bottom of the right panel and confirm your action."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Export all prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Export prompts"})," icon at the bottom of the right panel. All your prompts will be exported as JSON."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Import prompts"}),": click the ",(0,s.jsx)(n.strong,{children:"Import prompts"})," icon at the bottom of the right panel and then select a JSON file with prompts."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(5366).Z+"",width:"315",height:"819"})}),"\n",(0,s.jsx)(n.h3,{id:"arrange",children:"Arrange"}),"\n",(0,s.jsx)(n.p,{children:"You can gather your prompts in folders."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7181).Z+"",width:"362",height:"477"})}),"\n",(0,s.jsxs)(n.p,{children:["You can create a hierarchy of folders with three nesting levels. Just create a folder and drag-n-drop it in the other folder to create a nesting level.\nThe same way, you can either drag-n-drop a prompt into a folder or use ",(0,s.jsx)(n.strong,{children:"Move to"})," in the context menu of a prompt to place it in one of the folders.",(0,s.jsx)(n.br,{}),"\n",'Empty folders are deleted after refreshing a page or relogining.\nThe following symbols in the folders names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsx)(n.h3,{id:"search-and-filter",children:"Search and Filter"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1122).Z+""})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Search"})," box can be utilized to find prompts and folders by their names."]}),"\n",(0,s.jsxs)(n.p,{children:['You can filter prompts by the "Shared by me" criterion. To do so, click the ',(0,s.jsx)(n.strong,{children:"Filter"})," icon and select ",(0,s.jsx)(n.strong,{children:"Shared by me"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"share",children:"Share"}),"\n",(0,s.jsx)(n.p,{children:"You can share a prompt or a folder with several prompts with other users."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["When someone shared a prompt with you, you can find it in the ",(0,s.jsx)(n.strong,{children:"Shared with me"})," section on the right panel. ",(0,s.jsx)(n.strong,{children:"Important"}),": you cannot change a prompt that has been shared with you. To be able to work with it, ",(0,s.jsx)(n.a,{href:"#duplicate",children:"duplicate it"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To share a prompt or a folder, click ",(0,s.jsx)(n.strong,{children:"Share"})," in the contextual menu and copy the link. After someone has opened your link, an arrow icon appears near its name."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you share a folder, all folders and prompts in this folders will be shared."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7943).Z+""})}),"\n",(0,s.jsx)(n.h3,{id:"unshare",children:"Unshare"}),"\n",(0,s.jsxs)(n.p,{children:["To revoke access from all users, click ",(0,s.jsx)(n.strong,{children:"Unshare"})," in the contextual menu and then click ",(0,s.jsx)(n.strong,{children:"Revoke access"})," in the dialog."]}),"\n",(0,s.jsx)(n.h3,{id:"duplicate",children:"Duplicate"}),"\n",(0,s.jsxs)(n.p,{children:["You can duplicate a prompt, for example, to be able to change a prompt that was shared with you. To duplicate a prompt, click ",(0,s.jsx)(n.strong,{children:"Duplicate"})," in the contextual menu."]}),"\n",(0,s.jsx)(n.h2,{id:"conversations",children:"Conversations"}),"\n",(0,s.jsx)(n.p,{children:"In the AI DIAL framework, a conversation is a dialogue between an agent, such as a language model, assistant, or application, and a human user. The agent uses natural language to interact with a human and receive/give a feedback. Within one conversation, you can refer to previous questions and answers. But different conversations don\u2019t share context."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"All your conversations are stored on the server, and you can access them from any device you use."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"create-1",children:"Create"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1681).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsx)(n.p,{children:"To create a conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["On the left panel, click ",(0,s.jsx)(n.strong,{children:"New conversation"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the main section, under ",(0,s.jsx)(n.strong,{children:"Talk To"}),", select a language model, an assistant, or an application. Five most recently used items are shown in the section. To see all available items, click ",(0,s.jsx)(n.strong,{children:"See full list"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Optionally, under ",(0,s.jsx)(n.strong,{children:"System prompts"}),', select a prompt by typing "/" in the text box. For details, refer to the ',(0,s.jsx)(n.a,{href:"#prompts",children:"Prompts"})," section of this guide."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Under ",(0,s.jsx)(n.strong,{children:"Temperature"}),", set a value of the temperature parameter. For details, refer to the ",(0,s.jsx)(n.a,{href:"#temperature",children:"Temperature"})," section of this guide."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Optionally, under ",(0,s.jsx)(n.strong,{children:"Addons"}),", select an Addon. For details, refer to the ",(0,s.jsx)(n.a,{href:"#addons",children:"Addons"})," section of this guide."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Under conversation settings, type your text (prompt) in the chat box and click the ",(0,s.jsx)(n.strong,{children:"Send"}),' icon. The conversation will be created, and your first question will be used as its name. The following symbols in the conversation names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&" and will be excluded. Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"actions-1",children:"Actions"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"During a conversation"}),", you can perform various actions:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Enter prompt"}),": you can use a text box at the bottom to enter your prompts."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Generate answer"}),": click enter to generate the response to your prompt."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Stop generating"}),": in the process of generating the response, you can stop it."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Regenerate response"}),": when stopped, you can regenerate the response. ",(0,s.jsx)(n.strong,{children:"Important"}),": If you encounter a server error or click the ",(0,s.jsx)(n.strong,{children:"Stop Generating"})," button and receive an empty response, the ",(0,s.jsx)(n.strong,{children:"Send"})," button will be disabled. To continue the conversation, you'll need to generate the answer again. If you receive a partial response (a combination of text and an error), the model can still proceed, while for Assistants/Applications, you'll need to generate the response again."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Delete/Edit"}),": during the conversation, you can edit or delete your prompts. After a prompt has been edited, the response is regenerated, and all your prompts after the edited one will be deleted. When you delete your prompt, the response will be deleted, too."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Attach files"}),": some models and applications, like ",(0,s.jsx)(n.em,{children:"DIAL RAG"})," and ",(0,s.jsx)(n.em,{children:"Echo"}),", allow adding attachments to the conversation. In this case, you'll see the ",(0,s.jsx)(n.strong,{children:"Attachments"})," icon available in the chat panel. Click it to upload a file from your device or select an already uploaded file. Refer to the ",(0,s.jsx)(n.a,{href:"#manage-attachments",children:"Manage attachments"})," section for details."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Download attached files"}),": click the ",(0,s.jsx)(n.strong,{children:"Download"})," icon near the file name."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Preview attached images"}),": click the ",(0,s.jsx)(n.strong,{children:"Expand"})," icon near the image name."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Copy"}),": you can copy answers."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Like/dislike"}),": you can like and dislike responses in a conversation. Use likes to highlight important responses and dislikes to mark the responses you don't need."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Clear conversation messages"}),": you can clear all messages in your conversation. Click the eraser icon on the top bar to do that."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Change conversation settings"}),": during the conversation, you can access and edit its setting by clicking the gear icon on the top bar. Refer to ",(0,s.jsx)(n.a,{href:"#chat-settings",children:"Chat Settings"})," to learn more."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"View current settings"}),": on the top bar, point to the language model logo icon near the conversation name to see current settings."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(6902).Z+"",width:"755",height:"189"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"arrange-1",children:"Arrange"}),"\n",(0,s.jsx)(n.p,{children:"You can gather your conversations in folders."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(9383).Z+"",width:"519",height:"630"})}),"\n",(0,s.jsxs)(n.p,{children:["You can create a hierarchy of folders with three nesting levels. Just create a folder and drag-n-drop it in the other folder to create a nesting level. The same way, you can either drag-n-drop a conversation into a folder or use ",(0,s.jsx)(n.strong,{children:"Move to"})," in the context menu of a conversation to move it to a folder.\nEmpty folders are deleted after refreshing a page."]}),"\n",(0,s.jsxs)(n.p,{children:['The following symbols in the folders names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&" and will be excluded. Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you use the contextual menu to move a conversation, you can create a new folder, in which the conversation should be moved."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"search-and-filter-1",children:"Search and Filter"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1122).Z+""})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Search"})," box can be utilized to find conversations and folders by their names."]}),"\n",(0,s.jsxs)(n.p,{children:['You can filter conversations by the "Shared by me" criterion. To do so, click the ',(0,s.jsx)(n.strong,{children:"Filter"})," icon and select ",(0,s.jsx)(n.strong,{children:"Shared by me"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"share-1",children:"Share"}),"\n",(0,s.jsx)(n.p,{children:"You can share a conversation or a folder with several conversations with other users."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["When someone shared a conversation with you, you can find it in the ",(0,s.jsx)(n.strong,{children:"Shared with me"})," section on the left panel. ",(0,s.jsx)(n.strong,{children:"Important"}),": you cannot change a conversation that has been shared with you. To be able to work with it, ",(0,s.jsx)(n.a,{href:"#duplicate",children:"duplicate it"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To share a conversation or a folder, click ",(0,s.jsx)(n.strong,{children:"Share"})," in the contextual menu and copy the link. After someone has opened your link, an arrow icon appears near its name."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you share a folder, all folders and conversations in this folders will be shared."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(7943).Z+""})}),"\n",(0,s.jsx)(n.h3,{id:"unshare-1",children:"Unshare"}),"\n",(0,s.jsxs)(n.p,{children:["To revoke access from all users, click ",(0,s.jsx)(n.strong,{children:"Unshare"})," in the contextual menu and then click ",(0,s.jsx)(n.strong,{children:"Revoke access"})," in the dialog."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8351).Z+""})}),"\n",(0,s.jsx)(n.h3,{id:"duplicate-1",children:"Duplicate"}),"\n",(0,s.jsxs)(n.p,{children:["You can duplicate a conversation, for example, to be able to change a conversation that was shared with you. To duplicate a conversation, click ",(0,s.jsx)(n.strong,{children:"Duplicate"})," in the contextual menu."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3695).Z+""})}),"\n",(0,s.jsx)(n.h3,{id:"export",children:"Export"}),"\n",(0,s.jsx)(n.p,{children:"You can export selected conversations with or without attachments or all conversations without attachments in a JSON format."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:'Exported conversations are named by the following pattern: prefix "epam_ai_dial_chat", then "with_attachments" if the conversation was exported with attachments, then "month_day".'}),"\n"]}),"\n",(0,s.jsx)(n.h5,{id:"export-a-single-conversation-with-attachments",children:"Export a single conversation with attachments"}),"\n",(0,s.jsx)(n.p,{children:"To export a single conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, in the conversation contextual menu, point to ",(0,s.jsx)(n.strong,{children:"Export"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"With attachments"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The conversation will be exported as a zip archive."}),"\n",(0,s.jsx)(n.h5,{id:"export-a-single-conversation-without-attachments",children:"Export a single conversation without attachments"}),"\n",(0,s.jsx)(n.p,{children:"To export a single conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On the left panel, in the conversation contextual menu, point to ",(0,s.jsx)(n.strong,{children:"Export"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Without attachments"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The conversation will be exported as a JSON."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1657).Z+""})}),"\n",(0,s.jsx)(n.h5,{id:"export-all-conversations",children:"Export all conversations"}),"\n",(0,s.jsxs)(n.p,{children:["To export all conversations, at the bottom of the left panel, click the ",(0,s.jsx)(n.strong,{children:"Export conversations"})," icon."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Conversations will be exported without attachments."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"import",children:"Import"}),"\n",(0,s.jsx)(n.p,{children:"Exported conversations can be imported."}),"\n",(0,s.jsxs)(n.p,{children:["To import JSON or a zip file with conversations, click the ",(0,s.jsx)(n.strong,{children:"Import conversations"})," icon at the bottom of the left panel and then select a file with conversations."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"When you import a conversation with attachments, the attachments will be available in the Imports folder."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"delete",children:"Delete"}),"\n",(0,s.jsx)(n.p,{children:"You can delete a single conversation or all conversations."}),"\n",(0,s.jsxs)(n.p,{children:["To delete a single conversation, on the left panel, in the conversation contextual menu, select ",(0,s.jsx)(n.strong,{children:"Delete"})," and confirm your action."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3299).Z+"",width:"422",height:"822"})}),"\n",(0,s.jsxs)(n.p,{children:["To delete all conversations, at the bottom of the left panel, click the ",(0,s.jsx)(n.strong,{children:"Delete conversations"})," icon."]}),"\n",(0,s.jsx)(n.h3,{id:"replay",children:"Replay"}),"\n",(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.strong,{children:"Replay"})," to reproduce conversations but with different settings (e.g. a different model). A replayed conversation can be used to compare responses to the same questions from different models and with different settings of the conversation."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8287).Z+"",width:"393",height:"633"})}),"\n",(0,s.jsxs)(n.p,{children:["Use ",(0,s.jsx)(n.strong,{children:"Replay as is"})," to reproduce the conversation with the original settings."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3903).Z+"",width:"513",height:"140"})}),"\n",(0,s.jsx)(n.p,{children:"To replay a conversation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Replay"})," in the conversation menu."]}),"\n",(0,s.jsxs)(n.li,{children:["Select ",(0,s.jsx)(n.strong,{children:"Replay as is"})," in ",(0,s.jsx)(n.strong,{children:"More info"})," in the Replay settings to reproduce the conversation with the original settings or change the conversation settings."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Start replay"}),"."]}),"\n",(0,s.jsx)(n.li,{children:"In the process of replaying, you can stop and resume the replay process."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The replayed conversation is displayed as a new conversation with the ",(0,s.jsx)(n.code,{children:"[Replay]"})," tag in the list of your conversations."]}),"\n",(0,s.jsx)(n.h3,{id:"playback",children:"Playback"}),"\n",(0,s.jsx)(n.p,{children:"The Playback mode can be used to simulate the current conversation without any engagement with models. This mode accurately reproduces the conversation like a recording. It should be noted that this differs from the Replay mode, where the prompts are resubmitted to the chosen model and the outcomes may differ from the initial conversation."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8834).Z+""})}),"\n",(0,s.jsx)(n.p,{children:"During the playback, you can manually stop and resume the playback process."}),"\n",(0,s.jsx)(n.h3,{id:"compare",children:"Compare"}),"\n",(0,s.jsx)(n.p,{children:"Use the Compare mode to compare two new or existing conversations at the same time with different setting (e.g. different models or temperature)."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(647).Z+"",width:"1920",height:"891"})}),"\n",(0,s.jsxs)(n.p,{children:["To compare two ",(0,s.jsx)(n.strong,{children:"new"})," conversations:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Compare"})," icon at the bottom of the left panel."]}),"\n",(0,s.jsx)(n.li,{children:"Choose settings of the first conversations."}),"\n",(0,s.jsx)(n.li,{children:"Choose settings of the second conversation."}),"\n",(0,s.jsx)(n.li,{children:"Type your question (prompt) in the chat box."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"As you can see on the picture above, the system creates two conversations with the same name. If you have chosen different language models, the conversations icons on the left panel will differ."}),"\n",(0,s.jsxs)(n.p,{children:["You can also compare two ",(0,s.jsx)(n.strong,{children:"existing"})," conversations:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(8848).Z+"",width:"379",height:"624"})}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"The Compare mode works only with conversations with the same amount of prompts from a user. The application will not allow comparing two conversations with different amounts of prompts."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["On the left panel, in the conversation menu of a conversation, select ",(0,s.jsx)(n.strong,{children:"Compare"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the main section, under ",(0,s.jsx)(n.strong,{children:"Select conversation to compare with"}),", select the second conversation from the drop box."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["By default, only conversations with the same name are available in the drop box. Select ",(0,s.jsx)(n.strong,{children:"Show all conversations"})," to see the full list of conversations."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Type your question (prompt) in the chat box."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(6987).Z+""})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"manage-attachments",children:"Manage Attachments"}),"\n",(0,s.jsxs)(n.p,{children:["To manage all attachments, click the ",(0,s.jsx)(n.strong,{children:"Attachments"})," icon at the bottom of the left panel."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(3851).Z+""})}),"\n",(0,s.jsx)(n.h5,{id:"upload-a-file",children:"Upload a file"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["In the Manage attachments dialog, select ",(0,s.jsx)(n.strong,{children:"Upload from device"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select one or several files you want to upload and click ",(0,s.jsx)(n.strong,{children:"Open"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Under ",(0,s.jsx)(n.strong,{children:"Upload to"}),", select ",(0,s.jsx)(n.strong,{children:"Change"})," to pick a folder, in which the files will be uploaded."]}),"\n",(0,s.jsxs)(n.li,{children:["Under ",(0,s.jsx)(n.strong,{children:"Files"}),', change file names or delete files, if necessary. The following symbols in the file names are prohibited: ":", ";", "/", "", ",", "=", "',", ",'", "%", "&". Note that you can use the "." symbol at the start or inside a name, but the dot at the end will be automatically removed.']}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Upload and attach files"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(2022).Z+""})}),"\n",(0,s.jsx)(n.h5,{id:"download-attachments",children:"Download attachments"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Click a folder to expand it."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"In the Manage attachments dialog, point to a file and select it. You can select several files."}),"\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Download"})," icon below the files tree."]}),"\n"]}),"\n",(0,s.jsx)(n.h5,{id:"delete-attachments",children:"Delete attachments"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"You won't be able to preview or download a deleted file in a conversation, but you still will see its name."}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"In the Manage attachments dialog, point to a file and select it. You can select several files."}),"\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Delete"})," icon below the files tree."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8848:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Compare_menu-75811b9b4f9eabb6b3561287512955ca.png"},647:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Compare_new-bf0e06e0b60718b1654c4471f80e477e.png"},1681:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Conversation_start_procedure-96428e0c010c3f6cd581df4f1f475d25.png"},3299:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Delete_conv-a4ad2f554e80d9e8beb4ad9592d4bf13.png"},3963:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Interface_components-40e13b49592befbd1da2e3d64d55e307.png"},9383:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Move_to-ef61a6b607e41f9e2196e832d0cdcb9b.png"},3463:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_create-f20435b4a2ed9dfa007efb36ae9f55aa.png"},848:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_edit_window-0c9e0cf4b5e706e8c777da1c10249a8b.png"},9555:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_enter_variables-75f9d1be8618f9c42e6a1b8e69c54842.png"},3064:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_response-8af03a748626eae59a3ca38522dd0601.png"},1003:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_example_math_resulting_message-280e6af59bea553b1b25c7efa28020b8.png"},7181:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompt_move_to-cc23c822071f9b4e255bc21bf4ed3195.png"},5366:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Prompts_panel_with_menu-b67ca46323fb78250592d3894a1ae7f9.png"},8287:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Replay-e3fd18f83259b66a46b9589e49589559.png"},3903:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,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"},1122:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},2138:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Settings_Addons_section-c5af997edb0af1e7afb91e07b3cf5cf1.png"},9833:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Settings_System_prompt-b2de8854bb75ac731c92cdc71335ae6a.png"},3103:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Settings_Temperature-8db9fc6550a7028be324de946c6e0052.png"},9855:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/System_prompt_example_compare_settings-9bae1a272e703e3e7a19783586bda7d3.png"},5937:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/System_prompt_example_conversation-b8acac4bc78a51dd979a1526c2bd3b5e.png"},3565:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list-0f8667f4ebc22985de2fd75a7cdee746.png"},5584:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_apps-0c043b9cfb7280f013fce2c1ecd386b8.png"},9229:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_assistants-90f8dc510f8ea1b3c0edf9a55c1e99f0.png"},7276:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/Talk_to_full_list_models-60d060845058a1b2a103e6fdd6478ac9.png"},8351:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},6902:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/View_settings-d5c1b2a8dd7ea820d49698714e512ef2.png"},3851:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},6987:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},3695:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},1657:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},2022:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},8834:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},491:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/settings-ca674f998fe45d51d2915c5bd5e79f6f.png"},7943:(e,n,t)=>{t.d(n,{Z:()=>s});const s="data:image/png;base64,"},1151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>o});var s=t(7294);const a={},i=s.createContext(a);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/46ba9cd8.3c9c83b9.js b/assets/js/46ba9cd8.3c9c83b9.js new file mode 100644 index 00000000..a9c2ee40 --- /dev/null +++ b/assets/js/46ba9cd8.3c9c83b9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[924],{1294:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>r});var t=o(5893),l=o(1151);const a={title:"How to call text-to-text DIAL applications"},s=void 0,i={id:"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",title:"How to call text-to-text DIAL applications",description:"From [this",source:"@site/docs/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications.mdx",sourceDirName:"Cookbook/dial-cookbook/examples",slug:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"How to call text-to-text DIAL applications"},sidebar:"CustomSideBar",previous:{title:"cognito",permalink:"/Deployment/idp-configuration/cognito"},next:{title:"How to call text-to-image DIAL applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications"}},c={},r=[{value:"Setup",id:"setup",level:2},{value:"Using Curl",id:"using-curl",level:2},{value:"Using Python library Requests",id:"using-python-library-requests",level:2},{value:"Using OpenAI Python SDK",id:"using-openai-python-sdk",level:2},{value:"Using LangChain",id:"using-langchain",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["From ",(0,t.jsx)(n.a,{href:"https://github.com/epam/ai-dial/blob/main/dial-cookbook/examples/how_to_call_text_to_text_applications.ipynb",children:"this\nnotebook"}),",\nyou can learn how to call text-to-text DIAL applications via ",(0,t.jsx)(n.a,{href:"https://epam-rail.com/dial_api#/paths/~1openai~1deployments~1%7BDeployment%20Name%7D~1chat~1completions/post",children:"DIAL API\nchat/completions"}),"\ncall."]}),"\n",(0,t.jsxs)(n.p,{children:["For this example, we use a sample text-to-text application called\n",(0,t.jsx)(n.strong,{children:"Echo"}),", which returns the content of the last user message."]}),"\n",(0,t.jsx)(n.h2,{id:"setup",children:"Setup"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 1"}),": install the necessary dependencies and import the libraries\nwe are going to use."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"!pip install requests==2.31.0\n!pip install openai==1.9.0\n!pip install langchain-openai==0.0.3\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"import requests\nimport openai\nimport langchain_openai\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 2"}),": if DIAL Core server is already configured and running, set\nenv vars ",(0,t.jsx)(n.code,{children:"DIAL_URL"})," and ",(0,t.jsx)(n.code,{children:"APP_NAME"})," to point to the DIAL Core server and\nthe text-to-text application (or model) you want to use."]}),"\n",(0,t.jsxs)(n.p,{children:["Otherwise, run the ",(0,t.jsx)(n.a,{href:"https://github.com/epam/ai-dial/blob/main/dial-cookbook/docker-compose.yml",children:"docker-compose\nfile"}),"\nin a separate terminal to start the ",(0,t.jsx)(n.strong,{children:"DIAL Core"})," server locally along\nwith a sample ",(0,t.jsx)(n.strong,{children:"echo"})," application. The DIAL Core will become available\nat ",(0,t.jsx)(n.code,{children:"http://localhost:8080"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"docker compose up core echo\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 3"}),": configure ",(0,t.jsx)(n.code,{children:"DIAL_URL"})," and ",(0,t.jsx)(n.code,{children:"APP_NAME"})," env vars. The default\nvalues are configured under the assumption that DIAL Core is running\nlocally via the docker-compose file."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'import os\n\ndial_url = os.environ.get("DIAL_URL", "http://localhost:8080")\nos.environ["DIAL_URL"] = dial_url\n\napp_name = os.environ.get("APP_NAME", "echo")\nos.environ["APP_NAME"] = app_name\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-curl",children:"Using Curl"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The DIAL deployment is called ",(0,t.jsx)(n.code,{children:"app_name"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["The local DIAL Core server URL is ",(0,t.jsx)(n.code,{children:"dial_url"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["The OpenAI API version we are going to use is ",(0,t.jsx)(n.code,{children:"2023-12-01-preview"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Therefore, the application is accessible via the following URL:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"${DIAL_URL}/openai/deployments/${APP_NAME}/chat/completions?api-version=2023-12-01-preview\n"})}),"\n",(0,t.jsx)(n.p,{children:"The curl command that requests completion for a single message chat is:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'!curl -X POST "${DIAL_URL}/openai/deployments/${APP_NAME}/chat/completions?api-version=2023-12-01-preview" \\\n -H "Api-Key:dial_api_key" \\\n -H "Content-Type:application/json" \\\n -d \'{"messages": [{"role": "user", "content": "Hello world!"}]}\'\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:'{"choices":[{"index":0,"finish_reason":"stop","message":{"role":"assistant","content":"Hello world!"}}],"usage":null,"id":"37ffdc98-da4d-48e8-8dec-2d0ec0fd94b1","created":1707310417,"object":"chat.completion"}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-python-library-requests",children:"Using Python library Requests"}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s make an HTTP request using the Python library ",(0,t.jsx)(n.code,{children:"requests"})," and make\nsure the output message matches the message in the request."]}),"\n",(0,t.jsx)(n.p,{children:"The arguments are identical to the curl command above."}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode first:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'response = requests.post(\n f"{dial_url}/openai/deployments/{app_name}/chat/completions?api-version=2023-12-01-preview",\n headers={"Api-Key": "dial_api_key"},\n json={"messages": [{"role": "user", "content": "Hello world!"}]},\n)\nbody = response.json()\ndisplay(body)\ncompletion = body["choices"][0]["message"]["content"]\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"{'choices': [{'index': 0,\n 'finish_reason': 'stop',\n 'message': {'role': 'assistant', 'content': 'Hello world!'}}],\n 'usage': None,\n 'id': 'dd3647aa-2496-461c-adc4-746e323ee13f',\n 'created': 1707310430,\n 'object': 'chat.completion'}\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"Completion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["When ",(0,t.jsx)(n.strong,{children:"streaming is enabled"}),", the chat completion returns a sequence of\nmessages, each containing a chunk of a generated response:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'response = requests.post(\n f"{dial_url}/openai/deployments/{app_name}/chat/completions?api-version=2023-12-01-preview",\n headers={"Api-Key": "dial_api_key"},\n json={"messages": [{"role": "user", "content": "Hello world!"}], "stream": True},\n)\nfor chunk in response.iter_lines():\n print(chunk)\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:'b\'data: {"choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: {"choices":[{"index":0,"finish_reason":null,"delta":{"content":"Hello world!"}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: {"choices":[{"index":0,"finish_reason":"stop","delta":{}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: [DONE]\'\nb\'\'\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-openai-python-sdk",children:"Using OpenAI Python SDK"}),"\n",(0,t.jsxs)(n.p,{children:["The DIAL deployment could be called using ",(0,t.jsx)(n.a,{href:"https://pypi.org/project/openai/",children:"OpenAI Python\nSDK"})," as well."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'openai_client = openai.AzureOpenAI(\n azure_endpoint=dial_url,\n azure_deployment=app_name,\n api_key="dial_api_key",\n api_version="2023-12-01-preview",\n)\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'\nchat_completion = openai_client.chat.completions.create(\n messages=[\n {\n "role": "user",\n "content": "Hello world!",\n }\n ],\n model=app_name,\n)\nprint(chat_completion)\ncompletion = chat_completion.choices[0].message.content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"ChatCompletion(id='1d020e70-9de6-402a-a2e0-cb45e340aafa', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Hello world!', role='assistant', function_call=None, tool_calls=None))], created=1707310540, model=None, object='chat.completion', system_fingerprint=None, usage=None)\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'chat_completion = openai_client.chat.completions.create(\n messages=[\n {\n "role": "user",\n "content": "Hello world!",\n }\n ],\n stream=True,\n model=app_name,\n)\ncompletion = ""\nfor chunk in chat_completion:\n print(chunk)\n content = chunk.choices[0].delta.content\n if content:\n completion += content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"ChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content='Hello world!', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None), finish_reason='stop', index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsx)(n.h2,{id:"using-langchain",children:"Using LangChain"}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application via the\n",(0,t.jsx)(n.a,{href:"https://pypi.org/project/langchain-openai/",children:"LangChain"})," library."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'from langchain_core.messages import HumanMessage\n\nllm = langchain_openai.AzureChatOpenAI(\n azure_endpoint=dial_url,\n azure_deployment=app_name,\n api_key="dial_api_key",\n api_version="2023-12-01-preview",\n)\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'output = llm.generate(messages=[[HumanMessage(content="Hello world!")]])\nprint(output)\ncompletion = output.generations[0][0].text\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"generations=[[ChatGeneration(text='Hello world!', generation_info={'finish_reason': 'stop', 'logprobs': None}, message=AIMessage(content='Hello world!'))]] llm_output={'token_usage': {}, 'model_name': 'gpt-3.5-turbo'} run=[RunInfo(run_id=UUID('ca6e6bbf-84cb-489a-abcf-9c6ed922713d'))]\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'output = llm.stream(input=[HumanMessage(content="Hello world!")])\ncompletion = ""\nfor chunk in output:\n print(chunk.dict())\n completion += chunk.content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\n{'content': 'Hello world!', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\n{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\nCompletion: 'Hello world!'\n"})})]})}function d(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>i,a:()=>s});var t=o(7294);const l={},a=t.createContext(l);function s(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/46ba9cd8.f6951793.js b/assets/js/46ba9cd8.f6951793.js deleted file mode 100644 index 27870b78..00000000 --- a/assets/js/46ba9cd8.f6951793.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[924],{1294:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>r});var t=o(5893),l=o(1151);const a={title:"How to call text-to-text DIAL applications"},s=void 0,i={id:"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",title:"How to call text-to-text DIAL applications",description:"From [this",source:"@site/docs/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications.mdx",sourceDirName:"Cookbook/dial-cookbook/examples",slug:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"How to call text-to-text DIAL applications"},sidebar:"CustomSideBar",previous:{title:"Bedrock Model Deployment",permalink:"/Deployment/Bedrock Model Deployment"},next:{title:"How to call text-to-image DIAL applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications"}},c={},r=[{value:"Setup",id:"setup",level:2},{value:"Using Curl",id:"using-curl",level:2},{value:"Using Python library Requests",id:"using-python-library-requests",level:2},{value:"Using OpenAI Python SDK",id:"using-openai-python-sdk",level:2},{value:"Using LangChain",id:"using-langchain",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["From ",(0,t.jsx)(n.a,{href:"https://github.com/epam/ai-dial/blob/main/dial-cookbook/examples/how_to_call_text_to_text_applications.ipynb",children:"this\nnotebook"}),",\nyou can learn how to call text-to-text DIAL applications via ",(0,t.jsx)(n.a,{href:"https://epam-rail.com/dial_api#/paths/~1openai~1deployments~1%7BDeployment%20Name%7D~1chat~1completions/post",children:"DIAL API\nchat/completions"}),"\ncall."]}),"\n",(0,t.jsxs)(n.p,{children:["For this example, we use a sample text-to-text application called\n",(0,t.jsx)(n.strong,{children:"Echo"}),", which returns the content of the last user message."]}),"\n",(0,t.jsx)(n.h2,{id:"setup",children:"Setup"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 1"}),": install the necessary dependencies and import the libraries\nwe are going to use."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"!pip install requests==2.31.0\n!pip install openai==1.9.0\n!pip install langchain-openai==0.0.3\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"import requests\nimport openai\nimport langchain_openai\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 2"}),": if DIAL Core server is already configured and running, set\nenv vars ",(0,t.jsx)(n.code,{children:"DIAL_URL"})," and ",(0,t.jsx)(n.code,{children:"APP_NAME"})," to point to the DIAL Core server and\nthe text-to-text application (or model) you want to use."]}),"\n",(0,t.jsxs)(n.p,{children:["Otherwise, run the ",(0,t.jsx)(n.a,{href:"https://github.com/epam/ai-dial/blob/main/dial-cookbook/docker-compose.yml",children:"docker-compose\nfile"}),"\nin a separate terminal to start the ",(0,t.jsx)(n.strong,{children:"DIAL Core"})," server locally along\nwith a sample ",(0,t.jsx)(n.strong,{children:"echo"})," application. The DIAL Core will become available\nat ",(0,t.jsx)(n.code,{children:"http://localhost:8080"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"docker compose up core echo\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 3"}),": configure ",(0,t.jsx)(n.code,{children:"DIAL_URL"})," and ",(0,t.jsx)(n.code,{children:"APP_NAME"})," env vars. The default\nvalues are configured under the assumption that DIAL Core is running\nlocally via the docker-compose file."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'import os\n\ndial_url = os.environ.get("DIAL_URL", "http://localhost:8080")\nos.environ["DIAL_URL"] = dial_url\n\napp_name = os.environ.get("APP_NAME", "echo")\nos.environ["APP_NAME"] = app_name\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-curl",children:"Using Curl"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The DIAL deployment is called ",(0,t.jsx)(n.code,{children:"app_name"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["The local DIAL Core server URL is ",(0,t.jsx)(n.code,{children:"dial_url"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["The OpenAI API version we are going to use is ",(0,t.jsx)(n.code,{children:"2023-12-01-preview"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Therefore, the application is accessible via the following URL:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"${DIAL_URL}/openai/deployments/${APP_NAME}/chat/completions?api-version=2023-12-01-preview\n"})}),"\n",(0,t.jsx)(n.p,{children:"The curl command that requests completion for a single message chat is:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'!curl -X POST "${DIAL_URL}/openai/deployments/${APP_NAME}/chat/completions?api-version=2023-12-01-preview" \\\n -H "Api-Key:dial_api_key" \\\n -H "Content-Type:application/json" \\\n -d \'{"messages": [{"role": "user", "content": "Hello world!"}]}\'\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:'{"choices":[{"index":0,"finish_reason":"stop","message":{"role":"assistant","content":"Hello world!"}}],"usage":null,"id":"37ffdc98-da4d-48e8-8dec-2d0ec0fd94b1","created":1707310417,"object":"chat.completion"}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-python-library-requests",children:"Using Python library Requests"}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s make an HTTP request using the Python library ",(0,t.jsx)(n.code,{children:"requests"})," and make\nsure the output message matches the message in the request."]}),"\n",(0,t.jsx)(n.p,{children:"The arguments are identical to the curl command above."}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode first:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'response = requests.post(\n f"{dial_url}/openai/deployments/{app_name}/chat/completions?api-version=2023-12-01-preview",\n headers={"Api-Key": "dial_api_key"},\n json={"messages": [{"role": "user", "content": "Hello world!"}]},\n)\nbody = response.json()\ndisplay(body)\ncompletion = body["choices"][0]["message"]["content"]\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"{'choices': [{'index': 0,\n 'finish_reason': 'stop',\n 'message': {'role': 'assistant', 'content': 'Hello world!'}}],\n 'usage': None,\n 'id': 'dd3647aa-2496-461c-adc4-746e323ee13f',\n 'created': 1707310430,\n 'object': 'chat.completion'}\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"Completion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["When ",(0,t.jsx)(n.strong,{children:"streaming is enabled"}),", the chat completion returns a sequence of\nmessages, each containing a chunk of a generated response:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'response = requests.post(\n f"{dial_url}/openai/deployments/{app_name}/chat/completions?api-version=2023-12-01-preview",\n headers={"Api-Key": "dial_api_key"},\n json={"messages": [{"role": "user", "content": "Hello world!"}], "stream": True},\n)\nfor chunk in response.iter_lines():\n print(chunk)\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:'b\'data: {"choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: {"choices":[{"index":0,"finish_reason":null,"delta":{"content":"Hello world!"}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: {"choices":[{"index":0,"finish_reason":"stop","delta":{}}],"usage":null,"id":"3c231303-2c25-48a0-bf5e-4e46243ba2eb","created":1707310448,"object":"chat.completion.chunk"}\'\nb\'\'\nb\'data: [DONE]\'\nb\'\'\n'})}),"\n",(0,t.jsx)(n.h2,{id:"using-openai-python-sdk",children:"Using OpenAI Python SDK"}),"\n",(0,t.jsxs)(n.p,{children:["The DIAL deployment could be called using ",(0,t.jsx)(n.a,{href:"https://pypi.org/project/openai/",children:"OpenAI Python\nSDK"})," as well."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'openai_client = openai.AzureOpenAI(\n azure_endpoint=dial_url,\n azure_deployment=app_name,\n api_key="dial_api_key",\n api_version="2023-12-01-preview",\n)\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'\nchat_completion = openai_client.chat.completions.create(\n messages=[\n {\n "role": "user",\n "content": "Hello world!",\n }\n ],\n model=app_name,\n)\nprint(chat_completion)\ncompletion = chat_completion.choices[0].message.content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"ChatCompletion(id='1d020e70-9de6-402a-a2e0-cb45e340aafa', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Hello world!', role='assistant', function_call=None, tool_calls=None))], created=1707310540, model=None, object='chat.completion', system_fingerprint=None, usage=None)\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'chat_completion = openai_client.chat.completions.create(\n messages=[\n {\n "role": "user",\n "content": "Hello world!",\n }\n ],\n stream=True,\n model=app_name,\n)\ncompletion = ""\nfor chunk in chat_completion:\n print(chunk)\n content = chunk.choices[0].delta.content\n if content:\n completion += content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"ChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content='Hello world!', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nChatCompletionChunk(id='3a99fb21-d47c-411d-a2c2-6f51ea9d12f6', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None), finish_reason='stop', index=0, logprobs=None)], created=1707310529, model=None, object='chat.completion.chunk', system_fingerprint=None, usage=None)\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsx)(n.h2,{id:"using-langchain",children:"Using LangChain"}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application via the\n",(0,t.jsx)(n.a,{href:"https://pypi.org/project/langchain-openai/",children:"LangChain"})," library."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'from langchain_core.messages import HumanMessage\n\nllm = langchain_openai.AzureChatOpenAI(\n azure_endpoint=dial_url,\n azure_deployment=app_name,\n api_key="dial_api_key",\n api_version="2023-12-01-preview",\n)\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"non-streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'output = llm.generate(messages=[[HumanMessage(content="Hello world!")]])\nprint(output)\ncompletion = output.generations[0][0].text\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"generations=[[ChatGeneration(text='Hello world!', generation_info={'finish_reason': 'stop', 'logprobs': None}, message=AIMessage(content='Hello world!'))]] llm_output={'token_usage': {}, 'model_name': 'gpt-3.5-turbo'} run=[RunInfo(run_id=UUID('ca6e6bbf-84cb-489a-abcf-9c6ed922713d'))]\nCompletion: 'Hello world!'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Let\u2019s call the application in the ",(0,t.jsx)(n.strong,{children:"streaming"})," mode:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'output = llm.stream(input=[HumanMessage(content="Hello world!")])\ncompletion = ""\nfor chunk in output:\n print(chunk.dict())\n completion += chunk.content\nprint(f"Completion: {completion!r}")\nassert completion == "Hello world!", "Unexpected completion"\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\n{'content': 'Hello world!', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\n{'content': '', 'additional_kwargs': {}, 'type': 'AIMessageChunk', 'example': False}\nCompletion: 'Hello world!'\n"})})]})}function d(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>i,a:()=>s});var t=o(7294);const l={},a=t.createContext(l);function s(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.5675b5b7.js b/assets/js/935f2afb.903ac1d7.js similarity index 62% rename from assets/js/935f2afb.5675b5b7.js rename to assets/js/935f2afb.903ac1d7.js index 4162f1af..68034e27 100644 --- a/assets/js/935f2afb.5675b5b7.js +++ b/assets/js/935f2afb.903ac1d7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"CustomSideBar":[{"type":"link","label":"Home","href":"/","docId":"README","unlisted":false},{"type":"link","label":"Quick Start","href":"/quick-start","docId":"quick-start","unlisted":false},{"type":"link","label":"Architecture","href":"/architecture","docId":"architecture","unlisted":false},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Chat with Application","href":"/tutorials/quick-start-with-application","docId":"tutorials/quick-start-with-application","unlisted":false},{"type":"link","label":"Chat with OpenAI Model","href":"/tutorials/quick-start-model","docId":"tutorials/quick-start-model","unlisted":false},{"type":"link","label":"Chat with Addon","href":"/tutorials/quick-start-with-addon","docId":"tutorials/quick-start-with-addon","unlisted":false},{"type":"link","label":"Roles Management","href":"/tutorials/roles-management","docId":"tutorials/roles-management","unlisted":false},{"type":"link","label":"Azure AD Configuration","href":"/tutorials/azure-ad-configuration","docId":"tutorials/azure-ad-configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Chat User Guide","href":"/user-guide","docId":"user-guide","unlisted":false},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Helm Deployment","href":"https://github.com/epam/ai-dial-helm/tree/main/charts/dial/examples/generic/simple"},{"type":"link","label":"Configuration","href":"/Deployment/configuration","docId":"Deployment/configuration","unlisted":false},{"type":"link","label":"OpenAI Model Deployment","href":"/Deployment/OpenAI Model Deployment","docId":"Deployment/OpenAI Model Deployment","unlisted":false},{"type":"link","label":"Vertex Model Deployment","href":"/Deployment/Vertex Model Deployment","docId":"Deployment/Vertex Model Deployment","unlisted":false},{"type":"link","label":"Bedrock Model Deployment","href":"/Deployment/Bedrock Model Deployment","docId":"Deployment/Bedrock Model Deployment","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Cookbook","items":[{"type":"link","label":"How to call text-to-text DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","unlisted":false},{"type":"link","label":"How to call text-to-image DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","unlisted":false},{"type":"link","label":"How to call image-to-text DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"architecture":{"id":"architecture","title":"Architecture","description":"Our Vision","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","title":"How to call image-to-text DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","title":"How to call text-to-image DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","title":"How to call text-to-text DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Deployment/Bedrock Model Deployment":{"id":"Deployment/Bedrock Model Deployment","title":"Bedrock Model Deployment","description":"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config.","sidebar":"CustomSideBar"},"Deployment/configuration":{"id":"Deployment/configuration","title":"configuration","description":"Important: it is assumed that you have a working knowledge of standard Helm chart parameters in order to define them within the configuration file.","sidebar":"CustomSideBar"},"Deployment/idp-configuration/cognito":{"id":"Deployment/idp-configuration/cognito","title":"cognito","description":"Introduction"},"Deployment/OpenAI Model Deployment":{"id":"Deployment/OpenAI Model Deployment","title":"OpenAI Model Deployment","description":"From this instruction, you will learn how to create an Azure OpenAI model GPT-3.5-turbo/GPT-4 and use it in AI DIAL config.","sidebar":"CustomSideBar"},"Deployment/Vertex Model Deployment":{"id":"Deployment/Vertex Model Deployment","title":"Vertex Model Deployment","description":"In this instruction, you will learn how to create VertexAI model in Google Cloud Platform and use it in AI DIAL config.","sidebar":"CustomSideBar"},"quick-start":{"id":"quick-start","title":"Quick Start","description":"Follow this tutorial to launch AI DIAL Chat with Echo application. As a result, you will be able to access Chat on http3000/ and use Echo application to mirror your prompts.","sidebar":"CustomSideBar"},"README":{"id":"README","title":"AI DIAL Documentation","description":"Project Overview and Contribution Guide","sidebar":"CustomSideBar"},"tutorials/azure-ad-configuration":{"id":"tutorials/azure-ad-configuration","title":"How to Enable Authentication with Azure AD","description":"To enable authentication with Azure AD, you can use Chat environment variables.","sidebar":"CustomSideBar"},"tutorials/quick-start-model":{"id":"tutorials/quick-start-model","title":"Launch AI DIAL Chat with Azure Model","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/quick-start-with-addon":{"id":"tutorials/quick-start-with-addon","title":"Launch AI DIAL Chat with a Sample Addon","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/quick-start-with-application":{"id":"tutorials/quick-start-with-application","title":"Launch AI DIAL Chat with a Sample Application","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/roles-management":{"id":"tutorials/roles-management","title":"Roles Management Guide","description":"AI DIAL enables assignment of roles to Models, Applications, Addons, and Assistants to restrict the number of tokens that can be transmitted in a specific time frame. These roles and their limitations can be created in external systems and then assigned in AI DIAL\'s configuration.","sidebar":"CustomSideBar"},"user-guide":{"id":"user-guide","title":"Chat User Guide","description":"Interface Components","sidebar":"CustomSideBar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"CustomSideBar":[{"type":"link","label":"Home","href":"/","docId":"README","unlisted":false},{"type":"link","label":"Quick Start","href":"/quick-start","docId":"quick-start","unlisted":false},{"type":"link","label":"Architecture","href":"/architecture","docId":"architecture","unlisted":false},{"type":"category","label":"Tutorials","items":[{"type":"link","label":"Chat with Application","href":"/tutorials/quick-start-with-application","docId":"tutorials/quick-start-with-application","unlisted":false},{"type":"link","label":"Chat with OpenAI Model","href":"/tutorials/quick-start-model","docId":"tutorials/quick-start-model","unlisted":false},{"type":"link","label":"Chat with Addon","href":"/tutorials/quick-start-with-addon","docId":"tutorials/quick-start-with-addon","unlisted":false},{"type":"link","label":"Roles Management","href":"/tutorials/roles-management","docId":"tutorials/roles-management","unlisted":false},{"type":"link","label":"Azure AD Configuration","href":"/tutorials/azure-ad-configuration","docId":"tutorials/azure-ad-configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Chat User Guide","href":"/user-guide","docId":"user-guide","unlisted":false},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Helm Deployment","href":"https://github.com/epam/ai-dial-helm/tree/main/charts/dial/examples/generic/simple"},{"type":"link","label":"Configuration","href":"/Deployment/configuration","docId":"Deployment/configuration","unlisted":false},{"type":"link","label":"OpenAI Model Deployment","href":"/Deployment/OpenAI Model Deployment","docId":"Deployment/OpenAI Model Deployment","unlisted":false},{"type":"link","label":"Vertex Model Deployment","href":"/Deployment/Vertex Model Deployment","docId":"Deployment/Vertex Model Deployment","unlisted":false},{"type":"link","label":"Bedrock Model Deployment","href":"/Deployment/Bedrock Model Deployment","docId":"Deployment/Bedrock Model Deployment","unlisted":false},{"type":"link","label":"How to Configure AWS Cognito","href":"/Deployment/idp-configuration/cognito","docId":"Deployment/idp-configuration/cognito","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Cookbook","items":[{"type":"link","label":"How to call text-to-text DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","unlisted":false},{"type":"link","label":"How to call text-to-image DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","unlisted":false},{"type":"link","label":"How to call image-to-text DIAL applications","href":"/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","docId":"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"architecture":{"id":"architecture","title":"Architecture","description":"Our Vision","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","title":"How to call image-to-text DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","title":"How to call text-to-image DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications":{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","title":"How to call text-to-text DIAL applications","description":"From [this","sidebar":"CustomSideBar"},"Deployment/Bedrock Model Deployment":{"id":"Deployment/Bedrock Model Deployment","title":"Bedrock Model Deployment","description":"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config.","sidebar":"CustomSideBar"},"Deployment/configuration":{"id":"Deployment/configuration","title":"configuration","description":"Important: it is assumed that you have a working knowledge of standard Helm chart parameters in order to define them within the configuration file.","sidebar":"CustomSideBar"},"Deployment/idp-configuration/cognito":{"id":"Deployment/idp-configuration/cognito","title":"cognito","description":"Introduction","sidebar":"CustomSideBar"},"Deployment/OpenAI Model Deployment":{"id":"Deployment/OpenAI Model Deployment","title":"OpenAI Model Deployment","description":"From this instruction, you will learn how to create an Azure OpenAI model GPT-3.5-turbo/GPT-4 and use it in AI DIAL config.","sidebar":"CustomSideBar"},"Deployment/Vertex Model Deployment":{"id":"Deployment/Vertex Model Deployment","title":"Vertex Model Deployment","description":"In this instruction, you will learn how to create VertexAI model in Google Cloud Platform and use it in AI DIAL config.","sidebar":"CustomSideBar"},"quick-start":{"id":"quick-start","title":"Quick Start","description":"Follow this tutorial to launch AI DIAL Chat with Echo application. As a result, you will be able to access Chat on http3000/ and use Echo application to mirror your prompts.","sidebar":"CustomSideBar"},"README":{"id":"README","title":"AI DIAL Documentation","description":"Project Overview and Contribution Guide","sidebar":"CustomSideBar"},"tutorials/azure-ad-configuration":{"id":"tutorials/azure-ad-configuration","title":"How to Enable Authentication with Azure AD","description":"To enable authentication with Azure AD, you can use Chat environment variables.","sidebar":"CustomSideBar"},"tutorials/quick-start-model":{"id":"tutorials/quick-start-model","title":"Launch AI DIAL Chat with Azure Model","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/quick-start-with-addon":{"id":"tutorials/quick-start-with-addon","title":"Launch AI DIAL Chat with a Sample Addon","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/quick-start-with-application":{"id":"tutorials/quick-start-with-application","title":"Launch AI DIAL Chat with a Sample Application","description":"Introduction","sidebar":"CustomSideBar"},"tutorials/roles-management":{"id":"tutorials/roles-management","title":"Roles Management Guide","description":"AI DIAL enables assignment of roles to Models, Applications, Addons, and Assistants to restrict the number of tokens that can be transmitted in a specific time frame. These roles and their limitations can be created in external systems and then assigned in AI DIAL\'s configuration.","sidebar":"CustomSideBar"},"user-guide":{"id":"user-guide","title":"Chat User Guide","description":"Interface Components","sidebar":"CustomSideBar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/a097b135.7eaf00ae.js b/assets/js/a097b135.7eaf00ae.js deleted file mode 100644 index d97f4d10..00000000 --- a/assets/js/a097b135.7eaf00ae.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[343],{7314:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>a});var o=i(5893),t=i(1151);const s={},r="How to Set AWS Cognito as Identity Provider",l={id:"Deployment/idp-configuration/cognito",title:"cognito",description:"Introduction",source:"@site/docs/Deployment/idp-configuration/cognito.md",sourceDirName:"Deployment/idp-configuration",slug:"/Deployment/idp-configuration/cognito",permalink:"/Deployment/idp-configuration/cognito",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},c={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Configuration Guidelines",id:"configuration-guidelines",level:2},{value:"Configure AWS Cognito",id:"configure-aws-cognito",level:3},{value:"Configure AI DIAL",id:"configure-ai-dial",level:3},{value:"AI DIAL Chat Settings",id:"ai-dial-chat-settings",level:4},{value:"AI DIAL Core Settings",id:"ai-dial-core-settings",level:4}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"how-to-set-aws-cognito-as-identity-provider",children:"How to Set AWS Cognito as Identity Provider"}),"\n",(0,o.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,o.jsxs)(n.p,{children:["This basic tutorial demonstrates the steps to create a user pool in ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html",children:"AWS Cognito"})," and use it as an identity and access management solution for AI DIAL users."]}),"\n",(0,o.jsxs)("div",{class:"docusaurus-ignore",children:[(0,o.jsx)(n.h1,{id:"table-of-contents",children:"Table of Contents"}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#introduction",children:"Introduction"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#configuration-guidelines",children:"Configuration Guidelines"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#configure-aws-cognito",children:"Configure AWS Cognito"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#configure-ai-dial",children:"Configure AI DIAL"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#ai-dial-chat-settings",children:"AI DIAL Chat Settings"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#ai-dial-core-settings",children:"AI DIAL Core Settings"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),"\n",(0,o.jsx)(n.h2,{id:"configuration-guidelines",children:"Configuration Guidelines"}),"\n",(0,o.jsx)(n.h3,{id:"configure-aws-cognito",children:"Configure AWS Cognito"}),"\n",(0,o.jsx)(n.p,{children:"To configure AWS Cognito, you can follow these steps:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Begin by creating a user pool. You can refer to the official AWS documentation for detailed instructions on how to create a user pool. Here is the link: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html",children:"Create User Pool"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the user pool is set up, you can proceed to create users within the pool. The AWS documentation provides guidance on how to sign up users in your application. You can find the instructions here: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html",children:"Create User"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Next, you will need to create an app client specifically for this user pool. This app client will be responsible for integrating your application with the user pool. The AWS documentation offers detailed instructions on configuring app integration with user pools. You can access the instructions here: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html",children:"Create App Client for User Pool"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Under the ",(0,o.jsx)(n.strong,{children:"App client settings"})," section, set the following parameters:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Callback URL(s): Enter the callback function URL as follows"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"https:///api/auth/callback/cognito\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Replace ",(0,o.jsx)(n.code,{children:""})," with the actual address of your AI DIAL Chat application."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:'OAuth 2.0 Allowed OAuth Flows: Select "Authorization code grant".'}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"OAuth 2.0 Allowed OAuth Scopes: Enable the following scopes:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"email"}),"\n",(0,o.jsx)(n.li,{children:"openid"}),"\n",(0,o.jsx)(n.li,{children:"profile"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:'Enabled Identity Providers: Select "Cognito user pool".'}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"configure-ai-dial",children:"Configure AI DIAL"}),"\n",(0,o.jsx)(n.p,{children:"By configuring both AI DIAL Chat and AI DIAL Core with the necessary AWS Cognito environment variables, you will enable them to work together seamlessly with AWS Cognito for authentication and authorization purposes.\nTo configure AI DIAL Chat and AI DIAL Core to work with AWS Cognito, follow these steps:"}),"\n",(0,o.jsx)(n.h4,{id:"ai-dial-chat-settings",children:"AI DIAL Chat Settings"}),"\n",(0,o.jsxs)(n.p,{children:["Add the following environment variables to AI DIAL Chat configuration. Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-chat/blob/development/apps/chat/README.md#environment-variables",children:"AI DIAL Chat"})," to learn more."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'AUTH_COGNITO_CLIENT_ID: "" # client ID of your AWS Cognito app client integration.\nAUTH_COGNITO_HOST: "" # URL consisting of the Cognito Identity endpoint and User Pool ID.\nAUTH_COGNITO_NAME: "" # name of your AWS Cognito app client integration\nAUTH_COGNITO_SECRET: "" # client secret of your AWS Cognito app client integration\n'})}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"cognito_host"})," example: ",(0,o.jsx)(n.code,{children:"https://cognito-idp..amazonaws.com/"})]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"ai-dial-core-settings",children:"AI DIAL Core Settings"}),"\n",(0,o.jsxs)(n.p,{children:["Add the following parameters to AI DIAL Core. Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-core?tab=readme-ov-file#configuration",children:"AI DIAL Core"})," configuration to learn more."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'aidial.identityProviders.cognito.jwksUrl: "" # URL to jwks token\naidial.identityProviders.cognito.rolePath: "roles"\naidial.identityProviders.cognito.issuerPattern: \'^https:\\/\\/cognito-idp\\.\\.amazonaws\\.com.+$\'\naidial.identityProviders.cognito.loggingKey: "email"\naidial.identityProviders.cognito.loggingSalt: "loggingSalt"\n'})}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"token_url"})," example: ",(0,o.jsx)(n.code,{children:"https://cognito-idp..amazonaws.com//.well-known/jwks.json"})]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>r});var o=i(7294);const t={},s=o.createContext(t);function r(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a097b135.97037a05.js b/assets/js/a097b135.97037a05.js new file mode 100644 index 00000000..08ccc616 --- /dev/null +++ b/assets/js/a097b135.97037a05.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[343],{7314:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>a});var o=i(5893),t=i(1151);const s={},r="How to Set AWS Cognito as Identity Provider",l={id:"Deployment/idp-configuration/cognito",title:"cognito",description:"Introduction",source:"@site/docs/Deployment/idp-configuration/cognito.md",sourceDirName:"Deployment/idp-configuration",slug:"/Deployment/idp-configuration/cognito",permalink:"/Deployment/idp-configuration/cognito",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"CustomSideBar",previous:{title:"Bedrock Model Deployment",permalink:"/Deployment/Bedrock Model Deployment"},next:{title:"How to call text-to-text DIAL applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications"}},c={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Configuration Guidelines",id:"configuration-guidelines",level:2},{value:"Configure AWS Cognito",id:"configure-aws-cognito",level:3},{value:"Configure AI DIAL",id:"configure-ai-dial",level:3},{value:"AI DIAL Chat Settings",id:"ai-dial-chat-settings",level:4},{value:"AI DIAL Core Settings",id:"ai-dial-core-settings",level:4}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"how-to-set-aws-cognito-as-identity-provider",children:"How to Set AWS Cognito as Identity Provider"}),"\n",(0,o.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,o.jsxs)(n.p,{children:["This basic tutorial demonstrates the steps to create a user pool in ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html",children:"AWS Cognito"})," and use it as an identity and access management solution for AI DIAL users."]}),"\n",(0,o.jsxs)("div",{class:"docusaurus-ignore",children:[(0,o.jsx)(n.h1,{id:"table-of-contents",children:"Table of Contents"}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#introduction",children:"Introduction"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#configuration-guidelines",children:"Configuration Guidelines"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#configure-aws-cognito",children:"Configure AWS Cognito"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#configure-ai-dial",children:"Configure AI DIAL"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#ai-dial-chat-settings",children:"AI DIAL Chat Settings"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#ai-dial-core-settings",children:"AI DIAL Core Settings"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),"\n",(0,o.jsx)(n.h2,{id:"configuration-guidelines",children:"Configuration Guidelines"}),"\n",(0,o.jsx)(n.h3,{id:"configure-aws-cognito",children:"Configure AWS Cognito"}),"\n",(0,o.jsx)(n.p,{children:"To configure AWS Cognito, you can follow these steps:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Begin by creating a user pool. You can refer to the official AWS documentation for detailed instructions on how to create a user pool. Here is the link: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html",children:"Create User Pool"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the user pool is set up, you can proceed to create users within the pool. The AWS documentation provides guidance on how to sign up users in your application. You can find the instructions here: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html",children:"Create User"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Next, you will need to create an app client specifically for this user pool. This app client will be responsible for integrating your application with the user pool. The AWS documentation offers detailed instructions on configuring app integration with user pools. You can access the instructions here: ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html",children:"Create App Client for User Pool"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Under the ",(0,o.jsx)(n.strong,{children:"App client settings"})," section, set the following parameters:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Callback URL(s): Enter the callback function URL as follows"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"https:///api/auth/callback/cognito\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Replace ",(0,o.jsx)(n.code,{children:""})," with the actual address of your AI DIAL Chat application."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:'OAuth 2.0 Allowed OAuth Flows: Select "Authorization code grant".'}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"OAuth 2.0 Allowed OAuth Scopes: Enable the following scopes:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"email"}),"\n",(0,o.jsx)(n.li,{children:"openid"}),"\n",(0,o.jsx)(n.li,{children:"profile"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:'Enabled Identity Providers: Select "Cognito user pool".'}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"configure-ai-dial",children:"Configure AI DIAL"}),"\n",(0,o.jsx)(n.p,{children:"By configuring both AI DIAL Chat and AI DIAL Core with the necessary AWS Cognito environment variables, you will enable them to work together seamlessly with AWS Cognito for authentication and authorization purposes.\nTo configure AI DIAL Chat and AI DIAL Core to work with AWS Cognito, follow these steps:"}),"\n",(0,o.jsx)(n.h4,{id:"ai-dial-chat-settings",children:"AI DIAL Chat Settings"}),"\n",(0,o.jsxs)(n.p,{children:["Add the following environment variables to AI DIAL Chat configuration. Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-chat/blob/development/apps/chat/README.md#environment-variables",children:"AI DIAL Chat"})," to learn more."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'AUTH_COGNITO_CLIENT_ID: "" # client ID of your AWS Cognito app client integration.\nAUTH_COGNITO_HOST: "" # URL consisting of the Cognito Identity endpoint and User Pool ID.\nAUTH_COGNITO_NAME: "" # name of your AWS Cognito app client integration\nAUTH_COGNITO_SECRET: "" # client secret of your AWS Cognito app client integration\n'})}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"cognito_host"})," example: ",(0,o.jsx)(n.code,{children:"https://cognito-idp..amazonaws.com/"})]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"ai-dial-core-settings",children:"AI DIAL Core Settings"}),"\n",(0,o.jsxs)(n.p,{children:["Add the following parameters to AI DIAL Core. Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-core?tab=readme-ov-file#configuration",children:"AI DIAL Core"})," configuration to learn more."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'aidial.identityProviders.cognito.jwksUrl: "" # URL to jwks token\naidial.identityProviders.cognito.rolePath: "roles"\naidial.identityProviders.cognito.issuerPattern: \'^https:\\/\\/cognito-idp\\.\\.amazonaws\\.com.+$\'\naidial.identityProviders.cognito.loggingKey: "email"\naidial.identityProviders.cognito.loggingSalt: "loggingSalt"\n'})}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"token_url"})," example: ",(0,o.jsx)(n.code,{children:"https://cognito-idp..amazonaws.com//.well-known/jwks.json"})]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>r});var o=i(7294);const t={},s=o.createContext(t);function r(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b232fa30.31246546.js b/assets/js/b232fa30.31246546.js new file mode 100644 index 00000000..2ebd6357 --- /dev/null +++ b/assets/js/b232fa30.31246546.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[833],{971:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=s(5893),o=s(1151);const r={},t="Bedrock Model Deployment",c={id:"Deployment/Bedrock Model Deployment",title:"Bedrock Model Deployment",description:"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config.",source:"@site/docs/Deployment/Bedrock Model Deployment.md",sourceDirName:"Deployment",slug:"/Deployment/Bedrock Model Deployment",permalink:"/Deployment/Bedrock Model Deployment",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"CustomSideBar",previous:{title:"Vertex Model Deployment",permalink:"/Deployment/Vertex Model Deployment"},next:{title:"cognito",permalink:"/Deployment/idp-configuration/cognito"}},a={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Step 1: Configuring the AI Model",id:"step-1-configuring-the-ai-model",level:2},{value:"Request Access to Models",id:"request-access-to-models",level:3},{value:"Step 2: Get Access to AI Model",id:"step-2-get-access-to-ai-model",level:2},{value:"Create IAM Policy",id:"create-iam-policy",level:3},{value:"Assign IAM Policy",id:"assign-iam-policy",level:3},{value:"Assign to User",id:"assign-to-user",level:4},{value:"Assign to Service Account",id:"assign-to-service-account",level:4},{value:"Step 3: Add Model to AI DIAL",id:"step-3-add-model-to-ai-dial",level:2},{value:"Add Model to AI DIAL Core Config",id:"add-model-to-ai-dial-core-config",level:3},{value:"Configure AI DIAL Adapter",id:"configure-ai-dial-adapter",level:3},{value:"Use IAM User",id:"use-iam-user",level:4},{value:"Use AWS Service Account",id:"use-aws-service-account",level:4}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"bedrock-model-deployment",children:"Bedrock Model Deployment"}),"\n",(0,i.jsx)(n.p,{children:"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html",children:"AWS Documentation"})," to learn about this model."]}),"\n"]}),"\n",(0,i.jsxs)("div",{class:"docusaurus-ignore",children:[(0,i.jsx)(n.h1,{id:"table-of-contents",children:"Table of Contents"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#prerequisites",children:"Prerequisites"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#step-1-configuring-the-ai-model",children:"Step 1: Configuring the AI Model"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#request-access-to-models",children:"Request Access to Models"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#step-2-get-access-to-ai-model",children:"Step 2: Get Access to AI Model"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#create-iam-policy",children:"Create IAM Policy"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#assign-iam-policy",children:"Assign IAM Policy"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#assign-to-user",children:"Assign to User"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#assign-to-service-account",children:"Assign to Service Account"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#step-3-add-model-to-ai-dial",children:"Step 3: Add Model to AI DIAL"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#add-model-to-ai-dial-core-config",children:"Add Model to AI DIAL Core Config"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#configure-ai-dial-adapter",children:"Configure AI DIAL Adapter"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#use-iam-user",children:"Use IAM User"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#use-aws-service-account",children:"Use AWS Service Account"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),"\n",(0,i.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Active AWS account"}),"\n",(0,i.jsx)(n.li,{children:"Admin role at the account"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"step-1-configuring-the-ai-model",children:"Step 1: Configuring the AI Model"}),"\n",(0,i.jsx)(n.h3,{id:"request-access-to-models",children:"Request Access to Models"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["In your AWS account, navigate to ",(0,i.jsx)(n.strong,{children:"Services/Amazon Bedrock"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["In Amazon Bedrock, navigate to ",(0,i.jsx)(n.strong,{children:"Model access"})," and click the ",(0,i.jsx)(n.strong,{children:"Manage model access"})," button."]}),"\n",(0,i.jsxs)(n.li,{children:["In Base models, select models and click ",(0,i.jsx)(n.strong,{children:"Save changes"})," to request access to them. ",(0,i.jsx)(n.strong,{children:"Note"}),", it may take a few moment for an access to be granted. You may need to refresh the page to view the updated status."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(4914).Z+"",width:"1869",height:"507"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["To use Bedrock, it is necessary to seek permission to access Bedrock's foundation models. To accomplish this, ensuring the correct IAM Policies is crucial. You can find instructions on how to create IAM Policies in the ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html",children:"AWS Documentation"}),". Additionally, for specific models, you may be required to provide details about your use case before being able to request access. For more information, please refer to the ",(0,i.jsx)(n.a,{href:"https://eu-central-1.console.aws.amazon.com/bedrock/home#/providers",children:"Providers"})," section on the Bedrock homepage."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"step-2-get-access-to-ai-model",children:"Step 2: Get Access to AI Model"}),"\n",(0,i.jsx)(n.h3,{id:"create-iam-policy",children:"Create IAM Policy"}),"\n",(0,i.jsx)(n.p,{children:"IAM (Identity and Access Management) policies in AWS (Amazon Web Services) are a set of rules that define permissions for users, groups, and roles within an AWS account."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html",children:"AWS Documentation"})," to learn how to create a policy."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["You can create your own IAM policy or use AWS-managed IAM policy ",(0,i.jsx)(n.strong,{children:"AmazonBedrockFullAccess"}),", which grants full access to the Bedrock service."]}),"\n",(0,i.jsx)(n.p,{children:"When using a custom policy, we recommend assigning permissions below to limit the scope of allowed interactions with models:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["bedrock",":GetFoundationModel"]}),"\n",(0,i.jsxs)(n.li,{children:["bedrock",":ListFoundationModels"]}),"\n",(0,i.jsxs)(n.li,{children:["bedrock",":InvokeModel"]}),"\n",(0,i.jsxs)(n.li,{children:["bedrock",":InvokeModelWithResponseStream"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"assign-iam-policy",children:"Assign IAM Policy"}),"\n",(0,i.jsxs)(n.p,{children:["You can assign an IAM Policy to a specific ",(0,i.jsx)(n.a,{href:"#assign-to-user",children:"user"}),", role or to the entire ",(0,i.jsx)(n.a,{href:"#assign-to-service-account",children:"AWS Service Account"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"assign-to-user",children:"Assign to User"}),"\n",(0,i.jsx)(n.p,{children:"IAM (Identity and Access Management) users in AWS (Amazon Web Services) are entities that represent individual people or applications that interact with AWS services and resources. IAM users have their own unique set of security credentials, which include an access key and secret access key."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html",children:"AWS Documentation"})," to learn how to create users."]}),"\n"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"In your AWS account, navigate to IAM section."}),"\n",(0,i.jsxs)(n.li,{children:["In the navigation tree, select ",(0,i.jsx)(n.strong,{children:"Users"})," and click ",(0,i.jsx)(n.strong,{children:"Create user"})," in the Users panel."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:s(3755).Z+"",width:"1818",height:"340"})}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsx)(n.li,{children:"On the Step 2 (Set Permissions), you can attach a Policy to the user."}),"\n",(0,i.jsxs)(n.li,{children:["When the user is created, click your new user and navigate to the ",(0,i.jsx)(n.strong,{children:"Security credentials"})," tab where you can click ",(0,i.jsx)(n.strong,{children:"Create access key"})," to create a key pair for your user."]}),"\n",(0,i.jsxs)(n.li,{children:["For a new key pair, click ",(0,i.jsx)(n.strong,{children:"Show"})," to view and download a CSV file. ",(0,i.jsx)(n.strong,{children:"Note"}),", that once shown, the key pair will no longer be available for preview. Make sure you save a CSV file for future use."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"assign-to-service-account",children:"Assign to Service Account"}),"\n",(0,i.jsx)(n.p,{children:"In case your cluster is located at AWS, the best practise for using Bedrock is to assign an IAM Policy to your Service Account. You can do this via IAM Roles."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html",children:"AWS Documentation"})," to learn how to configure an IAM roles for service accounts."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"step-3-add-model-to-ai-dial",children:"Step 3: Add Model to AI DIAL"}),"\n",(0,i.jsx)(n.p,{children:"To deploy a model to AI DIAL, it is necessary to add it to config and configure an adapter for it."}),"\n",(0,i.jsx)(n.h3,{id:"add-model-to-ai-dial-core-config",children:"Add Model to AI DIAL Core Config"}),"\n",(0,i.jsxs)(n.p,{children:["Add your model with its parameters in the ",(0,i.jsx)(n.code,{children:"models"})," section."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json#L30",children:"AI DIAL Core Configuration"})," to view an example."]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"/Deployment/configuration#core-parameters",children:"Configure core config"})," to view the configuration of AI DIAL core parameters in the helm-based installation."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"configure-ai-dial-adapter",children:"Configure AI DIAL Adapter"}),"\n",(0,i.jsxs)(n.p,{children:["To work with models, we use applications called Adapters. You can configure Bedrock Adapter via ",(0,i.jsx)(n.a,{href:"https://github.com/epam/ai-dial-adapter-bedrock#environment-variables",children:"environment variables"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Refer to ",(0,i.jsx)(n.a,{href:"https://github.com/epam/ai-dial-adapter-bedrock",children:"Adapter for Bedrock"})," to view documentation for a Bedrock AI DIAL Adapter."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"use-iam-user",children:"Use IAM User"}),"\n",(0,i.jsx)(n.p,{children:"In this scenario, provide the access key of your user via environment variables:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'### examples of basic configurations of adapters ###\n\n### ai-dial-adapter-bedrock configuration for IAM user###\nbedrock:\n # -- Enable/disable ai-dial-adapter-bedrock\n enabled: true\n\n env:\n DEFAULT_REGION: "us-east-1"\n\n secrets:\n AWS_ACCESS_KEY_ID: "AKIAIOSFODNN7EXAMPLE"\n AWS_SECRET_ACCESS_KEY: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"\n'})}),"\n",(0,i.jsx)(n.h4,{id:"use-aws-service-account",children:"Use AWS Service Account"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Before taking this step, configure ",(0,i.jsx)(n.a,{href:"#assign-to-service-account",children:"IAM roles for service accounts"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In this scenario, provide the IAM Role that you have assigned to your AWS Service Account:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'# --example of AI DIAL configuration for service account\nbedrock:\n # -- Enable/disable ai-dial-adapter-bedrock\n enabled: true\n\n env:\n DEFAULT_REGION: "us-east-1"\n \n serviceAccount:\n create: true\n annotations:\n eks.amazonaws.com/role-arn: "arn:aws:iam::000001206603:role/role_name"\n'})})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},4914:(e,n,s)=>{s.d(n,{Z:()=>i});const i=s.p+"assets/images/aws1-55f0d26e8f793a3fd378698f80ef0e1c.jpg"},3755:(e,n,s)=>{s.d(n,{Z:()=>i});const i=s.p+"assets/images/aws5-1701514d5ec13a69986b7b1247b4f476.jpg"},1151:(e,n,s)=>{s.d(n,{Z:()=>c,a:()=>t});var i=s(7294);const o={},r=i.createContext(o);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b232fa30.46840955.js b/assets/js/b232fa30.46840955.js deleted file mode 100644 index f833474e..00000000 --- a/assets/js/b232fa30.46840955.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdial=self.webpackChunkdial||[]).push([[833],{971:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var o=s(5893),i=s(1151);const t={},r="Bedrock Model Deployment",c={id:"Deployment/Bedrock Model Deployment",title:"Bedrock Model Deployment",description:"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config.",source:"@site/docs/Deployment/Bedrock Model Deployment.md",sourceDirName:"Deployment",slug:"/Deployment/Bedrock Model Deployment",permalink:"/Deployment/Bedrock Model Deployment",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"CustomSideBar",previous:{title:"Vertex Model Deployment",permalink:"/Deployment/Vertex Model Deployment"},next:{title:"How to call text-to-text DIAL applications",permalink:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications"}},a={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Step 1: Configuring the AI Model",id:"step-1-configuring-the-ai-model",level:2},{value:"Request Access to Models",id:"request-access-to-models",level:3},{value:"Step 2: Get Access to AI Model",id:"step-2-get-access-to-ai-model",level:2},{value:"Create IAM Policy",id:"create-iam-policy",level:3},{value:"Assign IAM Policy",id:"assign-iam-policy",level:3},{value:"Assign to User",id:"assign-to-user",level:4},{value:"Assign to Service Account",id:"assign-to-service-account",level:4},{value:"Step 3: Add Model to AI DIAL",id:"step-3-add-model-to-ai-dial",level:2},{value:"Add Model to AI DIAL Core Config",id:"add-model-to-ai-dial-core-config",level:3},{value:"Configure AI DIAL Adapter",id:"configure-ai-dial-adapter",level:3},{value:"Use IAM User",id:"use-iam-user",level:4},{value:"Use AWS Service Account",id:"use-aws-service-account",level:4}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"bedrock-model-deployment",children:"Bedrock Model Deployment"}),"\n",(0,o.jsx)(n.p,{children:"In this instruction, you will learn how to create Bedrock model in AWS and use it in AI DIAL config."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html",children:"AWS Documentation"})," to learn about this model."]}),"\n"]}),"\n",(0,o.jsxs)("div",{class:"docusaurus-ignore",children:[(0,o.jsx)(n.h1,{id:"table-of-contents",children:"Table of Contents"}),(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#prerequisites",children:"Prerequisites"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#step-1-configuring-the-ai-model",children:"Step 1: Configuring the AI Model"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#request-access-to-models",children:"Request Access to Models"})}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#step-2-get-access-to-ai-model",children:"Step 2: Get Access to AI Model"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#create-iam-policy",children:"Create IAM Policy"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#assign-iam-policy",children:"Assign IAM Policy"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#assign-to-user",children:"Assign to User"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#assign-to-service-account",children:"Assign to Service Account"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#step-3-add-model-to-ai-dial",children:"Step 3: Add Model to AI DIAL"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#add-model-to-ai-dial-core-config",children:"Add Model to AI DIAL Core Config"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#configure-ai-dial-adapter",children:"Configure AI DIAL Adapter"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#use-iam-user",children:"Use IAM User"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#use-aws-service-account",children:"Use AWS Service Account"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]}),"\n",(0,o.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Active AWS account"}),"\n",(0,o.jsx)(n.li,{children:"Admin role at the account"}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"step-1-configuring-the-ai-model",children:"Step 1: Configuring the AI Model"}),"\n",(0,o.jsx)(n.h3,{id:"request-access-to-models",children:"Request Access to Models"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["In your AWS account, navigate to ",(0,o.jsx)(n.strong,{children:"Services/Amazon Bedrock"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["In Amazon Bedrock, navigate to ",(0,o.jsx)(n.strong,{children:"Model access"})," and click the ",(0,o.jsx)(n.strong,{children:"Manage model access"})," button."]}),"\n",(0,o.jsxs)(n.li,{children:["In Base models, select models and click ",(0,o.jsx)(n.strong,{children:"Save changes"})," to request access to them. ",(0,o.jsx)(n.strong,{children:"Note"}),", it may take a few moment for an access to be granted. You may need to refresh the page to view the updated status."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:s(4914).Z+"",width:"1869",height:"507"})}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["To use Bedrock, it is necessary to seek permission to access Bedrock's foundation models. To accomplish this, ensuring the correct IAM Policies is crucial. You can find instructions on how to create IAM Policies in the ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html",children:"AWS Documentation"}),". Additionally, for specific models, you may be required to provide details about your use case before being able to request access. For more information, please refer to the ",(0,o.jsx)(n.a,{href:"https://eu-central-1.console.aws.amazon.com/bedrock/home#/providers",children:"Providers"})," section on the Bedrock homepage."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"step-2-get-access-to-ai-model",children:"Step 2: Get Access to AI Model"}),"\n",(0,o.jsx)(n.h3,{id:"create-iam-policy",children:"Create IAM Policy"}),"\n",(0,o.jsx)(n.p,{children:"IAM (Identity and Access Management) policies in AWS (Amazon Web Services) are a set of rules that define permissions for users, groups, and roles within an AWS account."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html",children:"AWS Documentation"})," to learn how to create a policy."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["You can create your own IAM policy or use AWS-managed IAM policy ",(0,o.jsx)(n.strong,{children:"AmazonBedrockFullAccess"}),", which grants full access to the Bedrock service."]}),"\n",(0,o.jsx)(n.p,{children:"When using a custom policy, we recommend assigning permissions below to limit the scope of allowed interactions with models:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["bedrock",":GetFoundationModel"]}),"\n",(0,o.jsxs)(n.li,{children:["bedrock",":ListFoundationModels"]}),"\n",(0,o.jsxs)(n.li,{children:["bedrock",":InvokeModel"]}),"\n",(0,o.jsxs)(n.li,{children:["bedrock",":InvokeModelWithResponseStream"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"assign-iam-policy",children:"Assign IAM Policy"}),"\n",(0,o.jsxs)(n.p,{children:["You can assign an IAM Policy to a specific ",(0,o.jsx)(n.a,{href:"#assign-to-user",children:"user"}),", role or to the entire ",(0,o.jsx)(n.a,{href:"#assign-to-service-account",children:"AWS Service Account"}),"."]}),"\n",(0,o.jsx)(n.h4,{id:"assign-to-user",children:"Assign to User"}),"\n",(0,o.jsx)(n.p,{children:"IAM (Identity and Access Management) users in AWS (Amazon Web Services) are entities that represent individual people or applications that interact with AWS services and resources. IAM users have their own unique set of security credentials, which include an access key and secret access key."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html",children:"AWS Documentation"})," to learn how to create users."]}),"\n"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"In your AWS account, navigate to IAM section."}),"\n",(0,o.jsxs)(n.li,{children:["In the navigation tree, select ",(0,o.jsx)(n.strong,{children:"Users"})," and click ",(0,o.jsx)(n.strong,{children:"Create user"})," in the Users panel."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:s(3755).Z+"",width:"1818",height:"340"})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsx)(n.li,{children:"On the Step 2 (Set Permissions), you can attach a Policy to the user."}),"\n",(0,o.jsxs)(n.li,{children:["When the user is created, click your new user and navigate to the ",(0,o.jsx)(n.strong,{children:"Security credentials"})," tab where you can click ",(0,o.jsx)(n.strong,{children:"Create access key"})," to create a key pair for your user."]}),"\n",(0,o.jsxs)(n.li,{children:["For a new key pair, click ",(0,o.jsx)(n.strong,{children:"Show"})," to view and download a CSV file. ",(0,o.jsx)(n.strong,{children:"Note"}),", that once shown, the key pair will no longer be available for preview. Make sure you save a CSV file for future use."]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"assign-to-service-account",children:"Assign to Service Account"}),"\n",(0,o.jsx)(n.p,{children:"In case your cluster is located at AWS, the best practise for using Bedrock is to assign an IAM Policy to your Service Account. You can do this via IAM Roles."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html",children:"AWS Documentation"})," to learn how to configure an IAM roles for service accounts."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"step-3-add-model-to-ai-dial",children:"Step 3: Add Model to AI DIAL"}),"\n",(0,o.jsx)(n.p,{children:"To deploy a model to AI DIAL, it is necessary to add it to config and configure an adapter for it."}),"\n",(0,o.jsx)(n.h3,{id:"add-model-to-ai-dial-core-config",children:"Add Model to AI DIAL Core Config"}),"\n",(0,o.jsxs)(n.p,{children:["Add your model with its parameters in the ",(0,o.jsx)(n.code,{children:"models"})," section."]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json#L30",children:"AI DIAL Core Configuration"})," to view an example."]}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"/Deployment/configuration#core-parameters",children:"Configure core config"})," to view the configuration of AI DIAL core parameters in the helm-based installation."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"configure-ai-dial-adapter",children:"Configure AI DIAL Adapter"}),"\n",(0,o.jsxs)(n.p,{children:["To work with models, we use applications called Adapters. You can configure Bedrock Adapter via ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-adapter-bedrock#environment-variables",children:"environment variables"}),"."]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Refer to ",(0,o.jsx)(n.a,{href:"https://github.com/epam/ai-dial-adapter-bedrock",children:"Adapter for Bedrock"})," to view documentation for a Bedrock AI DIAL Adapter."]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"use-iam-user",children:"Use IAM User"}),"\n",(0,o.jsx)(n.p,{children:"In this scenario, provide the access key of your user via environment variables:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",children:'### examples of basic configurations of adapters ###\n\n### ai-dial-adapter-bedrock configuration for IAM user###\nbedrock:\n # -- Enable/disable ai-dial-adapter-bedrock\n enabled: true\n\n env:\n DEFAULT_REGION: "us-east-1"\n\n secrets:\n AWS_ACCESS_KEY_ID: "AKIAIOSFODNN7EXAMPLE"\n AWS_SECRET_ACCESS_KEY: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"\n'})}),"\n",(0,o.jsx)(n.h4,{id:"use-aws-service-account",children:"Use AWS Service Account"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Before taking this step, configure ",(0,o.jsx)(n.a,{href:"#assign-to-service-account",children:"IAM roles for service accounts"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"In this scenario, provide the IAM Role that you have assigned to your AWS Service Account:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",children:'# --example of AI DIAL configuration for service account\nbedrock:\n # -- Enable/disable ai-dial-adapter-bedrock\n enabled: true\n\n env:\n DEFAULT_REGION: "us-east-1"\n \n serviceAccount:\n create: true\n annotations:\n eks.amazonaws.com/role-arn: "arn:aws:iam::000001206603:role/role_name"\n'})})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},4914:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/aws1-55f0d26e8f793a3fd378698f80ef0e1c.jpg"},3755:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/aws5-1701514d5ec13a69986b7b1247b4f476.jpg"},1151:(e,n,s)=>{s.d(n,{Z:()=>c,a:()=>r});var o=s(7294);const i={},t=o.createContext(i);function r(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.9726c658.js b/assets/js/main.9726c658.js new file mode 100644 index 00000000..93483c0a --- /dev/null +++ b/assets/js/main.9726c658.js @@ -0,0 +1,2 @@ +/*! For license information please see main.9726c658.js.LICENSE.txt */ +(self.webpackChunkdial=self.webpackChunkdial||[]).push([[179],{830:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var r=n(7294);function o(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"0a0492db":[()=>n.e(310).then(n.bind(n,5358)),"@site/docs/tutorials/quick-start-with-addon.md",5358],"0eef0f8a":[()=>n.e(255).then(n.t.bind(n,7085,19)),"/home/runner/work/ai-dial/ai-dial/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,7854)),"@theme/DocItem",7854],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,6675)),"@theme/SearchPage",6675],"1db65d89":[()=>n.e(659).then(n.bind(n,7925)),"@site/docs/user-guide.md",7925],"23374ca6":[()=>n.e(421).then(n.bind(n,466)),"@site/docs/README.md",466],"32f50ce0":[()=>n.e(457).then(n.bind(n,1502)),"@site/docs/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications.mdx",1502],"3cda4e15":[()=>n.e(122).then(n.bind(n,7577)),"@site/docs/Deployment/configuration.md",7577],"46ba9cd8":[()=>n.e(924).then(n.bind(n,1294)),"@site/docs/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications.mdx",1294],"5281b7a2":[()=>n.e(927).then(n.bind(n,2589)),"@site/docs/architecture.md",2589],"5e95c892":[()=>n.e(661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"6c15c11a":[()=>n.e(114).then(n.bind(n,3252)),"@site/docs/tutorials/quick-start-model.md",3252],"72e14192":[()=>n.e(239).then(n.bind(n,4363)),"@site/docs/quick-start.md",4363],"7a319521":[()=>n.e(362).then(n.bind(n,1859)),"@site/docs/tutorials/quick-start-with-application.md",1859],"7d0ffb52":[()=>n.e(668).then(n.t.bind(n,3769,19)),"/home/runner/work/ai-dial/ai-dial/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"8a489d04":[()=>n.e(154).then(n.bind(n,6589)),"@site/docs/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications.mdx",6589],"8b91756d":[()=>n.e(467).then(n.bind(n,549)),"@site/docs/tutorials/azure-ad-configuration.md",549],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],a097b135:[()=>n.e(343).then(n.bind(n,7314)),"@site/docs/Deployment/idp-configuration/cognito.md",7314],a7bd4aaa:[()=>n.e(518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],b232fa30:[()=>n.e(833).then(n.bind(n,971)),"@site/docs/Deployment/Bedrock Model Deployment.md",971],ba864879:[()=>n.e(620).then(n.bind(n,1691)),"@site/docs/tutorials/roles-management.md",1691],c8b71c12:[()=>n.e(551).then(n.bind(n,3188)),"@site/docs/Deployment/OpenAI Model Deployment.md",3188],ed886c21:[()=>n.e(941).then(n.bind(n,2551)),"@site/docs/Deployment/Vertex Model Deployment.md",2551]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,u.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(a,{...o,...n})})}})}const p=[{path:"/search",component:d("/search","fa9"),exact:!0},{path:"/",component:d("/","728"),routes:[{path:"/",component:d("/","aca"),routes:[{path:"/",component:d("/","175"),routes:[{path:"/architecture",component:d("/architecture","e17"),exact:!0,sidebar:"CustomSideBar"},{path:"/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications",component:d("/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","648"),exact:!0,sidebar:"CustomSideBar"},{path:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications",component:d("/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","418"),exact:!0,sidebar:"CustomSideBar"},{path:"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications",component:d("/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","ba8"),exact:!0,sidebar:"CustomSideBar"},{path:"/Deployment/Bedrock Model Deployment",component:d("/Deployment/Bedrock Model Deployment","98e"),exact:!0,sidebar:"CustomSideBar"},{path:"/Deployment/configuration",component:d("/Deployment/configuration","20b"),exact:!0,sidebar:"CustomSideBar"},{path:"/Deployment/idp-configuration/cognito",component:d("/Deployment/idp-configuration/cognito","02d"),exact:!0,sidebar:"CustomSideBar"},{path:"/Deployment/OpenAI Model Deployment",component:d("/Deployment/OpenAI Model Deployment","b39"),exact:!0,sidebar:"CustomSideBar"},{path:"/Deployment/Vertex Model Deployment",component:d("/Deployment/Vertex Model Deployment","d9a"),exact:!0,sidebar:"CustomSideBar"},{path:"/quick-start",component:d("/quick-start","4b6"),exact:!0,sidebar:"CustomSideBar"},{path:"/tutorials/azure-ad-configuration",component:d("/tutorials/azure-ad-configuration","da1"),exact:!0,sidebar:"CustomSideBar"},{path:"/tutorials/quick-start-model",component:d("/tutorials/quick-start-model","b4f"),exact:!0,sidebar:"CustomSideBar"},{path:"/tutorials/quick-start-with-addon",component:d("/tutorials/quick-start-with-addon","033"),exact:!0,sidebar:"CustomSideBar"},{path:"/tutorials/quick-start-with-application",component:d("/tutorials/quick-start-with-application","6d1"),exact:!0,sidebar:"CustomSideBar"},{path:"/tutorials/roles-management",component:d("/tutorials/roles-management","541"),exact:!0,sidebar:"CustomSideBar"},{path:"/user-guide",component:d("/user-guide","307"),exact:!0,sidebar:"CustomSideBar"},{path:"/",component:d("/","720"),exact:!0,sidebar:"CustomSideBar"}]}]}]},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),l=n(412);const s=[n(6657),n(2497),n(3310),n(8320),n(2295),n(8203)];var u=n(723),c=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5742),h=n(2263),g=n(4996),y=n(6668),b=n(833),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(_,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(m.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var j=n(8934),L=n(8940),R=n(469);function O(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,R.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),O("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?O("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=O("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
      \n

      Your Docusaurus site did not load properly.

      \n

      A very common reason is a wrong site baseUrl configuration.

      \n

      Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

      \n

      We suggest trying baseUrl =

      \n
      \n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(9670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),N(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(a.VK,{children:(0,p.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};N(window.location.pathname).then(l)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),o=n(6809);const a=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-GVY5VWYV1E"],"anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"README","docs":[{"id":"architecture","path":"/architecture","sidebar":"CustomSideBar"},{"id":"Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","path":"/Cookbook/dial-cookbook/examples/how_to_call_image_to_text_applications","sidebar":"CustomSideBar"},{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","path":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_image_applications","sidebar":"CustomSideBar"},{"id":"Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","path":"/Cookbook/dial-cookbook/examples/how_to_call_text_to_text_applications","sidebar":"CustomSideBar"},{"id":"Deployment/Bedrock Model Deployment","path":"/Deployment/Bedrock Model Deployment","sidebar":"CustomSideBar"},{"id":"Deployment/configuration","path":"/Deployment/configuration","sidebar":"CustomSideBar"},{"id":"Deployment/idp-configuration/cognito","path":"/Deployment/idp-configuration/cognito","sidebar":"CustomSideBar"},{"id":"Deployment/OpenAI Model Deployment","path":"/Deployment/OpenAI Model Deployment","sidebar":"CustomSideBar"},{"id":"Deployment/Vertex Model Deployment","path":"/Deployment/Vertex Model Deployment","sidebar":"CustomSideBar"},{"id":"quick-start","path":"/quick-start","sidebar":"CustomSideBar"},{"id":"README","path":"/","sidebar":"CustomSideBar"},{"id":"tutorials/azure-ad-configuration","path":"/tutorials/azure-ad-configuration","sidebar":"CustomSideBar"},{"id":"tutorials/quick-start-model","path":"/tutorials/quick-start-model","sidebar":"CustomSideBar"},{"id":"tutorials/quick-start-with-addon","path":"/tutorials/quick-start-with-addon","sidebar":"CustomSideBar"},{"id":"tutorials/quick-start-with-application","path":"/tutorials/quick-start-with-application","sidebar":"CustomSideBar"},{"id":"tutorials/roles-management","path":"/tutorials/roles-management","sidebar":"CustomSideBar"},{"id":"user-guide","path":"/user-guide","sidebar":"CustomSideBar"}],"draftIds":[],"sidebars":{"CustomSideBar":{"link":{"path":"/","label":"Home"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.0.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.0"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"3.0.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.0"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.0.0"},"docusaurus-plugin-image-zoom":{"type":"package","name":"docusaurus-plugin-image-zoom","version":"1.0.1"}}}');var u=n(5893);const c={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(412),a=n(5742),i=n(8780),l=n(7452),s=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(f,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(a.Z,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.Z,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,s.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(405),o=n(5893);function a(e){return(0,o.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(8780),i=n(2263),l=n(3919),s=n(412),u=n(5893);const c=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,d.C)(),x=(0,r.useContext)(c),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const _=(0,l.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,y&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,a.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),L=n?o.OL:o.rU,R=s.Z.canUseIntersectionObserver,O=(0,r.useRef)(),P=()=>{j.current||null==T||(window.docusaurus.preload(T),j.current=!0)};(0,r.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&O.current&&O.current.disconnect()})),[O,T,R,_]);const N=T?.startsWith("#")??!1,D=!T||!_||N;return D||g||x.collectLink(T),D?(0,u.jsx)("a",{ref:S,href:T,...E&&!_&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,u.jsx)(L,{...b,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,R&&e&&_&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),O.current.observe(e))},to:T,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(7294),o=n(5893);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:l,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>y,gA:()=>f,WS:()=>m,_r:()=>d,Jo:()=>b,zh:()=>p,yW:()=>g,gB:()=>h});var r=n(6550),o=n(2263),a=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},d=()=>i("docusaurus-plugin-content-docs")??c,p=e=>function(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function h(e){return p(e).versions}function g(e){const t=p(e);return l(t)}function y(e){const t=p(e),{pathname:n}=(0,r.TH)();return u(t,n)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("set","page_path",t.pathname+t.search+t.hash),window.gtag("event","page_view")}))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(2573),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(6010),o=n(5999),a=n(6668),i=n(9960);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var s=n(5893);function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:c}}=(0,a.L)();if("h1"===t||!n)return(0,s.jsx)(t,{...u,id:void 0});const d=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,s.jsxs)(t,{...u,className:(0,r.Z)("anchor",c?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,s.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(5893);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},7452:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Rt});var r=n(7294),o=n(6010),a=n(4763),i=n(833),l=n(6550),s=n(5999),u=n(5936),c=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(5281),y=n(9727);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(h,{className:b.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:o,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,o.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,c.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,c.jsx)("div",{className:T.announcementBarPlaceholder}),(0,c.jsx)(C,{className:T.announcementBarContent}),a&&(0,c.jsx)(E,{onClick:n,className:T.announcementBarClose})]})}var j=n(3163),L=n(2466);var R=n(902),O=n(3102);const P=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,j.e)(),t=(0,O.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,c.jsx)(P.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(P);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(2949),z=n(2389);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,o.Z)($.toggle,t),children:(0,c.jsxs)("button",{className:(0,o.Z)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,o.Z)($.toggleIcon,$.lightToggleIcon)}),(0,c.jsx)(U,{className:(0,o.Z)($.toggleIcon,$.darkToggleIcon)})]})})}const H=r.memo(q),Z={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?Z.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(1327);function W(){return(0,c.jsx)(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(W,{}),(0,c.jsx)(G,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Y=n(9960),X=n(4996),J=n(3919),ee=n(8022),te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.Z)(o),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,m&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return o?(0,c.jsx)(Y.Z,{href:s?f:o,...u,...h}):(0,c.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(p)},...u,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,c.jsx)(ne,{className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,o.Z)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,c.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,o.Z)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(qe,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function de(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ue(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(qe,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?de:ce;return(0,c.jsx)(r,{...n})}var fe=n(4711);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";function ge(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ye=n(830),be=["translations"];function ve(){return ve=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Se="Ctrl";var Ee=r.forwardRef((function(e,t){var n=e.translations,o=void 0===n?{}:n,a=xe(e,be),i=o.buttonText,l=void 0===i?"Search":i,s=o.buttonAriaLabel,u=void 0===s?"Search":s,c=we((0,r.useState)(null),2),d=c[0],p=c[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Se))}),[]),r.createElement("button",ve({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},a,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ye.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Se?r.createElement(ge,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),_e=n(5742),Ce=n(6177),Te=n(239),Ae=n(3320);var je=n(3935);const Le={button:{buttonText:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,s.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,s.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,s.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,s.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,s.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,s.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,s.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,s.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Re=null;function Oe(e){let{hit:t,children:n}=e;return(0,c.jsx)(Y.Z,{to:t.url,children:n})}function Pe(e){let{state:t,onClose:n}=e;const r=(0,Ce.M)();return(0,c.jsx)(Y.Z,{to:r(t.query),onClick:n,children:(0,c.jsx)(s.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Ne(e){let{contextualSearch:t,externalUrlRegex:o,...a}=e;const{siteMetadata:i}=(0,se.Z)(),s=(0,Te.l)(),u=function(){const{locale:e,tags:t}=(0,Ae._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=a.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(u,d):d,f={...a.searchParameters,facetFilters:p},m=(0,l.k6)(),h=(0,r.useRef)(null),g=(0,r.useRef)(null),[y,b]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Re?Promise.resolve():Promise.all([n.e(426).then(n.bind(n,1426)),Promise.all([n.e(532),n.e(945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(894)]).then(n.bind(n,8894))]).then((e=>{let[{DocSearchModal:t}]=e;Re=t}))),[]),x=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),b(!0)}))}),[k,b]),S=(0,r.useCallback)((()=>{b(!1),h.current?.remove()}),[b]),E=(0,r.useCallback)((e=>{k().then((()=>{b(!0),w(e.key)}))}),[k,b,w]),_=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(o,t)?window.location.href=t:m.push(t)}}).current,C=(0,r.useRef)((e=>a.transformItems?a.transformItems(e):e.map((e=>({...e,url:s(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>(0,c.jsx)(Pe,{...e,onClose:S})),[S]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,a=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?o():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&a&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&a(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,o,a,i])}({isOpen:y,onOpen:x,onClose:S,onInput:E,searchButtonRef:g}),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(_e.Z,{children:(0,c.jsx)("link",{rel:"preconnect",href:`https://${a.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,c.jsx)(Ee,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:x,ref:g,translations:Le.button}),y&&Re&&h.current&&(0,je.createPortal)((0,c.jsx)(Re,{onClose:S,initialScrollY:window.scrollY,initialQuery:v,navigator:_,transformItems:C,hitComponent:Oe,transformSearchClient:A,...a.searchPagePath&&{resultsFooterComponent:T},...a,searchParameters:f,placeholder:Le.placeholder,translations:Le.modal}),h.current)]})}function De(){const{siteConfig:e}=(0,se.Z)();return(0,c.jsx)(Ne,{...e.themeConfig.algolia})}const Ie={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Me(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,o.Z)(n,Ie.navbarSearchContainer),children:t})}var Fe=n(143),ze=n(2802);var Be=n(373);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const $e={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,l.TH)(),h=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(pe,{...a,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(me,{className:he}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(Me,{className:n,children:(0,c.jsx)(De,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,c.jsx)(i,{className:(0,o.Z)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,Fe.Iw)(r),i=(0,ze.vY)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,Fe.Iw)(r),i=(0,ze.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,ze.lO)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,c.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:u,hash:d}=(0,l.TH)(),p=(0,Fe.Iw)(n),f=(0,Fe.gB)(n),{savePreferredVersionName:m}=(0,Be.J)(n),h=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],g=(0,ze.lO)(n)[0],y=t&&h.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:Ue(g).path;return h.length<=1?(0,c.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(pe,{...i,mobile:t,label:y,to:b,items:h,isActive:r?()=>!1:void 0})}};function qe(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=$e[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(o,{...n})}function He(){const e=(0,j.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(qe,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ze(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ge(){const e=0===(0,w.L)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ze,{onClick:()=>t.hide()}),t.content]})}function Ve(){const e=(0,j.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(M,{header:(0,c.jsx)(Q,{}),primaryMenu:(0,c.jsx)(He,{}),secondaryMenu:(0,c.jsx)(Ge,{})}):null}const We={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ke(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,o.Z)("navbar-sidebar__backdrop",e.className)})}function Qe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,j.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[We.navbarHideable,!d&&We.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Ke,{onClick:i.toggle}),(0,c.jsx)(Ve,{})]})}var Ye=n(8780);const Xe={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Je(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function et(e){let{error:t}=e;const n=(0,Ye.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Xe.errorBoundaryError,children:n})}class tt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const nt="right";function rt(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function ot(){const{toggle:e,shown:t}=(0,j.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(rt,{})})}const at={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(tt,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(qe,{...e})},t)))})}function lt(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function st(){const e=(0,j.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,c.jsx)(lt,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(ot,{}),(0,c.jsx)(W,{}),(0,c.jsx)(it,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(it,{items:r}),(0,c.jsx)(G,{className:at.colorModeToggle}),!o&&(0,c.jsx)(Me,{children:(0,c.jsx)(De,{})})]})})}function ut(){return(0,c.jsx)(Qe,{children:(0,c.jsx)(st,{})})}function ct(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,X.Z)(n),s=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function dt(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(ct,{item:t})},t.href??t.to)}function pt(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(dt,{item:e},t)))})]})}function ft(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(pt,{column:e},t)))})}function mt(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function ht(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(ct,{item:t})}function gt(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(ht,{item:e}),t.length!==n+1&&(0,c.jsx)(mt,{})]},n)))})})}function yt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(ft,{columns:t}):(0,c.jsx)(gt,{links:t})}var bt=n(9965);const vt={footerLogoLink:"footerLogoLink_BH7S"};function wt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(bt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Y.Z,{href:t.href,className:vt.footerLogoLink,target:t.target,children:(0,c.jsx)(wt,{logo:t})}):(0,c.jsx)(wt,{logo:t})}function xt(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function St(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,c.jsx)("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function Et(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,c.jsx)(St,{style:o,links:n&&n.length>0&&(0,c.jsx)(yt,{links:n}),logo:r&&(0,c.jsx)(kt,{logo:r}),copyright:t&&(0,c.jsx)(xt,{copyright:t})})}const _t=r.memo(Et),Ct=(0,R.Qc)([F.S,k.pl,L.OC,Be.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(O.n2,{children:(0,c.jsx)(j.M,{children:(0,c.jsx)(N,{children:t})})})}]);function Tt(e){let{children:t}=e;return(0,c.jsx)(Ct,{children:t})}var At=n(2503);function jt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(At.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Je,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(et,{error:t})})]})})})}const Lt={mainWrapper:"mainWrapper_z2l0"};function Rt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(Tt,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(A,{}),(0,c.jsx)(ut,{}),(0,c.jsx)("div",{id:d,className:(0,o.Z)(g.k.wrapper.main,Lt.mainWrapper,r),children:(0,c.jsx)(a.Z,{fallback:e=>(0,c.jsx)(jt,{...e}),children:t})}),!n&&(0,c.jsx)(_t,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(9960),o=n(4996),a=n(2263),i=n(6668),l=n(9965),s=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,a.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,o.Z)(l?.href||"/"),m=n?"":t,h=l?.alt??m;return(0,s.jsxs)(r.Z,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:h,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(5742),o=n(5893);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.Z,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),o=n(6010),a=n(2389),i=n(2949);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,a.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function c(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),o=n(412),a=n(469),i=n(1442),l=n(5893);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.Z.canUseDOM)return e?c:d}function h(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,a.Z)((()=>{t||i(!0)}),[t]),(0,a.Z)((()=>{o&&u(t)}),[o,t]),o?(0,l.jsx)(h,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,l.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>m});var r=n(7294),o=n(2389),a=n(12),i=n(902),l=n(6668),s=n(5893);const u=(0,a.WA)("docusaurus.announcement.dismiss"),c=(0,a.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>g});var r=n(7294),o=n(412),a=n(902),i=n(12),l=n(6668),s=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&h(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y,Oh:()=>w});var r=n(7294),o=n(143),a=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12),c=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(g,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,o._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find((e=>e.name===o))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new o.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),o=n(3102),a=n(7524),i=n(1980),l=n(6668),s=n(902),u=n(5893);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function p(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function f(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},6177:(e,t,n)=>{"use strict";n.d(t,{K:()=>l,M:()=>s});var r=n(7294),o=n(2263),a=n(1980);const i="q";function l(){return(0,a.Nc)(i)}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!o.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?a.desktop:a.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>g,cE:()=>p,SN:()=>E,lO:()=>k,vY:()=>S,oz:()=>x,s1:()=>w,f:()=>b});var r=n(7294),o=n(6550),a=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function y(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||g(e,t);default:return!1}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,u.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,o.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,a.H)(i),sidebarName:u,sidebarItems:c}}},2128:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(2263);function o(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:o}=t;return e?.trim().length?`${e.trim()} ${o} ${n}`:n}},1980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>s,Rb:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){!function(e){const t=(0,o.k6)(),n=(0,a.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,o.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function s(e){const t=l(e)??"",n=function(){const e=(0,o.k6)();return(0,r.useCallback)(((t,n,r)=>{const o=new URLSearchParams(e.location.search);n?o.set(t,n):o.delete(t),(r?.push?e.push:e.replace)({search:o.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>m});var r=n(7294),o=n(6010),a=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2128),c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const l=(0,u.p)(t),{withBaseUrl:d}=(0,s.C)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.Z,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,o.Z)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(a.Z,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,o.Z)(r,a),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(7294),o=n(469),a=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,o.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},8022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>u,RF:()=>p});var r=n(7294),o=n(412),a=n(2389),i=(n(469),n(902)),l=n(5893);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),o=(0,r.useRef)(d()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(143),o=n(2263),a=n(373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,o.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,a.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,o=s[e],a=t[e].versions.find((e=>e.isLast));return l(e,(r??o??a).name)}))];return{locale:e.currentLocale,tags:u}}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,o.TH)(),u=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(7294),o=n(8022),a=n(4996),i=n(6278);function l(){const{withBaseUrl:e}=(0,a.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const a=new URL(r);if((0,o.F)(t,a.href))return r;const i=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},8203:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7582),o=r.__importDefault(n(6809)),a=r.__importDefault(n(2557)),{themeConfig:i}=o.default;function l(e){var t,n;return document.querySelector('html[data-theme="dark"]')?(null===(t=e.background)||void 0===t?void 0:t.dark)||"rgb(50, 50, 50)":(null===(n=e.background)||void 0===n?void 0:n.light)||"rgb(255, 255, 255)"}t.default=function(){if("undefined"==typeof window)return null;let e;const{zoom:t}=i,{selector:n=".markdown img",config:r={}}=t||{};if(!t)return null;r.background=l(t);var o=new MutationObserver((function(){e&&e.update({background:l(t)})}));const s=document.querySelector("html");return o.observe(s,{attributes:!0,attributeFilter:["data-theme"]}),setTimeout((()=>{e&&e.detach(),e=(0,a.default)(n,r)}),1e3),{onRouteUpdate(){setTimeout((()=>{e&&e.detach(),e=(0,a.default)(n,r)}),1e3)}}}()},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2557:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=window.Promise||function(e){function t(){}e(t,t)},u=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{}).target,t=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(y.container)if(y.container instanceof Object)t=(e=r({},e,y.container)).width-e.left-e.right-2*y.margin,n=e.height-e.top-e.bottom-2*y.margin;else{var o=(a(y.container)?y.container:document.querySelector(y.container)).getBoundingClientRect(),l=o.width,s=o.height,u=o.left,c=o.top;e=r({},e,{width:l,height:s,left:u,top:c})}t=t||e.width-2*y.margin,n=n||e.height-2*y.margin;var d=b.zoomedHd||b.original,p=i(d)?t:d.naturalWidth||t,f=i(d)?n:d.naturalHeight||n,m=d.getBoundingClientRect(),h=m.top,g=m.left,v=m.width,w=m.height,k=Math.min(Math.max(v,p),t)/v,x=Math.min(Math.max(w,f),n)/w,S=Math.min(k,x),E="scale("+S+") translate3d("+((t-v)/2-g+y.margin+e.left)/S+"px, "+((n-w)/2-h+y.margin+e.top)/S+"px, 0)";b.zoomed.style.transform=E,b.zoomedHd&&(b.zoomedHd.style.transform=E)};return new o((function(n){if(e&&-1===f.indexOf(e))n(w);else{if(b.zoomed)n(w);else{if(e)b.original=e;else{if(!(f.length>0))return void n(w);var r=f;b.original=r[0]}if(b.original.dispatchEvent(s("medium-zoom:open",{detail:{zoom:w}})),g=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,h=!0,b.zoomed=function(e){var t=e.getBoundingClientRect(),n=t.top,r=t.left,o=t.width,a=t.height,i=e.cloneNode(),l=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,s=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return i.removeAttribute("id"),i.style.position="absolute",i.style.top=n+l+"px",i.style.left=r+s+"px",i.style.width=o+"px",i.style.height=a+"px",i.style.transform="",i}(b.original),document.body.appendChild(v),y.template){var o=a(y.template)?y.template:document.querySelector(y.template);b.template=document.createElement("div"),b.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(b.template)}if(b.original.parentElement&&"PICTURE"===b.original.parentElement.tagName&&b.original.currentSrc&&(b.zoomed.src=b.original.currentSrc),document.body.appendChild(b.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),b.original.classList.add("medium-zoom-image--hidden"),b.zoomed.classList.add("medium-zoom-image--opened"),b.zoomed.addEventListener("click",d),b.zoomed.addEventListener("transitionend",(function e(){h=!1,b.zoomed.removeEventListener("transitionend",e),b.original.dispatchEvent(s("medium-zoom:opened",{detail:{zoom:w}})),n(w)})),b.original.getAttribute("data-zoom-src")){b.zoomedHd=b.zoomed.cloneNode(),b.zoomedHd.removeAttribute("srcset"),b.zoomedHd.removeAttribute("sizes"),b.zoomedHd.removeAttribute("loading"),b.zoomedHd.src=b.zoomed.getAttribute("data-zoom-src"),b.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+b.zoomedHd.src),b.zoomedHd=null,t()};var i=setInterval((function(){b.zoomedHd.complete&&(clearInterval(i),b.zoomedHd.classList.add("medium-zoom-image--opened"),b.zoomedHd.addEventListener("click",d),document.body.appendChild(b.zoomedHd),t())}),10)}else if(b.original.hasAttribute("srcset")){b.zoomedHd=b.zoomed.cloneNode(),b.zoomedHd.removeAttribute("sizes"),b.zoomedHd.removeAttribute("loading");var l=b.zoomedHd.addEventListener("load",(function(){b.zoomedHd.removeEventListener("load",l),b.zoomedHd.classList.add("medium-zoom-image--opened"),b.zoomedHd.addEventListener("click",d),document.body.appendChild(b.zoomedHd),t()}))}else t()}}}))},d=function(){return new o((function(e){if(!h&&b.original){h=!0,document.body.classList.remove("medium-zoom--opened"),b.zoomed.style.transform="",b.zoomedHd&&(b.zoomedHd.style.transform=""),b.template&&(b.template.style.transition="opacity 150ms",b.template.style.opacity=0),b.original.dispatchEvent(s("medium-zoom:close",{detail:{zoom:w}})),b.zoomed.addEventListener("transitionend",(function t(){b.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(b.zoomed),b.zoomedHd&&document.body.removeChild(b.zoomedHd),document.body.removeChild(v),b.zoomed.classList.remove("medium-zoom-image--opened"),b.template&&document.body.removeChild(b.template),h=!1,b.zoomed.removeEventListener("transitionend",t),b.original.dispatchEvent(s("medium-zoom:closed",{detail:{zoom:w}})),b.original=null,b.zoomed=null,b.zoomedHd=null,b.template=null,e(w)}))}else e(w)}))},p=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target;return b.original?d():c({target:e})},f=[],m=[],h=!1,g=0,y=n,b={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?y=t:(t||"string"==typeof t)&&u(t);var v=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((y=r({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},y)).background);document.addEventListener("click",(function(e){var t=e.target;t!==v?-1!==f.indexOf(t)&&p({target:t}):d()})),document.addEventListener("keyup",(function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||d()})),document.addEventListener("scroll",(function(){if(!h&&b.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(g-e)>y.scrollOffset&&setTimeout(d,150)}})),window.addEventListener("resize",d);var w={open:c,close:d,toggle:p,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(v.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=r({},y.container,e.container)),e.template){var n=a(e.template)?e.template:document.querySelector(e.template);t.template=n}return y=r({},y,t),f.forEach((function(e){e.dispatchEvent(s("medium-zoom:update",{detail:{zoom:w}}))})),w},clone:function(){return e(r({},y,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}))},attach:u,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,l(t))}),[]):f;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(s("medium-zoom:detach",{detail:{zoom:w}}))})),f=f.filter((function(e){return-1===r.indexOf(e)})),w},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),m.push({type:"medium-zoom:"+e,listener:t,options:n}),w},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),m=m.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),w},getOptions:function(){return y},getImages:function(){return f},getZoomedImage:function(){return b.original}};return w}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
      '};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,_=y||b;r.push({name:g||a++,prefix:h||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(E)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;o(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in m=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n