From 3be30e3bfd3432a74be1dd3c074526024a2702d4 Mon Sep 17 00:00:00 2001 From: sr-remsha <46220620+sr-remsha@users.noreply.github.com> Date: Mon, 13 Jan 2025 15:47:27 +0100 Subject: [PATCH] chore: docs review (#220) * fixed links to other docs * fixed links * fix links * fix links * review and fix for links * fix links * add new demo video * fix links --- docs/Auth/2. Web/1.overview.md | 12 ++-- docs/Auth/3. programmatic-auth.md | 4 +- docs/Deployment/Bedrock Model Deployment.md | 4 +- docs/Deployment/OpenAI Model Deployment.md | 4 +- docs/Deployment/Vertex Model Deployment.md | 4 +- docs/Deployment/configuration.md | 6 +- docs/Deployment/custom_apps_deployment.md | 2 +- docs/Roles and Access Control/1.overview.md | 4 +- docs/Roles and Access Control/2.chat-users.md | 2 +- docs/Roles and Access Control/3.API Keys.md | 6 +- docs/architecture.md | 30 +++++----- docs/marketplace.md | 4 +- docs/quick-start.md | 4 +- docs/tutorials/chat-objects.md | 12 ++-- docs/tutorials/collaboration/1.overview.md | 10 ++-- .../collaboration/2.enable-publications.md | 10 ++-- docs/tutorials/collaboration/3.sharing.md | 14 ++--- .../collaboration/4.notifications.md | 2 +- docs/tutorials/copilot-to-dial.md | 2 + docs/tutorials/data-visualization.md | 4 +- docs/tutorials/enable-publications.md | 6 +- docs/tutorials/interceptors.md | 4 +- docs/tutorials/multimodality.md | 8 +-- docs/tutorials/quick-start-model.md | 4 +- docs/tutorials/quick-start-with-addon.md | 4 +- .../tutorials/quick-start-with-application.md | 2 +- .../quick-start-with-self-hosted-model.md | 2 +- docs/tutorials/rate-limits-users.md | 60 ------------------- docs/tutorials/realtime-analytics.md | 4 +- docs/user-guide.md | 44 +++++++------- .../demos-for-developers/4.deploy-ollama.md | 6 +- .../5.develop-application.md | 8 +-- .../demos-for-developers/8.dial-continue.md | 2 +- .../demos/1.dial-product-overview.md | 4 +- docs/video demos/demos/10.marketplace.md | 2 +- docs/video demos/demos/11.code-apps.md | 2 +- docs/video demos/demos/12.quick-apps.md | 2 +- docs/video demos/demos/13.dial-copilot.md | 17 ++++++ docs/video demos/demos/2.dial-ui-basics.md | 2 +- .../demos/3.dial-roles-and-rate-limits.md | 2 +- docs/video demos/demos/4.interceptors.md | 2 +- .../video demos/demos/5.dial-collaboration.md | 4 +- docs/video demos/demos/6.dial-publications.md | 4 +- .../demos/7.dial-parameterized-replay.md | 6 +- .../video demos/demos/animated-scatterplot.md | 2 +- 45 files changed, 151 insertions(+), 192 deletions(-) delete mode 100644 docs/tutorials/rate-limits-users.md create mode 100644 docs/video demos/demos/13.dial-copilot.md diff --git a/docs/Auth/2. Web/1.overview.md b/docs/Auth/2. Web/1.overview.md index 19be112a..532fe1ce 100644 --- a/docs/Auth/2. Web/1.overview.md +++ b/docs/Auth/2. Web/1.overview.md @@ -8,16 +8,16 @@ JSON Web Token (JWT) is used for web authentication to securely transmit informa 1. Configure your identity service provider (IDP) 2. Configure AI DIAL Core and Chat to work with your IDP -3. (Optional) Further, you can create roles and permission in AI DIAL for your users. Refer to [Chat Users](/Roles%20and%20Access%20Control/chat-users) to learn how to do this. +3. (Optional) Further, you can create roles and permission in AI DIAL for your users. Refer to [Chat Users](/docs/Roles%20and%20Access%20Control/2.chat-users.md) to learn how to do this. -> Refer to [Auth0](./IDPs/auth0), [AWS Cognito](./IDPs/cognito), [MS Entra](./IDPs/entraID), [Google Identity](./IDPs/google), [Keycloak](./IDPs/keycloak), [Okta](./IDPs/okta) to view how to enable them as an identity and access management solution for AI DIAL users. +> Refer to [Auth0](/docs/Auth/2.%20Web/2.IDPs/auth0.md), [AWS Cognito](/docs/Auth/2.%20Web/2.IDPs/cognito.md), [MS Entra](/docs/Auth/2.%20Web/2.IDPs/entraID.md), [Google Identity](/docs/Auth/2.%20Web/2.IDPs/google.md), [Keycloak](/docs/Auth/2.%20Web/2.IDPs/keycloak.md), [Okta](/docs/Auth/2.%20Web/2.IDPs/okta.md) to view how to enable them as an identity and access management solution for AI DIAL users. ## Example For example purposes, lets configure Microsoft Entra to work with AI DIAL as an identity service provider: -1. [Configure Microsoft Entra](/Auth/Web/IDPs/entraID#configure-microsoft-entra-id): create application, client secret, and user group. -2. [Configure AI DIAL Chat](/Auth/Web/IDPs/entraID#ai-dial-chat-settings) to work with MS Entra. -3. [Configure AI DIAL Core](/Auth/Web/IDPs/entraID#ai-dial-core-settings) to work with MS Entra. -4. (Optional) You can now create and assign roles and limits to manage access control of your users to various system resources such as applications, models, assistants and addons. Refer to [Create and assign roles](/Auth/Web/IDPs/entraID#assignment-of-roles) to learn more. Refer to [Roles & Access Control](/Roles%20and%20Access%20Control/overview) to learn more about roles and how to use them. +1. [Configure Microsoft Entra](/docs/Auth/2.%20Web/2.IDPs/entraID.md#configure-microsoft-entra-id): create application, client secret, and user group. +2. [Configure AI DIAL Chat](/docs/Auth/2.%20Web/2.IDPs/entraID.md#ai-dial-chat-settings) to work with MS Entra. +3. [Configure AI DIAL Core](/docs/Auth/2.%20Web/2.IDPs/entraID.md#ai-dial-core-settings) to work with MS Entra. +4. (Optional) You can now create and assign roles and limits to manage access control of your users to various system resources such as applications, models, assistants and addons. Refer to [Create and assign roles](/docs/Auth/2.%20Web/2.IDPs/entraID.md#assignment-of-roles) to learn more. Refer to [Roles & Access Control](/docs/Roles%20and%20Access%20Control/1.overview.md) to learn more about roles and how to use them. diff --git a/docs/Auth/3. programmatic-auth.md b/docs/Auth/3. programmatic-auth.md index 842ea455..89385cbb 100644 --- a/docs/Auth/3. programmatic-auth.md +++ b/docs/Auth/3. programmatic-auth.md @@ -28,13 +28,13 @@ In the following example, `"myApiKey"` API key is created for a project `"MyProj API keys must be associated with roles. Such roles are used to manage access to system resources and restrict the number of requests that can be sent to them. -> Refer to [Roles](/Roles%20and%20Access%20Control/overview) to learn more how to use roles. +> Refer to [Roles](/docs/Roles%20and%20Access%20Control/1.overview.md) to learn more how to use roles. Roles used by API keys must be declared in the `roles` section. In the previous example, we assigned the `default` role for `myApiKey` API key. On this step, we need to declare the `default` role in the `roles` section to make a valid configuration. -Optionally, we can configure limits for this role, or leave them empty to apply an unlimited access. In this example, we grant an unlimited access for the `default` role to the `chat-gpt-35-turbo` model. You can refer to [Roles & Access Control](/Roles%20and%20Access%20Control/API%20Keys) to learn how to define access limits for API keys. +Optionally, we can configure limits for this role, or leave them empty to apply an unlimited access. In this example, we grant an unlimited access for the `default` role to the `chat-gpt-35-turbo` model. You can refer to [Roles & Access Control](/docs/Roles%20and%20Access%20Control/3.API%20Keys.md) to learn how to define access limits for API keys. **Note**, that it is mandatory to define at least one role and assign it for an API key, but you can leave `limits` empty (as shown in the previous example) to apply the default value - `unlimited`. diff --git a/docs/Deployment/Bedrock Model Deployment.md b/docs/Deployment/Bedrock Model Deployment.md index 966e993f..8e70ff1c 100644 --- a/docs/Deployment/Bedrock Model Deployment.md +++ b/docs/Deployment/Bedrock Model Deployment.md @@ -80,7 +80,7 @@ IAM (Identity and Access Management) users in AWS (Amazon Web Services) are enti #### Assign to Service Account -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. +In case your cluster is located at AWS, the best practice for using Bedrock is to assign an IAM Policy to your Service Account. You can do this via IAM Roles. > Refer to [AWS Documentation](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) to learn how to configure an IAM roles for service accounts. @@ -94,7 +94,7 @@ Add your model with its parameters in the `models` section. > Refer to [AI DIAL Core Configuration](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json#L30) to view an example. -> Refer to [Configure core config](./configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. +> Refer to [Configure core config](/docs/Deployment/configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. ### Configure AI DIAL Adapter diff --git a/docs/Deployment/OpenAI Model Deployment.md b/docs/Deployment/OpenAI Model Deployment.md index bae86745..0c470cf9 100644 --- a/docs/Deployment/OpenAI Model Deployment.md +++ b/docs/Deployment/OpenAI Model Deployment.md @@ -71,7 +71,7 @@ From this instruction, you will learn how to create an Azure OpenAI model GPT-3. #### Configure Kubernetes Service Account -In case your cluster is located at Azure, the best practise for using Azure OpenAI is to assign an Azure user-assigned managed identity to Kubernetes Service Account. You can do this using Microsoft Entra Workload ID with Azure Kubernetes Service. +In case your cluster is located at Azure, the best practice for using Azure OpenAI is to assign an Azure user-assigned managed identity to Kubernetes Service Account. You can do this using Microsoft Entra Workload ID with Azure Kubernetes Service. > Refer to [Azure Documentation](https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview) to learn how to configure Microsoft Entra Workload ID with Azure Kubernetes Service. @@ -87,7 +87,7 @@ Add your model with its parameters in the `models` section. > Refer to [AI DIAL Core Configuration](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json#L30) to view an example. -> Refer to [Configure core config](./configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. +> Refer to [Configure core config](/docs/Deployment/configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. ### Configure AI DIAL Adapter diff --git a/docs/Deployment/Vertex Model Deployment.md b/docs/Deployment/Vertex Model Deployment.md index f4d356bc..7996495c 100644 --- a/docs/Deployment/Vertex Model Deployment.md +++ b/docs/Deployment/Vertex Model Deployment.md @@ -76,7 +76,7 @@ To communicate with VertexAI models, it is necessary to have a service account. #### Configure Kubernetes Service Account -In case your cluster is located at GCP, the best practise for using VertexAI is to assign a GCP IAM service account to Kubernetes Service Account. You can do this via Workload Identity Federation for GKE. +In case your cluster is located at GCP, the best practice for using VertexAI is to assign a GCP IAM service account to Kubernetes Service Account. You can do this via Workload Identity Federation for GKE. > Refer to [GCP Documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) to learn how to configure a Workload Identity Federation for GKE. @@ -90,7 +90,7 @@ Add your model with its parameters in the `models` section. > Refer to [AI DIAL Core Configuration](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json#L30) to view an example. -> Refer to [Configure core config](./configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. +> Refer to [Configure core config](/docs/Deployment/configuration.md#core-parameters) to view the configuration of AI DIAL core parameters in the helm-based installation. ### Configure AI DIAL Adapter diff --git a/docs/Deployment/configuration.md b/docs/Deployment/configuration.md index ad68ee32..ea9dbd30 100644 --- a/docs/Deployment/configuration.md +++ b/docs/Deployment/configuration.md @@ -87,9 +87,9 @@ To work with Azure, AWS or GCP models, AI DIAL uses applications called Adapters You can modify adapters settings using environment variables. > Refer to these repositories to learn how to configure adapters: -> * [Bedrock Model Deployment](./Bedrock%20Model%20Deployment.md#configure-adapter) -> * [OpenAI Model Deployment](./OpenAI%20Model%20Deployment.md#configure-adapter) -> * [Vertex Model Deployment](./Vertex%20Model%20Deployment.md#configure-adapter) +> * [Bedrock Model Deployment](/docs/Deployment/Bedrock%20Model%20Deployment.md) +> * [OpenAI Model Deployment](/docs/Deployment/OpenAI%20Model%20Deployment.md) +> * [Vertex Model Deployment](/docs/Deployment/Vertex%20Model%20Deployment.md) ## Assistant Parameters diff --git a/docs/Deployment/custom_apps_deployment.md b/docs/Deployment/custom_apps_deployment.md index 39aadff5..ffd871d2 100644 --- a/docs/Deployment/custom_apps_deployment.md +++ b/docs/Deployment/custom_apps_deployment.md @@ -4,7 +4,7 @@ Follow steps described in this guide, to deploy your custom application using a Helm chart and integrate it with AI DIAL Core configuration. -> * Refer to [User Guide](../user-guide#applications-1) to learn about DIAL apps. +> * Refer to [User Guide](/docs/user-guide.md#applications-1) to learn about DIAL apps. > * Refer to [DIAL Core dynamic setting](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json) to learn how to add apps to config. > * Refer to [DIAL Helm](https://github.com/epam/ai-dial-helm) to view deployment examples. diff --git a/docs/Roles and Access Control/1.overview.md b/docs/Roles and Access Control/1.overview.md index f1884524..beb8905b 100644 --- a/docs/Roles and Access Control/1.overview.md +++ b/docs/Roles and Access Control/1.overview.md @@ -7,7 +7,7 @@ In AI DIAL, you can use **roles** for various purposes: * Implement a custom logic in applications * Give access to specific system features -> Watch a [demo video](../video%20demos/demos/dial-roles-and-rate-limits) to learn more. +> Watch a [demo video](/docs/video%20demos/demos/3.dial-roles-and-rate-limits.md) to learn more. ## Access to Resources @@ -25,7 +25,7 @@ In the following example, we grant access to `chat-gpt-35-turbo` model for users } ``` -> Refer to [configuration example](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json) to view the full example and to [Chat Users](/Roles%20and%20Access%20Control/chat-users) to learn how to configure access for chat users and to [API Keys](/Roles%20and%20Access%20Control/API%20Keys) to learn how to configure access for applications. +> Refer to [configuration example](https://github.com/epam/ai-dial-core/blob/development/sample/aidial.config.json) to view the full example and to [Chat Users](/docs/Roles%20and%20Access%20Control/2.chat-users.md) to learn how to configure access for chat users and to [API Keys](/docs/Roles%20and%20Access%20Control/3.API%20Keys.md) to learn how to configure access for applications. ## Access Restriction diff --git a/docs/Roles and Access Control/2.chat-users.md b/docs/Roles and Access Control/2.chat-users.md index 59dbb22f..04984e06 100644 --- a/docs/Roles and Access Control/2.chat-users.md +++ b/docs/Roles and Access Control/2.chat-users.md @@ -4,7 +4,7 @@ You can configure AI DIAL to work with various identity service providers, where In the system configuration, you can then add rules and restrictions to manage access to your users to various system resources. -1. For chat users, you can define user groups/roles/pools (it depends on a specific IDP) in your identity service provider (IDP) which are then passed to AI DIAL in JWT. Refer to [Auth](/Auth/Web/overview) to view supported IDPs and learn how to configure them. +1. For chat users, you can define user groups/roles/pools (it depends on a specific IDP) in your identity service provider (IDP) which are then passed to AI DIAL in JWT. Refer to [Auth](/docs/Auth/2.%20Web/1.overview.md) to view supported IDPs and learn how to configure them. 2. You can then utilize user roles from the JWT claims to define roles in the AI DIAL configuration as a `userRoles` parameter value. In the following example, we grant access to `chat-gpt-35-turbo` model for users with the `operator` user role. Using the same pattern, you can define user access to applications, addons, assistants. **Important**: you must always use roles from the JWT claims that you receive from your IDP. diff --git a/docs/Roles and Access Control/3.API Keys.md b/docs/Roles and Access Control/3.API Keys.md index e777f8b7..6d7997f1 100644 --- a/docs/Roles and Access Control/3.API Keys.md +++ b/docs/Roles and Access Control/3.API Keys.md @@ -2,14 +2,14 @@ ## API Keys -API keys can be used not only for [authentication](/Auth/programmatic-auth), but also to manage access to system resources and apply restrictions on such access. +API keys can be used not only for [authentication](/docs/Auth/3.%20programmatic-auth.md), but also to manage access to system resources and apply restrictions on such access. This is done via assigning of **roles** to API keys. Roles must be associated with specific system resources such as models, applications, addons and assistants. To create and configure access control for API keys: -1. [Create API Key](/Auth/programmatic-auth#step-1-define-api-keys) -2. [Assign role(s)](/Auth/programmatic-auth#step-2-assign-roles) +1. [Create API Key](/docs/Auth/3.%20programmatic-auth.md#step-1-define-api-keys) +2. [Assign role(s)](/docs/Auth/3.%20programmatic-auth.md#step-2-assign-roles) 3. Add restrictions: Roles used by API keys must be declared in the `roles` section. In the following example, we assign the `basic` role for `projectKey1` API key. It grants access to the `chat-gpt-35-turbo` model with some restrictions: diff --git a/docs/architecture.md b/docs/architecture.md index e324432f..a61c8911 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -16,7 +16,7 @@ Modular architecture of AI DIAL allows implementing scalable and customized solu The [Unified API](https://epam-rail.com/dial_api) enables universal connectivity between models (including models of different modalities), unified access to different embedding models, and facilitates communication with the AI DIAL Core for both external and internal clients. -Applications can form an **ecosystem and interact with each other** through the Unified API with access to all DIAL Core features among which is connectivity to models, file storage, access control, per-request API keys and other - see the following illustration. To enhance performance and fault tolerance, AI DIAL Core employs a proprietary load balancer and a retry mechanism. This significantly reduces delays and boosts throughput especially during peak demand. Refer to the [document](/tutorials/high-load-performance) with the overview of the performance tests to learn more. +Applications can form an **ecosystem and interact with each other** through the Unified API with access to all DIAL Core features among which is connectivity to models, file storage, access control, per-request API keys and other - see the following illustration. To enhance performance and fault tolerance, AI DIAL Core employs a proprietary load balancer and a retry mechanism. This significantly reduces delays and boosts throughput especially during peak demand. Refer to the [document](/docs/tutorials/high-load-performance.md) with the overview of the performance tests to learn more. ![](./img/arch-intro.svg) @@ -53,8 +53,8 @@ The diagram below demonstrates the most complete landscape of AI DIAL ecosystem: In AI DIAL, we call *resources* applications, conversations, prompts and files. When added to the system, they are stored in a dedicated folder within a blob store account bucket assigned to your user account. You can handle resources according to the similar pattern (CRUD operations, publications, sharing and other). > * In [DIAL API](https://epam-rail.com/dial_api) you can find dedicated sections for working with resources: [applications](https://epam-rail.com/dial_api#tag/Applications), [conversations](https://epam-rail.com/dial_api#tag/Conversations), [prompts](https://epam-rail.com/dial_api#tag/Prompts) and [files](https://epam-rail.com/dial_api#tag/Files). -> * Refer to [Collaboration](./tutorials/collaboration/overview) to learn about collaboration features such as sharing and publication that can be applied to resources. -> * Refer to [Applications](/user-guide#applications-1) to learn how to develop, add and manage apps in DIAL. +> * Refer to [Collaboration](/docs/tutorials/collaboration/1.overview.md) to learn about collaboration features such as sharing and publication that can be applied to resources. +> * Refer to [Applications](/docs/user-guide.md#applications-1) to learn how to develop, add and manage apps in DIAL. ## AI DIAL Components @@ -83,26 +83,26 @@ AI DIAL Core is headless and is the **only mandatory component**. It includes al #### Authentication and Authorization -AI DIAL provides native support for [OpenID Connect](https://openid.net/developers/how-connect-works/) and [OAuth2](https://oauth.net/2/) and offers [integration with various Identity Providers (IDP)](/Auth/Web/overview) such as Azure AD, Auth0, Okta, Microsoft Entra, Google OAuth2, and AWS Cognito where you can define user roles and attributes to support your custom permissions model. Additionally, you can leverage Keycloak to work with even wider range of IDPs. +AI DIAL provides native support for [OpenID Connect](https://openid.net/developers/how-connect-works/) and [OAuth2](https://oauth.net/2/) and offers [integration with various Identity Providers (IDP)](/docs/Auth/2.%20Web/1.overview.md) such as Azure AD, Auth0, Okta, Microsoft Entra, Google OAuth2, and AWS Cognito where you can define user roles and attributes to support your custom permissions model. Additionally, you can leverage Keycloak to work with even wider range of IDPs. There are two methods of CORE API calls authorization supported: JWT token and key. Both options provide granular permission management, allowing you to control access to specific functionalities or resources. Additionally, these authorization methods also enable rate and cost control, giving you the ability to manage the frequency of API calls. -> Refer to [Auth](/Auth/overview) to learn how to authenticate API keys and chat users and to [Roles & Access Control](/Roles%20and%20Access%20Control/overview) to learn how to implement a custom role-based access policy. +> Refer to [Auth](/docs/Auth/1.%20overview.md) to learn how to authenticate API keys and chat users and to [Roles & Access Control](/docs/Roles%20and%20Access%20Control/1.overview.md) to learn how to implement a custom role-based access policy. #### Load Balancer For self-hosted models, you can use the standard load balancer (LB) capabilities provided by the target cloud platform. As for cloud-deployed models like Azure OpenAI and others, we typically rely on our custom-developed load balancing solution. -In this approach, a configuration file includes multiple upstream endpoints for a model. When a request is received, it is forwarded to one of the endpoints using the round-robin method. If an upstream returns an overload limit error such as a 429 (Too Many Requests) or a 504 (Gateway Timeout), the system attempts another upstream and temporarily excludes the one that generated the error. This strategy ensures efficient load distribution and fault tolerance for optimal performance and reliability. Refer to the [document](/tutorials/high-load-performance) with the overview of the performance tests to learn more. +In this approach, a configuration file includes multiple upstream endpoints for a model. When a request is received, it is forwarded to one of the endpoints using the round-robin method. If an upstream returns an overload limit error such as a 429 (Too Many Requests) or a 504 (Gateway Timeout), the system attempts another upstream and temporarily excludes the one that generated the error. This strategy ensures efficient load distribution and fault tolerance for optimal performance and reliability. Refer to the [document](/docs/tutorials/high-load-performance.md) with the overview of the performance tests to learn more. -> Refer to [Load Balancer](/tutorials/load-balancer) to learn more. +> Refer to [Load Balancer](/docs/tutorials/load-balancer.md) to learn more. #### Rate Limits & Cost Control A well-distributed rate-limiting mechanism ensures the control over the total number of tokens that can be sent to a model (typically a one-minute or 24-hour window) by any Application, Addon, or Assistant. -> * Refer to [AI DIAL Configuration](/Deployment/configuration#dynamic-settings) to learn more about roles and rate limits. -> * Refer to [Roles & Access Control](/Roles%20and%20Access%20Control/overview) to learn how to configure limits for API keys and users. +> * Refer to [AI DIAL Configuration](/docs//Deployment/configuration.md#dynamic-settings) to learn more about roles and rate limits. +> * Refer to [Roles & Access Control](/docs/Roles%20and%20Access%20Control/1.overview.md) to learn how to configure limits for API keys and users. #### Extension Framework @@ -114,7 +114,7 @@ You can use AI DIAL SDK to develop such extensions. Applications and model Adapt **Addon**: Addon is similar to a concept of tool or function in some other frameworks. Within the AI DIAL framework, an Addon is a service — or any component adhering to its own or provided [OpenAPI specification](https://www.openapis.org/what-is-openapi) — that empowers LLMs to access and utilize any desired data source or technology to produce their responses. -**Application**: any custom logic with a conversation interface packaged as a ready-to-use solution. It can be any component conforming with Unified Protocol requirements. Refer to [Applications](/user-guide#applications-1) to learn more about DIAL apps and their types. +**Application**: any custom logic with a conversation interface packaged as a ready-to-use solution. It can be any component conforming with Unified Protocol requirements. Refer to [Applications](/docs/user-guide.md#applications-1) to learn more about DIAL apps and their types. **The Assistant Service** is used to enable communication between Addons and the AI DIAL Core. Assistants can range from simple implementations, like instructing the LLM to provide answers using a specific language tone or style, to more complex use cases, such as limiting the LLM's data scope to a particular geographical location. Refer to [AI DIAL Assistant](https://github.com/epam/ai-dial-assistant) repository in GitHub. @@ -126,13 +126,13 @@ AI DIAL Core uses [Vector](https://vector.dev/docs/reference/configuration/sinks You can gather standard logs (which do not contain user messages) from components using the ELK stack (Elasticsearch, Logstash, Kibana) or other log collection system. -> Refer to [Observability](./Observability/Observability.md) to learn more. +> Refer to [Observability](/docs/Observability/Observability.md) to learn more. #### Entitlements In AI DIAL Core, user roles are defined and configured in the application config file. This allows administrators to specify which users or user groups are authorized to access specific resources or features within the application. These user roles match the once created in your IDP. -> Refer to [Web Auth](/Auth/Web/overview) to learn about supported identity service providers. +> Refer to [Web Auth](/docs/Auth/2.%20Web/1.overview.md) to learn about supported identity service providers. ### Persistent Layer @@ -155,7 +155,7 @@ It is a proxy service that implements OpenID-compatible Web API endpoints to avo Chat is a default AI DIAL UI which provides access to the full set of its features. > * Refer to [Chat](https://github.com/epam/ai-dial-chat) repository in GitHub to learn more. -> * Refer to [User Guide](/user-guide) to learn about DIAL Chat features. +> * Refer to [User Guide](/docs/user-guide.md) to learn about DIAL Chat features. ![](./img/chat.svg) @@ -207,7 +207,7 @@ Examples of the computed artifacts: - Language of conversations. - Any other calculated statistics based on conversations. -> Refer to [Tutorials](/tutorials/realtime-analytics) to learn more about configuration and usage of this service. +> Refer to [Tutorials](/docs/tutorials/realtime-analytics.md) to learn more about configuration and usage of this service. ## Extensions @@ -237,7 +237,7 @@ Metrics are gathered for the entire system and/or for individual system componen You can use any OTLE Collector such as Prometheus, Jaeger, Fluentd, Zipkin and other. -> Refer to [Observability](./Observability/Observability.md) to learn more. +> Refer to [Observability](/docs/Observability/Observability.md) to learn more. ## Key Vault diff --git a/docs/marketplace.md b/docs/marketplace.md index adeb8659..2df604ef 100644 --- a/docs/marketplace.md +++ b/docs/marketplace.md @@ -1,6 +1,6 @@ # DIAL Marketplace -> Watch our [demo video](../video%20demos/demos/marketplace) to explore the capabilities of DIAL Marketplace. +> Watch our [demo video](/docs/video%20demos/demos/10.marketplace.md) to explore the capabilities of DIAL Marketplace. DIAL Marketplace is a comprehensive hub for all applications, language models, and GenAI assistants available in the DIAL environment of your organization. @@ -14,5 +14,5 @@ DIAL Marketplace is a powerful platform for fostering collaboration within organ Another powerful feature of DIAL Marketplace is its functionality as a development studio, facilitating the rapid creation of low-code quick apps and providing access to a full-scale Integrated Development Environment (IDE) for Python code app development and deployment. -> For a detailed understanding of all that DIAL Marketplace has to offer, please refer to our [User Guide](/user-guide#marketplace). +> For a detailed understanding of all that DIAL Marketplace has to offer, please refer to our [User Guide](/docs/user-guide.md#marketplace). diff --git a/docs/quick-start.md b/docs/quick-start.md index 770a1533..b3dc5109 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -2,8 +2,8 @@ Follow this tutorial to launch AI DIAL Chat with Echo application. As a result, you will be able to access Chat on http://localhost:3000/ and use Echo application to mirror your prompts. -> * To learn more, watch a [demo video](../video%20demos/demos-for-developers/deploy-ollama) to see how to deploy a chat application with a self-hosted model. -> * Refer to other quick start instructions in [Tutorials](./tutorials/quick-start-with-application). +> * To learn more, watch a [demo video](/docs/video%20demos/demos-for-developers/4.deploy-ollama.md) to see how to deploy a chat application with a self-hosted model. +> * Refer to other quick start instructions in [Tutorials](/docs/tutorials/quick-start-with-application.md). ## Prerequisites diff --git a/docs/tutorials/chat-objects.md b/docs/tutorials/chat-objects.md index 5e436496..fa72e051 100644 --- a/docs/tutorials/chat-objects.md +++ b/docs/tutorials/chat-objects.md @@ -16,7 +16,7 @@ DIAL [Completions API](https://epam-rail.com/dial_api#/paths/~1openai~1deploymen **Definition**: by an attachment we understand a specific content that can be included by a user in the request to an application or by the application in the response. Such attachments can be rendered in the chat UI, where they can be viewed or downloaded. Attachments can also we shared among a specific audience. -> To learn how chat users can use attachments with their requests to applications and models, refer to [User Guide](/user-guide#attachments). +> To learn how chat users can use attachments with their requests to applications and models, refer to [User Guide](/docs/user-guide.md#attachments). AI DIAL supports several types of attachments: files (text and images), links and folders. Attached files are stored in a configured blob storage - refer to [AI DIAL Core](https://github.com/epam/ai-dial-core) to learn how to configure a file storage. Attachments can be both URL and base64-encoded strings. Each attachment has a specific `type`- according to [MIME standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). @@ -40,7 +40,7 @@ To render an attachment in the response from the application, include `attachmen Applications can be made to return documents in the response. AI DIAL supports the following document formats: PDF, DOC/DOCX, PPT/PPTX, TXT and other plain text formats such as code files. -For example, the [DIAL RAG](../video%20demos/demos/dial-web-rag) application enables users to attach files to their requests. These files are stored in a dedicated user bucket, which can be configured to grant access to specific applications. The app then generates the response, taking into consideration the attached files, and includes them in the output along with the response. +For example, the [DIAL RAG](/docs/video%20demos/demos/9.dial-web-rag.md) application enables users to attach files to their requests. These files are stored in a dedicated user bucket, which can be configured to grant access to specific applications. The app then generates the response, taking into consideration the attached files, and includes them in the output along with the response. To attach a document in the response of your application, follow the example below: @@ -91,7 +91,7 @@ const imageTypes: Set = new Set([ ]); ``` -For example, [DIAL ChatHub](../video%20demos/demos/dial-chathub) application includes agents that use models of a specific modality to generate images from text and return them attached to the response as files. Such images are then stored in the dedicated bucket of the application and are accessible to authorized users. +For example, [DIAL ChatHub](/docs/video%20demos/demos/dial-chathub.md) application includes agents that use models of a specific modality to generate images from text and return them attached to the response as files. Such images are then stored in the dedicated bucket of the application and are accessible to authorized users. To attach an image in the response of your application, follow the example below: @@ -120,7 +120,7 @@ This will render an attachment with an image in the response in AI DIAL Chat UI: ### URL -Applications can be made to return a URL in the response. For example, [DIAL Web RAG](../video%20demos/demos/dial-web-rag) application takes the user's message and sends it as a search query to Bing Search. The search results are then passed to the DIAL RAG application and rendered in AI DIAL Chat UI as attachments. +Applications can be made to return a URL in the response. For example, [DIAL Web RAG](/docs/video%20demos/demos/9.dial-web-rag.md) application takes the user's message and sends it as a search query to Bing Search. The search results are then passed to the DIAL RAG application and rendered in AI DIAL Chat UI as attachments. To attach a URL in the response of your application, follow the example below: @@ -245,7 +245,7 @@ This message will be rendered in AI DIAL Chat UI like this: We call Visualizers special applications that are used for rendering a specific type of content in AI DIAL Chat UI. AI DIAL Chat comes with built-in support for the [Plotly data visualizer](#plotly). You can use [DIAL Chat Visualizer Connector](https://github.com/epam/ai-dial-chat/blob/development/libs/chat-visualizer-connector/README.md) library to create visualizers for specific types of content. -Watch a [demo video](../video%20demos/demos-for-developers/dial-data-viz) to view how a financial data can be visualized in AI DIAL Chat. +Watch a [demo video](/docs/video%20demos/demos-for-developers/7.dial-data-viz.md) to view how a financial data can be visualized in AI DIAL Chat. ## Plotly @@ -277,4 +277,4 @@ Similar structure in the application response will include a visualization as an ![](./img/att-plotly.png) -Watch a [demo video](../video%20demos/demos/animated-scatterplot) to view how a statistical data can be visualized in AI DIAL Chat in Plotly animated scatterplot or a demo video of the [Omics AI Assistant](../video%20demos/demos/dial-omics-assistant) to see how protein structures can be visualized using Plotly. +Watch a [demo video](/docs/video%20demos/demos/animated-scatterplot.md) to view how a statistical data can be visualized in AI DIAL Chat in Plotly animated scatterplot or a demo video of the [Omics AI Assistant](/docs/video%20demos/demos/dial-omics-assistant.md) to see how protein structures can be visualized using Plotly. diff --git a/docs/tutorials/collaboration/1.overview.md b/docs/tutorials/collaboration/1.overview.md index e601b228..7482e205 100644 --- a/docs/tutorials/collaboration/1.overview.md +++ b/docs/tutorials/collaboration/1.overview.md @@ -2,11 +2,11 @@ AI DIAL can serve as a collaborative and knowledge-sharing platform for the entire organization. To facilitate this, we provide a variety of features accessible through both the API and the chat user interface. -> In AI DIAL, [resources](../../architecture#resources) refers to conversations, prompts, files, and applications. +> In AI DIAL, [resources](/docs/architecture.md#resources) refers to conversations, prompts, files, and applications. -* [Publication](enable-publications): you can publish resources making them accessible to the selected audience in your organization. -* [Sharing](sharing): you can share your resources with a specific person. -* [Notifications](notifications): you can receive notifications when specific events occur. +* [Publication](/docs/tutorials/collaboration/2.enable-publications.md): you can publish resources making them accessible to the selected audience in your organization. +* [Sharing](/docs/tutorials/collaboration/3.sharing.md): you can share your resources with a specific person. +* [Notifications](/docs/tutorials/collaboration/4.notifications.md): you can receive notifications when specific events occur. -> Watch a [demo video](../../video%20demos/demos/dial-collaboration) to see collaboration features in action. \ No newline at end of file +> Watch a [demo video](/docs/video%20demos/demos/5.dial-collaboration.md) to see collaboration features in action. \ No newline at end of file diff --git a/docs/tutorials/collaboration/2.enable-publications.md b/docs/tutorials/collaboration/2.enable-publications.md index 36a1e60a..803778aa 100644 --- a/docs/tutorials/collaboration/2.enable-publications.md +++ b/docs/tutorials/collaboration/2.enable-publications.md @@ -1,6 +1,6 @@ # Publications -You can publish/unpublish conversations, prompts (or even a collection of those) and applications, making them accessible within your organization. Additionally, you can manage access to the published [resources](../../architecture#resources), ensuring that the right information is accessible to the right individuals or teams. +You can publish/unpublish conversations, prompts (or even a collection of those) and applications, making them accessible within your organization. Additionally, you can manage access to the published [resources](/docs/architecture.md#resources), ensuring that the right information is accessible to the right individuals or teams. > Watch a [demo video](https://www.youtube.com/watch?v=GxdhfWLspa0) to see publication feature in action. @@ -10,9 +10,9 @@ Refer to [AI DIAL API](https://epam-rail.com/dial_api#tag/Publications) to view ### User Flow -You can publish resources such as conversations, prompts, files or applications by calling [/v1/ops/publication/create](https://epam-rail.com/dial_api#tag/Publications/paths/~1v1~1ops~1publication~1create/post) to create a publication request. You can also create a mixed publication request, in which you can pass various resources in the request body with different action types. For example, you can pass a collection of new prompts with action type `ADD` and another collection of prompts with action type `DELETE`. This way you can **publish** one set of prompts and **unpublish** the other. Similarly, you can handle other [resource types](../../architecture#resources). +You can publish resources such as conversations, prompts, files or applications by calling [/v1/ops/publication/create](https://epam-rail.com/dial_api#tag/Publications/paths/~1v1~1ops~1publication~1create/post) to create a publication request. You can also create a mixed publication request, in which you can pass various resources in the request body with different action types. For example, you can pass a collection of new prompts with action type `ADD` and another collection of prompts with action type `DELETE`. This way you can **publish** one set of prompts and **unpublish** the other. Similarly, you can handle other [resource types](/docs/architecture.md#resources). -In the response, you get an object with the `PENDING` status, which is awaiting the action from the admin: approve or reject. While your request is pending, you can delete it by calling [/v1/ops/publication/delete](#) endpoint. +In the response, you get an object with the `PENDING` status, which is awaiting the action from the admin: approve or reject. While your request is pending, you can delete it by calling [/v1/ops/publication/delete](https://epam-rail.com/dial_api#tag/Publications/paths/~1v1~1ops~1publication~1delete/post) endpoint. ### Admin Flow @@ -35,13 +35,13 @@ The effective access rules for a folder structure can be described as follows: ## DIAL Chat -Refer to [user guide](../../user-guide#flow) to learn how chat users can use publications for conversations, prompts and applications. +Refer to [user guide](/docs/user-guide.md#flow) to learn how chat users can use publications for conversations, prompts and applications. To enable the publication feature in AI DIAL Chat: ### Step 1: Users -Create user hierarchy (including claims) in your identity service provider (IDP) and configure AI DIAL to work with it. Refer to [Web Auth](../../Auth/Web/overview) to view the supported IDPs and configuration guidelines. +Create user hierarchy (including claims) in your identity service provider (IDP) and configure AI DIAL to work with it. Refer to [Web Auth](/docs/Auth/2.%20Web/1.overview.md) to view the supported IDPs and configuration guidelines. ### Step 2: AI DIAL Core diff --git a/docs/tutorials/collaboration/3.sharing.md b/docs/tutorials/collaboration/3.sharing.md index 55b21cb9..5d604bf1 100644 --- a/docs/tutorials/collaboration/3.sharing.md +++ b/docs/tutorials/collaboration/3.sharing.md @@ -2,7 +2,7 @@ ## Introduction -In AI DIAL, [resources](../../architecture#resources) refers to conversations, prompts, files, and applications. When a resource is created or uploaded to DIAL, it is stored in a dedicated [storage bucket](../../architecture#persistent-layer). You can share these resources with other users or applications. The sharing functionality is available through both the DIAL API and the AI DIAL Chat UI. +In AI DIAL, [resources](/docs/architecture.md#resources) refers to conversations, prompts, files, and applications. When a resource is created or uploaded to DIAL, it is stored in a dedicated [storage bucket](/docs/architecture.md#persistent-layer). You can share these resources with other users or applications. The sharing functionality is available through both the DIAL API and the AI DIAL Chat UI. ## DIAL API @@ -10,7 +10,7 @@ There are two sides in the sharing process: the resource owner and the resource ### Endpoints for resource owners -* `/create`: resource owners can use this endpoint to share a resource by creating an `invitationLink` which includes an `invitationId`. On top of that, you can grant **read** or **write** access to your resource. **Note**: If an app/user changes the shared resource, HTTP **etag** is used by AI DIAL Core to determine versioning and resolve conflicts. You can use [Subscription API](/tutorials/collaboration/notifications#subscriptions) to get notifications about changes made by other users or applications. Refer to [DIAL API](https://epam-rail.com/dial_api#tag/Sharing/paths/~1v1~1ops~1resource~1share~1create/post) to view examples. **Limitations**: the system does not support getting all the recipients of a shared resource. +* `/create`: resource owners can use this endpoint to share a resource by creating an `invitationLink` which includes an `invitationId`. On top of that, you can grant **read** or **write** access to your resource. **Note**: If an app/user changes the shared resource, HTTP **etag** is used by AI DIAL Core to determine versioning and resolve conflicts. You can use [Subscription API](/docs/tutorials/collaboration/4.notifications.md#subscriptions) to get notifications about changes made by other users or applications. Refer to [DIAL API](https://epam-rail.com/dial_api#tag/Sharing/paths/~1v1~1ops~1resource~1share~1create/post) to view examples. **Limitations**: the system does not support getting all the recipients of a shared resource. * `/copy`: this endpoint is used you need to add permissions to users for a new resource. For example, if you have a conversation with attachments that has been shared, and you decide to add another attachment, this endpoint ensures that other users can access the updated shared resource with the new attachment included. * `/list`: use this endpoint to query the details of all resources that were shared by you. In the request body, provide `others` as `with` parameter value to do that. Refer to [DIAL API](https://epam-rail.com/dial_api#tag/Sharing/paths/~1v1~1ops~1resource~1share~1list/post) to view examples. **Note**, that in case you share a conversation with attachments, attachments are shared as well, but they will appear in the response as a separate shared resources. * `/revoke`: this endpoint is used when you need to stop sharing a resource. By using this endpoint to unshare a resource, the shared content becomes inaccessible to all recipients who previously had access, and any invitation link associated with it will no longer be valid for future use. Refer to [DIAL API](https://epam-rail.com/dial_api#tag/Sharing/paths/~1v1~1ops~1resource~1share~1revoke/post) to view examples. @@ -44,9 +44,9 @@ Chat users can share their resources with others, accept sharing invitations, an Refer to AI DIAL Chat user guide for details: -* [Conversations/Share](../../user-guide#share) -* [Conversations/Unshare](../../user-guide#unshare) -* [Prompts/Share](../../user-guide#share-1) -* [Prompts/Unshare](../../user-guide#unshare-1) -* [Attachments Manager](../../user-guide#attachments-manager) +* [Conversations/Share](/docs/user-guide.md#share) +* [Conversations/Unshare](/docs/user-guide.md#unshare) +* [Prompts/Share](/docs/user-guide.md#share-1) +* [Prompts/Unshare](/docs/user-guide.md#unshare-1) +* [Attachments Manager](/docs/user-guide.md#attachments-manager) diff --git a/docs/tutorials/collaboration/4.notifications.md b/docs/tutorials/collaboration/4.notifications.md index e9148e62..7684d97f 100644 --- a/docs/tutorials/collaboration/4.notifications.md +++ b/docs/tutorials/collaboration/4.notifications.md @@ -8,7 +8,7 @@ AI DIAL API support two slightly different types of notifications: notifications ## Notification API -You can use [Notification API](https://epam-rail.com/dial_api#tag/Notifications/paths/~1v1~1ops~1notification~1list/post) to receive notifications about changes in specific **workflows** such as [publications](enable-publications). For example, when a publication request has been approved or rejected. +You can use [Notification API](https://epam-rail.com/dial_api#tag/Notifications/paths/~1v1~1ops~1notification~1list/post) to receive notifications about changes in specific **workflows** such as [publications](/docs/tutorials/collaboration/2.enable-publications.md). For example, when a publication request has been approved or rejected. Notification API allows [getting all your notifications](https://epam-rail.com/dial_api#tag/Notifications/paths/~1v1~1ops~1notification~1list/post) and [deleting](https://epam-rail.com/dial_api#tag/Notifications/paths/~1v1~1ops~1notification~1delete/post) them. diff --git a/docs/tutorials/copilot-to-dial.md b/docs/tutorials/copilot-to-dial.md index e6c06e3b..6de509ea 100644 --- a/docs/tutorials/copilot-to-dial.md +++ b/docs/tutorials/copilot-to-dial.md @@ -6,6 +6,8 @@ AI DIAL is an open platform designed to avoid vendor lock-in, enabling seamless This document provides a detailed guide on how to create a MS Power Platform connector for AI DIAL. This connector can be used in MS Copilot Studio prompt flows, facilitating smooth interaction between the systems for creating comprehensive business solutions. +> Watch a [demo video](/docs/video%20demos/demos/13.dial-copilot.md) to see this integration in action. + There are two authentication types available for AI DIAL: * API key diff --git a/docs/tutorials/data-visualization.md b/docs/tutorials/data-visualization.md index 8e9aae85..83ae5f01 100644 --- a/docs/tutorials/data-visualization.md +++ b/docs/tutorials/data-visualization.md @@ -17,13 +17,13 @@ You can use the [DIAL SDK](https://github.com/epam/ai-dial-sdk) to create custom This can include attachments with documents and images, stages, and other types of data compatible with the [MIME standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). Refer to the Custom Content section to learn more. -Watch a [demo video](../video%20demos/demos/animated-scatterplot) to see how statistical data can be visualized in AI DIAL Chat using a Plotly animated scatterplot, or view a demo video of the [Omics AI Assistant](../video%20demos/demos/dial-omics-assistant) to see how protein structures can be visualized with Plotly. +Watch a [demo video](/docs/video%20demos/demos/animated-scatterplot.md) to see how statistical data can be visualized in AI DIAL Chat using a Plotly animated scatterplot, or view a demo video of the [Omics AI Assistant](/docs/video%20demos/demos/dial-omics-assistant.md) to see how protein structures can be visualized with Plotly. ## Visualizers We call Visualizers special applications that are used for rendering a specific type of content in AI DIAL Chat UI. You can use [DIAL Chat Visualizer Connector](https://github.com/epam/ai-dial-chat/blob/development/libs/chat-visualizer-connector/README.md) library to create your custom visualizers for specific types of content. -Watch a [demo video](../video%20demos/demos-for-developers/dial-data-viz) to view how a financial data can be visualized in AI DIAL Chat. +Watch a [demo video](/docs/video%20demos/demos-for-developers/7.dial-data-viz.md) to view how a financial data can be visualized in AI DIAL Chat. ## Create Custom Visualizer diff --git a/docs/tutorials/enable-publications.md b/docs/tutorials/enable-publications.md index c1f228ca..bf49136d 100644 --- a/docs/tutorials/enable-publications.md +++ b/docs/tutorials/enable-publications.md @@ -2,7 +2,7 @@ You can publish/unpublish conversations and prompts, or even a collection of those, making them accessible within your organization. Additionally, you can manage access to the published resources, ensuring that the right information is accessible to the right individuals or teams. -> Watch [Publications](../video%20demos/demos/dial-publications) demo video to learn more about collaboration features in AI DIAL. +> Watch [Publications](/docs/video%20demos/demos/6.dial-publications.md) demo video to learn more about collaboration features in AI DIAL. ## DIAL API @@ -35,13 +35,13 @@ The effective access rules for a folder structure can be described as follows: ## DIAL Chat -Refer to [user guide](../user-guide#flow) to learn how chat users can use publications for conversations and prompts. +Refer to [user guide](/docs/user-guide.md#flow) to learn how chat users can use publications for conversations and prompts. To enable the publication feature in AI DIAL Chat: ### Step 1: Users -Create user hierarchy (including claims) in your identity service provider (IDP) and configure AI DIAL to work with it. Refer to [Web Auth](../Auth/Web/overview) to view the supported IDPs and configuration guidelines. +Create user hierarchy (including claims) in your identity service provider (IDP) and configure AI DIAL to work with it. Refer to [Web Auth](/docs/Auth/2.%20Web/1.overview.md) to view the supported IDPs and configuration guidelines. ### Step 2: AI DIAL Core diff --git a/docs/tutorials/interceptors.md b/docs/tutorials/interceptors.md index 9319e592..e48ab9a2 100644 --- a/docs/tutorials/interceptors.md +++ b/docs/tutorials/interceptors.md @@ -6,7 +6,7 @@ Interceptors can be seen as a middleware that modifies incoming or outgoing requ For example, interceptors can block requests that violate specific regulations, related to restricted domains, or potentially lead to data leaks or biased responses. Another use case is when interceptors allow applications or models to respond solely to specific subjects and anonymize Personally Identifiable Information (PII) from user requests, or cache LLM responses. -> Watch a [demo video](../../video%20demos/demos/interceptors) to learn more about interceptors. +> Watch a [demo video](/docs/video%20demos/demos/4.interceptors.md) to learn more about interceptors. Technically speaking, interceptors in AI DIAL are components inserted into deployments (applications or model adapters) that can be called before or after [chat completion requests](https://epam-rail.com/dial_api#/paths/~1openai~1deployments~1%7BDeployment%20Name%7D~1chat~1completions/post). @@ -37,7 +37,7 @@ Client -> (original request) -> Client ``` -AI DIAL Core manages chat completion requests from interceptors through the endpoint: `/openai/deployments/interceptor/chat/completions`. It uses the reserved deployment name `interceptor` to handle requests from all interceptors. Upon receiving a request, it identifies the next interceptor based on its [per-request API key](../Roles%20and%20Access%20Control/API%20Keys#per-request-keys). The final interceptor in the sequence is always the target deployment (application, model). +AI DIAL Core manages chat completion requests from interceptors through the endpoint: `/openai/deployments/interceptor/chat/completions`. It uses the reserved deployment name `interceptor` to handle requests from all interceptors. Upon receiving a request, it identifies the next interceptor based on its [per-request API key](/docs/Roles%20and%20Access%20Control/3.API%20Keys.md#per-request-keys). The final interceptor in the sequence is always the target deployment (application, model). ## Interceptors SDK diff --git a/docs/tutorials/multimodality.md b/docs/tutorials/multimodality.md index 60349ed3..7c57f6ae 100644 --- a/docs/tutorials/multimodality.md +++ b/docs/tutorials/multimodality.md @@ -12,11 +12,11 @@ Working with different types of media is made available by supporting working wi ### Models -[AI DIAL Chat application](../user-guide#language-models) offers user interface for communication with the [Supported Models](../supported-models). +[AI DIAL Chat application](/docs/user-guide.md#language-models) offers user interface for communication with the [Supported Models](/docs/supported-models.md). Connection to LLMs is realized using so-called **adapters**. Refer to [OpenAI](https://github.com/epam/ai-dial-adapter-openai), [Bedrock](https://github.com/epam/ai-dial-adapter-bedrock/?tab=readme-ov-file#supported-models), [Vertex](https://github.com/epam/ai-dial-adapter-vertexai/?tab=readme-ov-file#supported-models) adapters to learn more about them and the supported models. You can use [DIAL SDK](https://github.com/epam/ai-dial-sdk) to create custom model adapters. -AI DIAL has adapters to a variety of text-to-text processing LLMs. Refer to [Supported Models](../supported-models) to view the list of supported models. +AI DIAL has adapters to a variety of text-to-text processing LLMs. Refer to [Supported Models](/docs/supported-models.md) to view the list of supported models. Regarding working with images: @@ -27,7 +27,7 @@ For audio/video-to-text tasks, AI DIAL has adapters for Gemini 1.5 Pro and Flash ### Applications -You can use [DIAL SDK](https://github.com/epam/ai-dial-sdk) to create custom applications, which are basically any custom logic with a conversation interface packaged as a ready-to-use solution. Refer to [Tutorials](./quick-start-with-application) to learn how to create a simple application or watch a [demo video](../video%20demos/demos-for-developers/develop-application). +You can use [DIAL SDK](https://github.com/epam/ai-dial-sdk) to create custom applications, which are basically any custom logic with a conversation interface packaged as a ready-to-use solution. Refer to [Tutorials](/docs/tutorials/quick-start-with-application.md) to learn how to create a simple application or watch a [demo video](/docs/video%20demos/demos-for-developers/5.develop-application.md). Such application can be designed and configured to use multimodal LLMs to perform specific tasks or even form an ecosystem of applications that can interact with each other. @@ -41,5 +41,5 @@ In the Cookbook section, you can find several examples: Besides creating an application which solves a specific multimodal task, you could create a generic application which is aware of multimodal DIAL models and is able to use them as tools to solve a given task. We call such generic applications orchestrators. -[DIAL ChatHub](../video%20demos/demos/dial-chathub) is an example of an orchestrator that combines several applications and models into one unified access point. ChatHub can automatically route prompts to one of several agents (text-to-text applications, text-to-image applications, vision-to-text applications) depending on the task that needs to be performed. For example, if a user asks about weather, the Web RAG agent is engaged, if a user wants to output an image based on the text input - a specific application handles this task that is connected with a corresponding model. All this is done while interacting with one ChatHub solution. +[DIAL ChatHub](/docs/video%20demos/demos/dial-chathub.md) is an example of an orchestrator that combines several applications and models into one unified access point. ChatHub can automatically route prompts to one of several agents (text-to-text applications, text-to-image applications, vision-to-text applications) depending on the task that needs to be performed. For example, if a user asks about weather, the Web RAG agent is engaged, if a user wants to output an image based on the text input - a specific application handles this task that is connected with a corresponding model. All this is done while interacting with one ChatHub solution. diff --git a/docs/tutorials/quick-start-model.md b/docs/tutorials/quick-start-model.md index 4db93576..fd19ec5b 100644 --- a/docs/tutorials/quick-start-model.md +++ b/docs/tutorials/quick-start-model.md @@ -10,7 +10,7 @@ In this tutorial, you will learn how to quickly launch AI DIAL Chat with a custo > Refer to [Docker](https://docs.docker.com/desktop/) documentation. 2. Account in MS Azure OpenAI Studio. - > Refer to [Create and Deploy OpenAI Model in Azure](/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy a model in your MS Azure. + > Refer to [Create and Deploy OpenAI Model in Azure](/docs/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy a model in your MS Azure. ## Step 1: Get AI DIAL @@ -34,7 +34,7 @@ In `config.json`, you can add your Azure model credentials to the chat configura ] ``` - > Refer to [Create and Deploy OpenAI Model in Azure](/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy a model in MS Azure. + > Refer to [Create and Deploy OpenAI Model in Azure](/docs/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy a model in MS Azure. ## Step 3: Launch AI DIAL Chat diff --git a/docs/tutorials/quick-start-with-addon.md b/docs/tutorials/quick-start-with-addon.md index 57ac91de..aa8f5997 100644 --- a/docs/tutorials/quick-start-with-addon.md +++ b/docs/tutorials/quick-start-with-addon.md @@ -33,7 +33,7 @@ Following this pattern, you can develop your own addons or use a third-party one > Refer to [Docker](https://docs.docker.com/desktop/) documentation. 2. Account in MS Azure OpenAI Studio. - > Refer to [Create and Deploy OpenAI Model in Azure](/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy an OpenAI model in MS Azure. + > Refer to [Create and Deploy OpenAI Model in Azure](/docs/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy an OpenAI model in MS Azure. 3. Addon. In this example, it is [To-Do List](https://github.com/openai/plugins-quickstart/) by OpenAI. @@ -68,7 +68,7 @@ Add you model credentials in the [config.json](https://github.com/epam/ai-dial/t ] ``` - > Refer to [Create and Deploy OpenAI Model in Azure](/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy an OpenAI model in MS Azure. + > Refer to [Create and Deploy OpenAI Model in Azure](/docs/Deployment/OpenAI%20Model%20Deployment.md) to learn how to create and deploy an OpenAI model in MS Azure. ### Configure Addon diff --git a/docs/tutorials/quick-start-with-application.md b/docs/tutorials/quick-start-with-application.md index e4fb5d33..480327e3 100644 --- a/docs/tutorials/quick-start-with-application.md +++ b/docs/tutorials/quick-start-with-application.md @@ -4,7 +4,7 @@ From this tutorial, you will learn how to create and deploy a simple Echo application for AI DIAL Chat. Echo application mirrors all user prompts. -> Watch a [demo video](../video%20demos/demos-for-developers/develop-application) to see in action how to develop a simple application. +> Watch a [demo video](/docs/video%20demos/demos-for-developers/5.develop-application.md) to see in action how to develop a simple application. > Take note that this document covers the most basic aspects of developing and testing AI DIAL applications. Deploying and distributing these applications for production purposes will require additional configurations that guarantee secure access to the application endpoints through the implementation of firewalls and other network security settings to prevent unauthorized intrusion to the deployed applications. diff --git a/docs/tutorials/quick-start-with-self-hosted-model.md b/docs/tutorials/quick-start-with-self-hosted-model.md index ef13f077..2e9043d8 100644 --- a/docs/tutorials/quick-start-with-self-hosted-model.md +++ b/docs/tutorials/quick-start-with-self-hosted-model.md @@ -4,7 +4,7 @@ In this tutorial, you will learn how to quickly launch AI DIAL Chat with a self-hosted model powered by [Ollama](https://ollama.com/). -> Watch a [demo video](../video%20demos/demos-for-developers/deploy-ollama) to see it in action. +> Watch a [demo video](/docs/video%20demos/demos-for-developers/4.deploy-ollama.md) to see it in action. ## Prerequisites diff --git a/docs/tutorials/rate-limits-users.md b/docs/tutorials/rate-limits-users.md deleted file mode 100644 index b52d8d2b..00000000 --- a/docs/tutorials/rate-limits-users.md +++ /dev/null @@ -1,60 +0,0 @@ -# How to Configure Rate Limits for Chat Users - -## Overview - -In AI DIAL, you can limit the number of tokens that chat users can send to an LLM within a certain time period. These restrictions are implemented via user roles. You can create user roles for your users in your IDP system and then apply limits for these roles in AI DIAL configuration. - -> Besides rate limitations, you can use roles to manage access to models, applications, assistants and addons. - -1. Configure any of the supported identity providers and then add a configuration to AI DIAL Core and AI DIAL Chat to work with it. - -> Refer to [Auth0](https://docs.epam-rail.com/Deployment/idp-configuration/auth0), [AWS Cognito](https://docs.epam-rail.com/Deployment/idp-configuration/cognito), [MS Entra](https://docs.epam-rail.com/Deployment/idp-configuration/entraID), [Google OAuth2](https://docs.epam-rail.com/Deployment/idp-configuration/google), [Keycloak](https://docs.epam-rail.com/Deployment/idp-configuration/keycloak), [Okta](https://docs.epam-rail.com/Deployment/idp-configuration/okta) to view how to enable them as an identity and access management solution for AI DIAL users. - -2. Once you have your roles defined in AI DIAL Core and assigned to the desired models, applications, assistants and addons, you can specify limits for these roles. - -## Example - -For example purposes, lets configure rate limits for AI DIAL Chat users with user roles managed in Microsoft Entra. - -1. [Configure Microsoft Entra](https://docs.epam-rail.com/Deployment/idp-configuration/entraID#configure-microsoft-entra-id): create application, client secret, and user group. -2. [Configure AI DIAL Chat](https://docs.epam-rail.com/Deployment/idp-configuration/entraID#ai-dial-chat-settings) to work with MS Entra. -3. [Configure AI DIAL Core](https://docs.epam-rail.com/Deployment/idp-configuration/entraID#ai-dial-core-settings) to work with MS Entra. -4. [Assign roles](https://docs.epam-rail.com/Deployment/idp-configuration/entraID#assignment-of-roles) you have created in MS Entra to a selected model in AI DIAL Core configuration. In this example, "azure-group-name" role from the "groups" claim is configured for chat-gpt-35-turbo model: - - ```json - "models": { - "chat-gpt-35-turbo": { - "type": "chat", - "endpoint" : "http://localhost:7001/v1/openai/deployments/gpt-35-turbo/chat/completions", - "upstreams": [ - {"endpoint": "http://localhost:7001", "key": "modelKey1"} - ], - "userRoles": ["azure-group-name"] - } - } - ``` -5. In AI DIAL Core configuration file, in the `roles` section, add your role ("azure-group-name") and limits for it. Refer to [configuration example](https://github.com/epam/ai-dial-core/blob/9d7e3ba8380ffea3b9b6a7ccd65a96f024e842e3/sample/aidial.config.json#L191) for example purposes. For `roles..limits` you can configure `minute` (total tokens per minute limit sent to the model, managed via floating window approach for well-distributed rate limiting. If it's not set the default value is unlimited), `day` (total tokens per day limit sent to the model, managed via floating window approach for balanced rate limiting. If it's not set the default value is unlimited), `week` and `month` accordingly. - - > The `default` role applies in case other roles are not configured. - > In case the same user has different roles with different limits, the role with the higher limit is an effective role. - - ```json - "roles": { - "azure-group-name": { - "limits": { - "chat-gpt-35-turbo": { - "minute": "200000", - "day": "10000000" - } - } - }, - "default": { - "limits": { - "chat-gpt-35-turbo": { - "minute": "200000", - "day": "10000000" - } - } - }, - } - ``` diff --git a/docs/tutorials/realtime-analytics.md b/docs/tutorials/realtime-analytics.md index 6d5167ea..57aad67d 100644 --- a/docs/tutorials/realtime-analytics.md +++ b/docs/tutorials/realtime-analytics.md @@ -4,10 +4,10 @@ [DIAL Core](https://github.com/epam/ai-dial-core) collects **system logs** and **chat completion logs**: -* System logs do not include any user data and contain logs of all requests from system components to AI DIAL Core (using the ELK stack (Elasticsearch, Logstash, Kibana) or other log collection system). Refer to [Observability](../Observability) to learn about logs, metrics and traces supported in AI DIAL. +* System logs do not include any user data and contain logs of all requests from system components to AI DIAL Core (using the ELK stack (Elasticsearch, Logstash, Kibana) or other log collection system). Refer to [Observability](/docs/Observability/Observability.md) to learn about logs, metrics and traces supported in AI DIAL. * [Chat completion requests](https://epam-rail.com/dial_api#/paths/~1openai~1deployments~1%7BDeployment%20Name%7D~1chat~1completions/post) logs include information that users send in their requests to LLMs and the information they get in responses. -[AI DIAL setup](../architecture#full-platform-landscape) can include a special service called DIAL Analytics Realtime, which uses diverse techniques such as embedding algorithms, clustering algorithms, frameworks, light-weight self-hosted language models, to analyze **chat completion logs** and extract the needed information, which can be presented in tools such as Grafana for visualization and analytics. +[AI DIAL setup](/docs/architecture.md#full-platform-landscape) can include a special service called DIAL Analytics Realtime, which uses diverse techniques such as embedding algorithms, clustering algorithms, frameworks, light-weight self-hosted language models, to analyze **chat completion logs** and extract the needed information, which can be presented in tools such as Grafana for visualization and analytics. > Refer to [Analytics Realtime](https://github.com/epam/ai-dial-analytics-realtime) repository to learn more and view the project source code. diff --git a/docs/user-guide.md b/docs/user-guide.md index 26d4a706..dc4038b7 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -4,7 +4,7 @@ AI DIAL Chat is a powerful enterprise-grade application that serves as a default web interface for users, providing access to the full set of AI DIAL features. -> * Watch a [demo video](../video%20demos/demos/dial-ui-basics) with introduction to AI DIAL Chat UI. +> * Watch a [demo video](/docs/video%20demos/demos/2.dial-ui-basics.md) with introduction to AI DIAL Chat UI. > * Refer to [Quick Start](quick-start) to learn how to launch AI DIAL Chat in a few clicks. ### Additional Documentation @@ -18,10 +18,10 @@ Refer to [AI DIAL Chat repository](https://github.com/epam/ai-dial-chat) to view You can also refer to other topics in this documentation: -* Chat localization [instruction](/tutorials/localization). -* List of [supported LLMs](/supported-models). -* Chat UI design [guidelines](/chat-design). -* Authentication [guidelines](/Auth/Web/overview). +* Chat localization [instruction](/docs/tutorials/localization.md). +* List of [supported LLMs](/docs/supported-models.md). +* Chat UI design [guidelines](/docs/chat-design.md). +* Authentication [guidelines](/docs/Auth/2.%20Web/1.overview.md). ## Interface Components @@ -287,7 +287,7 @@ Let's create a simple Travel Guide conversation, which will take a user though s You can create a parametrized conversation from any message in your chat. This scenario does not require having any pre-configured prompts. -> Watch a [demo video](../video%20demos/demos/dial-parameterized-replay) to see it in action. +> Watch a [demo video](/docs/video%20demos/demos/7.dial-parameterized-replay.md) to see it in action. 1. Within a conversation, you can set any message as a template for subsequent replay. Use **Set message template** to invoke the **Message template** window. @@ -344,7 +344,7 @@ As you can see on the picture above, the system creates two conversations with t You can publish conversations to make them available for the target audience. -> Watch [Publications](../video%20demos/demos/dial-publications) demo video to learn more about collaboration features in AI DIAL. +> Watch [Publications](/docs/video%20demos/demos/6.dial-publications.md) demo video to learn more about collaboration features in AI DIAL. > **Note**: to publish a shared conversation, [duplicate](#duplicate) it and then publish. @@ -542,7 +542,7 @@ Also, you can use a *selection* mode to choose prompt(s) you want to delete: You can share a prompt or a folder with several prompts with other users. -> Watch [Collaboration](../video%20demos/demos/dial-collaboration) demo video to learn more about sharing and other collaboration features in AI DIAL. +> Watch [Collaboration](/docs/video%20demos/demos/5.dial-collaboration.md) demo video to learn more about sharing and other collaboration features in AI DIAL. ##### To receive a shared prompt @@ -605,7 +605,7 @@ When importing a **duplicate** of an existing prompt, you will be asked to selec You can publish prompts to make them available for the target audience. -> Watch [Publications](../video%20demos/demos/dial-publications) demo video to learn more about collaboration features in AI DIAL. +> Watch [Publications](/docs/video%20demos/demos/6.dial-publications.md) demo video to learn more about collaboration features in AI DIAL. > **Note**: to publish a shared prompt, [duplicate](#duplicate-1) it and then publish. @@ -738,7 +738,7 @@ In the [DIAL Marketplace](#dial-marketplace) section, you can view all the model ![](./img/marketplace-home-select.png) -> Refer to [Supported Models](/supported-models) to view all the models supported in AI DIAL. +> Refer to [Supported Models](/docs/supported-models.md) to view all the models supported in AI DIAL.