Rewrite and consolidate configuration docs (#1581)

* Rewrite and consolidate configuration docs

* add link to filtering

* updates based on comments

* update lockfile

* update redirect

* spelling mistake

* update the noqa

* update links

* fix broken links

* lint fixes

* address comments

* update wording about model selection

* update cache_seed and json pattern

* add periods

* Update the config json func and other small changes

* update wording of json string

* update intro

* update description of caching

* fix link

* spelling mistake

* fix llm config

* Update website/docs/llm_configuration.ipynb

Co-authored-by: gagb <gagb@users.noreply.github.com>

* Add examples back as notebook

---------

Co-authored-by: gagb <gagb@users.noreply.github.com>
Co-authored-by: Aaron <aaronlaptop12@hotmail.com>
This commit is contained in:
Jack Gerrits 2024-02-11 13:04:43 -05:00 committed by GitHub
parent e83de5d008
commit b4a2c6e26f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 598 additions and 427 deletions

View File

@ -103,7 +103,7 @@
"source": [
"\\:\\:\\:tip\n",
"\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_endpoint_configuration).\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_configuration).\n",
"\n",
"\\:\\:\\:"
]

View File

@ -61,7 +61,7 @@
"source": [
"\\:\\:\\:tip\n",
"\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_endpoint_configuration).\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_configuration).\n",
"\n",
"\\:\\:\\:"
]

View File

@ -102,7 +102,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -103,7 +103,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -61,7 +61,7 @@
"source": [
"\\:\\:\\:tip\n",
"\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_endpoint_configuration).\n",
"Learn more about the various ways to configure LLM endpoints [here](/docs/llm_configuration).\n",
"\n",
"\\:\\:\\:"
]

View File

@ -106,7 +106,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -107,7 +107,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -101,7 +101,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -93,7 +93,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -110,7 +110,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -102,7 +102,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -139,7 +139,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -62,7 +62,7 @@
"]\n",
"```\n",
"\n",
"Currently Azure OpenAI does not support assistant api. You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"Currently Azure OpenAI does not support assistant api. You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -102,7 +102,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -82,7 +82,7 @@
"]\n",
"```\n",
"\n",
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_endpoint_configuration.ipynb) for full code examples of the different methods."
"You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/website/docs/llm_configuration.ipynb) for full code examples of the different methods."
]
},
{

View File

@ -4,100 +4,36 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"custom_edit_url: https://github.com/microsoft/autogen/edit/main/website/docs/llm_endpoint_configuration.ipynb\n",
"---\n",
"# Config loader utility functions\n",
"\n",
"# LLM Endpoint Configuration\n",
"\n",
"## TL;DR\n",
"\n",
"For just getting started with AutoGen you can use the following to define your LLM endpoint configuration:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import autogen\n",
"\n",
"config_list = [{\"model\": \"gpt-4\", \"api_key\": \"YOUR_OPENAI_API_KEY\"}]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\:\\:\\:danger \n",
"\n",
"Never commit secrets into your code. Before committing, change the code to use a different way of providing your API keys as described below.\n",
"\n",
"\\:\\:\\:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## In-depth\n",
"For an introduction to configuring LLMs, refer to the [main configuration docs](https://microsoft.github.io/autogen/docs/llm_configuration). This guide will run through examples of the more advanced utility functions for managing API configurations.\n",
"\n",
"Managing API configurations can be tricky, especially when dealing with multiple models and API versions. The provided utility functions assist users in managing these configurations effectively. Ensure your API keys and other sensitive data are stored securely. You might store keys in `.txt` or `.env` files or environment variables for local development. Never expose your API keys publicly. If you insist on storing your key files locally on your repo (you shouldn't), ensure the key file path is added to the `.gitignore` file.\n",
"\n",
"### Steps:\n",
"## Storing API keys\n",
"\n",
"1. Obtain API keys from OpenAI and optionally from Azure OpenAI (or other provider).\n",
"2. Store them securely using either:\n",
" - Environment Variables: `export OPENAI_API_KEY='your-key'` in your shell.\n",
" - Text File: Save the key in a `key_openai.txt` file.\n",
" - Env File: Save the key to a `.env` file eg: `OPENAI_API_KEY=sk-********************`\n",
"3. [Ensure `pyautogen` is installed](./installation/Installation.mdx)\n",
"\n",
"There are many ways to generate a `config_list` depending on your use case:\n",
"## Utility functions\n",
"\n",
"- `get_config_list`: Generates configurations for API calls, primarily from provided API keys.\n",
"- `config_list_openai_aoai`: Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files.\n",
"- `config_list_from_json`: Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria.\n",
"- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.\n",
"- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file.\n",
"There are several utility functions for loading LLM config lists that may be useful depending on the situation.\n",
"\n",
"If multiple models are provided, the Autogen client (`OpenAIWrapper`) and agents don't choose the \"best model\" on any criteria - inference is done through the very first model and the next one is used only if the current model fails (e.g. API throttling by the provider or a filter condition is unsatisfied)."
"- [`get_config_list`](#get_config_list): Generates configurations for API calls, primarily from provided API keys.\n",
"- [`config_list_openai_aoai`](#config_list_openai_aoai): Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files.\n",
"- [`config_list_from_json`](#config_list_from_json): Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria.\n",
"- [`config_list_from_models`](#config_list_from_models): Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.\n",
"- [`config_list_from_dotenv`](#config_list_from_dotenv): Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### What is a `config_list`?\n",
"When instantiating an assistant, such as the example below, it is passed a `config_list`. This is used to tell the `AssistantAgent` which models or configurations it has access to:\n",
"```python\n",
"\n",
"assistant = AssistantAgent(\n",
" name=\"assistant\",\n",
" llm_config={\n",
" \"timeout\": 600,\n",
" \"cache_seed\": 42,\n",
" \"config_list\": config_list,\n",
" \"temperature\": 0,\n",
" },\n",
")\n",
"```\n",
"\n",
"Consider an intelligent assistant that utilizes OpenAI's GPT models. Depending on user requests, it might need to:\n",
"\n",
"- Generate creative content (using gpt-4).\n",
"- Answer general queries (using gpt-3.5-turbo).\n",
"\n",
"Different tasks may require different models, and the `config_list` aids in dynamically selecting the appropriate model configuration, managing API keys, endpoints, and versions for efficient operation of the intelligent assistant. In summary, the `config_list` helps the agents work efficiently, reliably, and optimally by managing various configurations and interactions with the OpenAI API - enhancing the adaptability and functionality of the agents."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## get_config_list\n",
"### get_config_list\n",
"\n",
"Used to generate configurations for API calls."
]
@ -116,6 +52,8 @@
}
],
"source": [
"import autogen\n",
"\n",
"api_keys = [\"YOUR_OPENAI_API_KEY\"]\n",
"base_urls = None # You can specify API base URLs if needed. eg: localhost:8000\n",
"api_type = \"openai\" # Type of API, e.g., \"openai\" or \"aoai\".\n",
@ -130,7 +68,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## config_list_openai_aoai\n",
"### config_list_openai_aoai\n",
"\n",
"This method creates a list of configurations using Azure OpenAI endpoints and OpenAI endpoints. It tries to extract API keys and bases from environment variables or local text files.\n",
"\n",
@ -165,7 +103,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## config_list_from_json\n",
"### config_list_from_json\n",
"\n",
"This method loads configurations from an environment variable or a JSON file. It provides flexibility by allowing users to filter configurations based on certain criteria.\n",
"\n",
@ -215,86 +153,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"#### What is `filter_dict`?\n",
"\n",
"The z parameter in `autogen.config_list_from_json` function is used to selectively filter the configurations loaded from the environment variable or JSON file based on specified criteria. It allows you to define criteria to select only those configurations that match the defined conditions.\n",
"\n",
"let's say you want to configure an assistant agent to only LLM type. Take the below example: even though we have \"gpt-3.5-turbo\" and \"gpt-4\" in our `OAI_CONFIG_LIST`, this agent would only be configured to use"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"cheap_config_list = autogen.config_list_from_json(\n",
" env_or_file=\"OAI_CONFIG_LIST\",\n",
" filter_dict={\n",
" \"model\": {\n",
" \"gpt-3.5-turbo\",\n",
" }\n",
" },\n",
")\n",
"\n",
"costly_config_list = autogen.config_list_from_json(\n",
" env_or_file=\"OAI_CONFIG_LIST\",\n",
" filter_dict={\n",
" \"model\": {\n",
" \"gpt-4\",\n",
" }\n",
" },\n",
")\n",
"\n",
"# Assistant using GPT 3.5 Turbo\n",
"assistant_one = autogen.AssistantAgent(\n",
" name=\"3.5-assistant\",\n",
" llm_config={\n",
" \"timeout\": 600,\n",
" \"cache_seed\": 42,\n",
" \"config_list\": cheap_config_list,\n",
" \"temperature\": 0,\n",
" },\n",
")\n",
"\n",
"# Assistant using GPT 4\n",
"assistant_two = autogen.AssistantAgent(\n",
" name=\"4-assistant\",\n",
" llm_config={\n",
" \"timeout\": 600,\n",
" \"cache_seed\": 42,\n",
" \"config_list\": costly_config_list,\n",
" \"temperature\": 0,\n",
" },\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the `OAI_CONFIG_LIST` we set earlier, there isn't much to filter on. But when the complexity of a project grows and you're managing multiple models for various purposes, you can see how `filter_dict` can be useful. \n",
"\n",
"A more complex filtering criteria could be the following: Assuming we have an `OAI_CONFIG_LIST` several models used to create various agents - Let's say we want to load configurations for `gpt-4` using API version `\"2023-03-01-preview\"` and we want the `api_type` to be `aoai`, we can set up `filter_dict` as follows:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"config_list = autogen.config_list_from_json(\n",
" env_or_file=\"OAI_CONFIG_LIST\",\n",
" filter_dict={\"model\": {\"gpt-4\"}, \"api_version\": {\"2023-03-01-preview\"}, \"api_type\": [\"aoai\"]},\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## config_list_from_models\n",
"### config_list_from_models\n",
"\n",
"This method creates configurations based on a provided list of models. It's useful when you have specific models in mind and don't want to manually specify each configuration. The [`config_list_from_models`](/docs/reference/oai/openai_utils#config_list_from_models) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints for the provided list of models. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files. It's okay to only have the OpenAI API key, OR only the Azure OpenAI API key + base. For Azure the model name refers to the OpenAI Studio deployment name.\n",
"\n",
@ -322,7 +181,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## config_list_from_dotenv\n",
"### config_list_from_dotenv\n",
"\n",
"If you are interested in keeping all of your keys in a single location like a `.env` file rather than using a configuration specifically for OpenAI, you can use `config_list_from_dotenv`. This allows you to conveniently create a config list without creating a complex `OAI_CONFIG_LIST` file.\n",
"\n",
@ -499,13 +358,6 @@
"\n",
"config_list"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

View File

@ -52,7 +52,7 @@ Then after the code cell where this is used, include the following markdown snip
```
\:\:\:tip
Learn more about the various ways to configure LLM endpoints [here](/docs/llm_endpoint_configuration).
Learn more about the various ways to configure LLM endpoints [here](/docs/llm_configuration).
\:\:\:
```

2
website/.gitignore vendored
View File

@ -11,7 +11,7 @@ package-lock.json
docs/reference
/docs/notebooks
docs/llm_endpoint_configuration.mdx
docs/llm_configuration.mdx
# Misc
.DS_Store

View File

@ -89,7 +89,7 @@ Links to notebook examples:
## Enhanced Inferences
### Utilities
- API Unification - [View Documentation with Code Example](https://microsoft.github.io/autogen/docs/Use-Cases/enhanced_inference/#api-unification)
- Utility Functions to Help Managing API configurations effectively - [View Notebook](/docs/llm_endpoint_configuration)
- Utility Functions to Help Managing API configurations effectively - [View Notebook](/docs/llm_configuration)
- Cost Calculation - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_client_cost.ipynb)
### Inference Hyperparameters Tuning

View File

@ -21,67 +21,15 @@
## Set your API endpoints
Autogen relies on 3rd party API endpoints for LLM inference. It works great with OpenAI and Azure OpenAI models, and can work with any model (self-hosted or local) that is accessible through an inference server compatible with OpenAI Chat Completions API.
An agent requires a list of configuration dictionaries for setting up model endpoints. Each configuration dictionary can contain the following keys:
- `model` (str): Required. The identifier of the model to be used, such as 'gpt-4', 'gpt-3.5-turbo', or 'llama-7B'.
- `api_key` (str): Optional. The API key required for authenticating requests to the model's API endpoint.
- `api_type` (str): Optional. The type of API service being used. This could be 'azure' for Azure Cognitive Services, 'openai' for OpenAI, or other custom types.
- `base_url` (str): Optional. The base URL of the API endpoint. This is the root address where API calls are directed.
- `api_version` (str): Optional. The version of the Azure API you wish to use
For example:
```python
config_list = [
{
"model": "gpt-4",
"api_key": os.environ.get("AZURE_OPENAI_API_KEY"),
"api_type": "azure",
"base_url": os.environ.get("AZURE_OPENAI_API_BASE"),
"api_version": "2023-12-01-preview",
},
{
"model": "llama-7B",
"base_url": "http://127.0.0.1:8080",
"api_type": "openai",
}
]
```
In `autogen` module there are [multiple helper functions](/docs/reference/oai/openai_utils) allowing to construct configurations using different sources:
- `get_config_list`: Generates configurations for API calls, primarily from provided API keys.
- `config_list_openai_aoai`: Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files.
- `config_list_from_json`: Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria.
- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.
- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file.
We suggest that you take a look at this [notebook](/docs/llm_endpoint_configuration) for full code examples of the different methods to configure your model endpoints.
This documentation has been moved [here](/docs/llm_configuration).
### Use the constructed configuration list in agents
Make sure the "config_list" is included in the `llm_config` in the constructor of the LLM-based agent. For example,
```python
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={"config_list": config_list}
)
```
The `llm_config` is used in the [`create`](/docs/reference/oai/client#create) function for LLM inference.
When `llm_config` is not provided, the agent will rely on other openai settings such as `openai.api_key` or the environment variable `OPENAI_API_KEY`, which can also work when you'd like to use a single endpoint.
You can also explicitly specify that by:
```python
assistant = autogen.AssistantAgent(name="assistant", llm_config={"api_key": ...})
```
This documentation has been moved [here](/docs/llm_configuration).
### How does an agent decide which model to pick out of the list?
An agent uses the very first model available in the "config_list" and makes LLM calls against this model. If the model fail (e.g. API throttling) the agent will retry the request against the 2nd model and so on until prompt completion is received (or throws an error if none of the models successfully completes the request). There's no implicit/hidden logic inside agents that is used to pick "the best model for the task". It is developers responsibility to pick the right models and use them with agents.
Besides throttling/rotating models the 'config_list' can be useful for:
- Having a single global list of models and [filtering it](/docs/reference/oai/openai_utils/#filter_config) based on certain keys (e.g. name, tag) in order to pass select models into a certain agent (e.g. use cheaper GPT 3.5 for agents solving easier tasks)
- Using more advanced features for special purposes related to inference, such as `filter_func` with [`OpenAIWrapper`](/docs/reference/oai/client#create) or [inference optimization](/docs/Examples#enhanced-inferences)
This documentation has been moved [here](/docs/llm_configuration#how-does-an-agent-decide-which-model-to-pick-out-of-the-list).
### Unexpected keyword argument 'base_url'

View File

@ -18,7 +18,7 @@ AutoGen is powered by collaborative [research studies](/docs/Research) from Micr
### Quickstart
Install from pip: `pip install pyautogen`. Find more options in [Installation](/docs/Installation).
Install from pip: `pip install pyautogen`. Find more options in [Installation](/docs/installation/).
For [code execution](/docs/FAQ#code-execution), we strongly recommend installing the python docker package, and using docker.
#### Multi-Agent Conversation Framework

View File

@ -279,7 +279,7 @@ For convenience, we provide a number of utility functions to load config lists.
- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.
- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file.
We suggest that you take a look at this [notebook](/docs/llm_endpoint_configuration) for full code examples of the different methods to configure your model endpoints.
We suggest that you take a look at this [notebook](/docs/llm_configuration) for full code examples of the different methods to configure your model endpoints.
### Logic error

View File

@ -0,0 +1,346 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"custom_edit_url: https://github.com/microsoft/autogen/edit/main/website/docs/llm_configuration.ipynb\n",
"---\n",
"\n",
"# LLM Configuration\n",
"\n",
"In AutoGen, agents use LLMs as key components to understand and react. To configure an agent's access to LLMs, you can specify an `llm_config` argument in its constructor. For example, the following snippet shows a configuration that uses `gpt-4`:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"\n",
"llm_config = {\n",
" \"config_list\": [{\"model\": \"gpt-4\", \"api_key\": os.environ[\"OPENAI_API_KEY\"]}],\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"````{=mdx}\n",
":::warning\n",
"It is important to never commit secrets into your code, therefore we read the OpenAI API key from an environment variable.\n",
":::\n",
"````\n",
"\n",
"This `llm_config` can then be passed to an agent's constructor to enable it to use the LLM."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import autogen # noqa: E402\n",
"\n",
"assistant = autogen.AssistantAgent(name=\"assistant\", llm_config=llm_config)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Introduction to `config_list`\n",
"\n",
"Different tasks may require different models, and the `config_list` allows specifying the different endpoints and configurations that are to be used. It is a list of dictionaries, each of which contains the following keys depending on the kind of endpoint being used:\n",
"\n",
"````{=mdx}\n",
"import Tabs from '@theme/Tabs';\n",
"import TabItem from '@theme/TabItem';\n",
"\n",
"<Tabs>\n",
" <TabItem value=\"openai\" label=\"OpenAI\" default>\n",
" - `model` (str, required): The identifier of the model to be used, such as 'gpt-4', 'gpt-3.5-turbo'.\n",
" - `api_key` (str, optional): The API key required for authenticating requests to the model's API endpoint.\n",
" - `base_url` (str, optional): The base URL of the API endpoint. This is the root address where API calls are directed.\n",
" - `tags` (List[str], optional): Tags which can be used for filtering.\n",
"\n",
" Example:\n",
" ```json\n",
" [\n",
" {\n",
" \"model\": \"gpt-4\",\n",
" \"api_key\": os.environ['OPENAI_API_KEY']\n",
" }\n",
" ]\n",
" ```\n",
" </TabItem>\n",
" <TabItem value=\"azureopenai\" label=\"Azure OpenAI\">\n",
" - `model` (str, required): The identifier of the model to be used, such as 'gpt-4', 'gpt-3.5-turbo'.\n",
" - `api_key` (str, optional): The API key required for authenticating requests to the model's API endpoint.\n",
" - `api_type`: `azure`\n",
" - `base_url` (str, optional): The base URL of the API endpoint. This is the root address where API calls are directed.\n",
" - `api_version` (str, optional): The version of the Azure API you wish to use.\n",
" - `tags` (List[str], optional): Tags which can be used for filtering.\n",
"\n",
" Example:\n",
" ```json\n",
" [\n",
" {\n",
" \"model\": \"gpt-4\",\n",
" \"api_type\": \"azure\",\n",
" \"api_key\": os.environ['AZURE_OPENAI_API_KEY'],\n",
" \"base_url\": \"https://ENDPOINT.openai.azure.com/\",\n",
" \"api_version\": \"2023-03-15-preview\"\n",
" }\n",
" ]\n",
" ```\n",
" </TabItem>\n",
" <TabItem value=\"other\" label=\"Other OpenAI compatible\">\n",
" - `model` (str, required): The identifier of the model to be used, such as 'llama-7B'.\n",
" - `api_key` (str, optional): The API key required for authenticating requests to the model's API endpoint.\n",
" - `base_url` (str, optional): The base URL of the API endpoint. This is the root address where API calls are directed.\n",
" - `tags` (List[str], optional): Tags which can be used for filtering.\n",
"\n",
" Example:\n",
" ```json\n",
" [\n",
" {\n",
" \"model\": \"llama-7B\",\n",
" \"base_url\": \"http://localhost:1234\"\n",
" }\n",
" ]\n",
" ```\n",
" </TabItem>\n",
"</Tabs>\n",
"````\n",
"\n",
"---\n",
"\n",
"````{=mdx}\n",
":::tip\n",
"By default this will create a model client which assumes an OpenAI API (or compatible) endpoint. To use custom model clients, see [here](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_custom_model.ipynb).\n",
":::\n",
"````\n",
"\n",
"### `OAI_CONFIG_LIST` pattern\n",
"\n",
"A common, useful pattern used is to define this `config_list` is via JSON (specified as a file or an environment variable set to a JSON-formatted string) and then use the [`config_list_from_json`](/docs/reference/oai/openai_utils#config_list_from_json) helper function to load it:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"config_list = autogen.config_list_from_json(\n",
" env_or_file=\"OAI_CONFIG_LIST\",\n",
")\n",
"\n",
"# Then, create the assistant agent with the config list\n",
"assistant = autogen.AssistantAgent(name=\"assistant\", llm_config={\"config_list\": config_list})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This can be helpful as it keeps all the configuration in one place across different projects or notebooks.\n",
"\n",
"This function interprets the `env_or_file` argument as follows:\n",
"\n",
"- If `env_or_file` is an environment variable then:\n",
" - It will first try to load the file from the path specified in the environment variable.\n",
" - If there is no file, it will try to interpret the environment variable as a JSON string.\n",
"- Otherwise, it will try to open the file at the path specified by `env_or_file`.\n",
"\n",
"### Why is it a list?\n",
"\n",
"Being a list allows you to define multiple models that can be used by the agent. This is useful for a few reasons:\n",
"\n",
"- If one model times out or fails, the agent can try another model.\n",
"- Having a single global list of models and [filtering it](/docs/llm_configuration#config-list-filtering) based on certain keys (e.g. name, tag) in order to pass select models into a certain agent (e.g. use cheaper GPT 3.5 for agents solving easier tasks)\n",
"- While the core agents, (e.g. conversable or assistant) do not have special logic around selecting configs, some of the specialized agents *may* have logic to select the best model based on the task at hand.\n",
"\n",
"### How does an agent decide which model to pick out of the list?\n",
"\n",
"An agent uses the very first model available in the \"config_list\" and makes LLM calls against this model. If the model fail (e.g. API throttling) the agent will retry the request against the 2nd model and so on until prompt completion is received (or throws an error if none of the models successfully completes the request). In general there's no implicit/hidden logic inside agents that is used to pick \"the best model for the task\". However, some specialized agents may attempt to choose \"the best model for the task\". It is developers responsibility to pick the right models and use them with agents.\n",
"\n",
"### Config list filtering\n",
"\n",
"As described above the list can be filtered based on certain criteria. This is defined as a dictionary of key to filter on and value to filter by. For example, if you have a list of configs and you want to select the one with the model \"gpt-3.5-turbo\" you can use the following filter:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"filter_dict = {\"model\": \"gpt-3.5-turbo\"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"This can then be applied to a config list loaded in Python with [`filter_config`](/docs/reference/oai/openai_utils#filter_config):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"config_list = autogen.filter_config(config_list, filter_dict)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or, directly when loading the config list using [`config_list_from_json`](/docs/reference/oai/openai_utils#config_list_from_json):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"config_list = autogen.config_list_from_json(env_or_file=\"OAI_CONFIG_LIST\", filter_dict=filter_dict)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Tags\n",
"\n",
"Model names can differ between OpenAI and Azure OpenAI, so tags offer an easy way to smooth over this inconsistency. Tags are a list of strings in the `config_list`, for example for the following `config_list`:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"config_list = [\n",
" {\"model\": \"gpt-4\", \"api_key\": \"\", \"tags\": [\"gpt4\", \"openai\"]},\n",
" {\"model\": \"llama-7B\", \"base_url\": \"http://127.0.0.1:8080\", \"tags\": [\"llama\", \"local\"]},\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then when filtering the `config_list` you can can specify the desired tags. A config is selected if it has at least one of the tags specified in the filter. For example, to just get the `llama` model, you can use the following filter:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"filter_dict = {\"tags\": [\"llama\", \"another_tag\"]}\n",
"config_list = autogen.filter_config(config_list, filter_dict)\n",
"assert len(config_list) == 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Other configuration parameters\n",
"\n",
"Besides the `config_list`, there are other parameters that can be used to configure the LLM. These are split between parameters specifically used by Autogen and those passed into the model client.\n",
"\n",
"### AutoGen specific parameters\n",
"\n",
"- `cache_seed` - This is a legacy parameter and not recommended to be used unless the reason for using it is to disable the default caching behavior. To disable default caching, set this to `None`. Otherwise, by default or if an int is passed the [DiskCache](/docs/reference/cache/disk_cache) will be used. For the new way of using caching, pass a [Cache](/docs/reference/cache/) object into [`initiate_chat`](/docs/reference/agentchat/conversable_agent#initiate_chat).\n",
"\n",
"### Extra model client parameters\n",
"\n",
"It is also possible to passthrough parameters through to the OpenAI client. Parameters that correspond to the [`OpenAI` client](https://github.com/openai/openai-python/blob/d231d1fa783967c1d3a1db3ba1b52647fff148ac/src/openai/_client.py#L67) or the [`OpenAI` completions create API](https://github.com/openai/openai-python/blob/d231d1fa783967c1d3a1db3ba1b52647fff148ac/src/openai/resources/completions.py#L35) can be supplied.\n",
"\n",
"This is commonly used for things like `temperature`, or `timeout`.\n",
"\n",
"## Example\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"llm_config = {\n",
" \"config_list\": [\n",
" {\n",
" \"model\": \"gpt-4\",\n",
" \"api_key\": os.environ.get(\"AZURE_OPENAI_API_KEY\"),\n",
" \"api_type\": \"azure\",\n",
" \"base_url\": os.environ.get(\"AZURE_OPENAI_API_BASE\"),\n",
" \"api_version\": \"2023-12-01-preview\",\n",
" },\n",
" {\n",
" \"model\": \"llama-7B\",\n",
" \"base_url\": \"http://127.0.0.1:8080\",\n",
" \"api_type\": \"openai\",\n",
" },\n",
" ],\n",
" \"temperature\": 0.9,\n",
" \"timeout\": 300,\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Other helpers for loading a config list\n",
"\n",
"- [`get_config_list`](/docs/reference/oai/openai_utils#get_config_list): Generates configurations for API calls, primarily from provided API keys.\n",
"- [`config_list_openai_aoai`](/docs/reference/oai/openai_utils#config_list_openai_aoai): Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files.\n",
"- [`config_list_from_models`](/docs/reference/oai/openai_utils#config_list_from_models): Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.\n",
"- [`config_list_from_dotenv`](/docs/reference/oai/openai_utils#config_list_from_dotenv): Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file.\n",
"\n",
"See [this notebook](https://github.com/microsoft/autogen/blob/main/notebook/config_loader_utility_functions.ipynb) for examples of using the above functions."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "masterclass",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -186,6 +186,17 @@ module.exports = {
// When applying `zh` in language, please install `nodejieba` in your project.
},
],
customPostCssPlugin
customPostCssPlugin,
[
"@docusaurus/plugin-client-redirects",
{
redirects: [
{
to: "/docs/llm_configuration/",
from: ["/docs/llm_endpoint_configuration/"],
},
],
},
]
],
};

View File

@ -25,8 +25,9 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "^3.1.0",
"@docusaurus/preset-classic": "^3.1.0",
"@docusaurus/core": "^3.1.1",
"@docusaurus/plugin-client-redirects": "^3.1.1",
"@docusaurus/preset-classic": "^3.1.1",
"@easyops-cn/docusaurus-search-local": "^0.21.1",
"@mdx-js/react": "^3.0.0",
"@svgr/webpack": "^5.5.0",
@ -45,8 +46,8 @@
"url-loader": "^4.1.1"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.1.0",
"@docusaurus/types": "^3.1.0",
"@docusaurus/module-type-aliases": "^3.1.1",
"@docusaurus/types": "^3.1.1",
"postcss": "^8.4"
},
"browserslist": {

View File

@ -22,7 +22,7 @@
id: "installation/Installation"
},
},
'llm_endpoint_configuration',
'llm_configuration',
{'Use Cases': [{type: 'autogenerated', dirName: 'Use-Cases'}]},
'Contribute',
'Research',

View File

@ -62,7 +62,6 @@ const GalleryPage = (props) => {
: props.items;
const defaultImageIfNoImage = props.allowDefaultImage ?? true;
console.log(defaultImageIfNoImage)
const imageFunc = (item) => {
const image =
<img

View File

@ -15,7 +15,6 @@ function findAllNotebooks() {
source: notebook.frontMatter.source_notebook
});
});
console.log(notebooks);
return notebooks;
}

View File

@ -16,7 +16,7 @@ function HomepageHeader() {
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/getting-started">
to="/docs/Getting-Started">
Getting Started - 3min
</Link>
</div>

View File

@ -1525,10 +1525,10 @@
"@docsearch/css" "3.5.2"
algoliasearch "^4.19.1"
"@docusaurus/core@3.1.0", "@docusaurus/core@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.0.tgz#b66e7eaf867c1f44738d725d217a1c0e879629d7"
integrity sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ==
"@docusaurus/core@3.1.1", "@docusaurus/core@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.1.tgz#29ce8df7a3d3d12ee8962d6d86133b87235ff17b"
integrity sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==
dependencies:
"@babel/core" "^7.23.3"
"@babel/generator" "^7.23.3"
@ -1540,13 +1540,13 @@
"@babel/runtime" "^7.22.6"
"@babel/runtime-corejs3" "^7.22.6"
"@babel/traverse" "^7.22.8"
"@docusaurus/cssnano-preset" "3.1.0"
"@docusaurus/logger" "3.1.0"
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/cssnano-preset" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/react-loadable" "5.5.2"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-common" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
"@slorber/static-site-generator-webpack-plugin" "^4.0.7"
"@svgr/webpack" "^6.5.1"
autoprefixer "^10.4.14"
@ -1600,10 +1600,10 @@
webpack-merge "^5.9.0"
webpackbar "^5.0.2"
"@docusaurus/cssnano-preset@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz#b3fe7134cc4d0c1950eeb1c940089a190591ad4e"
integrity sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA==
"@docusaurus/cssnano-preset@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.1.tgz#03a4cb8e6d41654d7ff5ed79fddd73fd224feea4"
integrity sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==
dependencies:
cssnano-preset-advanced "^5.3.10"
postcss "^8.4.26"
@ -1618,24 +1618,24 @@
chalk "^4.1.2"
tslib "^2.4.0"
"@docusaurus/logger@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.0.tgz#eef6475c2d59a3ae7e138ac1f60007d6fafd76b0"
integrity sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg==
"@docusaurus/logger@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.1.tgz#423e8270c00a57b1b3a0cc8a3ee0a4c522a68387"
integrity sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q==
dependencies:
chalk "^4.1.2"
tslib "^2.6.0"
"@docusaurus/mdx-loader@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz#61d562ff442f62ef04cc31d3f0d5865a8dd390e4"
integrity sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg==
"@docusaurus/mdx-loader@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.1.tgz#f79290abc5044bef1d7ecac4eccec887058b8e03"
integrity sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==
dependencies:
"@babel/parser" "^7.22.7"
"@babel/traverse" "^7.22.8"
"@docusaurus/logger" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/logger" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
"@mdx-js/mdx" "^3.0.0"
"@slorber/remark-comment" "^1.0.0"
escape-html "^1.0.3"
@ -1658,13 +1658,13 @@
vfile "^6.0.1"
webpack "^5.88.1"
"@docusaurus/module-type-aliases@3.1.0", "@docusaurus/module-type-aliases@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz#f3451702f143557bfde0502287713a08086a0415"
integrity sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg==
"@docusaurus/module-type-aliases@3.1.1", "@docusaurus/module-type-aliases@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.1.tgz#b304402b0535a13ebd4c0db1c368d2604d54d02f"
integrity sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==
dependencies:
"@docusaurus/react-loadable" "5.5.2"
"@docusaurus/types" "3.1.0"
"@docusaurus/types" "3.1.1"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
@ -1672,18 +1672,33 @@
react-helmet-async "*"
react-loadable "npm:@docusaurus/react-loadable@5.5.2"
"@docusaurus/plugin-content-blog@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz#d2102e9286486e526dbc0dfc741e53dc5cee0ff0"
integrity sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A==
"@docusaurus/plugin-client-redirects@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.1.1.tgz#73feb15c2f3fe292d618f8a81e5194142f982ddb"
integrity sha512-J/1Z75XkO+BmUXHW17FrCIYZQ3b0IKaJECH6yCxW5RQ8NMMJ+SZCtPtx5oYoAd0VHersNiUu+ZAxfOqbsn1jKQ==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/logger" "3.1.0"
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-common" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
eta "^2.2.0"
fs-extra "^11.1.1"
lodash "^4.17.21"
tslib "^2.6.0"
"@docusaurus/plugin-content-blog@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.1.tgz#16f4fd723227b2158461bba6b9bcc18c1926f7ea"
integrity sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==
dependencies:
"@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
cheerio "^1.0.0-rc.12"
feed "^4.2.2"
fs-extra "^11.1.1"
@ -1695,18 +1710,18 @@
utility-types "^3.10.0"
webpack "^5.88.1"
"@docusaurus/plugin-content-docs@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.0.tgz#55d7bdb8e14f854ea6c6e256f1b51b8c17963c19"
integrity sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA==
"@docusaurus/plugin-content-docs@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.1.tgz#f2eddebf351dd8dd504a2c26061165c519e1f964"
integrity sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/logger" "3.1.0"
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/module-type-aliases" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
"@types/react-router-config" "^5.0.7"
combine-promises "^1.1.0"
fs-extra "^11.1.1"
@ -1716,96 +1731,96 @@
utility-types "^3.10.0"
webpack "^5.88.1"
"@docusaurus/plugin-content-pages@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz#cdb73c804ded307e81ceea39874dc0bb540c2dc4"
integrity sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg==
"@docusaurus/plugin-content-pages@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.1.tgz#05aec68c2abeac2140c7a16d4c5b506bf4d19fb2"
integrity sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
fs-extra "^11.1.1"
tslib "^2.6.0"
webpack "^5.88.1"
"@docusaurus/plugin-debug@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.0.tgz#545872bc8f9cd697d9f1d6c695f8a1674bfc149c"
integrity sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w==
"@docusaurus/plugin-debug@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.1.tgz#cee5aae1fef288fb93f68894db79a2612e313d3f"
integrity sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
fs-extra "^11.1.1"
react-json-view-lite "^1.2.0"
tslib "^2.6.0"
"@docusaurus/plugin-google-analytics@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.0.tgz#3035eace3121db16aec7c10852ebb4cd860f4434"
integrity sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q==
"@docusaurus/plugin-google-analytics@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.1.tgz#bfc58205b4fcaf3222e04f9c3542f3bef9804887"
integrity sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
tslib "^2.6.0"
"@docusaurus/plugin-google-gtag@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.0.tgz#2f4040da81d36bfc6324abc1a12b258e6c7f202a"
integrity sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg==
"@docusaurus/plugin-google-gtag@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.1.tgz#7e8b5aa6847a12461c104a65a335f4a45dae2f28"
integrity sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
"@types/gtag.js" "^0.0.12"
tslib "^2.6.0"
"@docusaurus/plugin-google-tag-manager@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.0.tgz#4c026e9f65468a332326770f95ccd9c6e12d564b"
integrity sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg==
"@docusaurus/plugin-google-tag-manager@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.1.tgz#e1aae4d821e786d133386b4ae6e6fe66a4bc0089"
integrity sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
tslib "^2.6.0"
"@docusaurus/plugin-sitemap@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.0.tgz#9d9dbb4d87e6dc46ae9321badf6ac7cd9aa96b23"
integrity sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg==
"@docusaurus/plugin-sitemap@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.1.tgz#8828bf5e2922273aad207a35189f22913e6a0dfd"
integrity sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/logger" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-common" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
fs-extra "^11.1.1"
sitemap "^7.1.1"
tslib "^2.6.0"
"@docusaurus/preset-classic@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.0.tgz#ca67d5e416c211b4c23f0fb01f0e3e36b759dfa0"
integrity sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ==
"@docusaurus/preset-classic@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.1.tgz#15fd80012529dafd7e01cc0bce59d39ee6ad6bf5"
integrity sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/plugin-content-blog" "3.1.0"
"@docusaurus/plugin-content-docs" "3.1.0"
"@docusaurus/plugin-content-pages" "3.1.0"
"@docusaurus/plugin-debug" "3.1.0"
"@docusaurus/plugin-google-analytics" "3.1.0"
"@docusaurus/plugin-google-gtag" "3.1.0"
"@docusaurus/plugin-google-tag-manager" "3.1.0"
"@docusaurus/plugin-sitemap" "3.1.0"
"@docusaurus/theme-classic" "3.1.0"
"@docusaurus/theme-common" "3.1.0"
"@docusaurus/theme-search-algolia" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/plugin-debug" "3.1.1"
"@docusaurus/plugin-google-analytics" "3.1.1"
"@docusaurus/plugin-google-gtag" "3.1.1"
"@docusaurus/plugin-google-tag-manager" "3.1.1"
"@docusaurus/plugin-sitemap" "3.1.1"
"@docusaurus/theme-classic" "3.1.1"
"@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-search-algolia" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
version "5.5.2"
@ -1815,23 +1830,23 @@
"@types/react" "*"
prop-types "^15.6.2"
"@docusaurus/theme-classic@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.0.tgz#6ee68bf4d4db53c8d9b18d4866512abadb00a802"
integrity sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw==
"@docusaurus/theme-classic@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.1.tgz#0a188c787fc4bf2bb525cc30c7aa34e555ee96b8"
integrity sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==
dependencies:
"@docusaurus/core" "3.1.0"
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/module-type-aliases" "3.1.0"
"@docusaurus/plugin-content-blog" "3.1.0"
"@docusaurus/plugin-content-docs" "3.1.0"
"@docusaurus/plugin-content-pages" "3.1.0"
"@docusaurus/theme-common" "3.1.0"
"@docusaurus/theme-translations" "3.1.0"
"@docusaurus/types" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-common" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-translations" "3.1.1"
"@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
"@mdx-js/react" "^3.0.0"
clsx "^2.0.0"
copy-text-to-clipboard "^3.2.0"
@ -1846,18 +1861,18 @@
tslib "^2.6.0"
utility-types "^3.10.0"
"@docusaurus/theme-common@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.0.tgz#d176af1d0fc8ea27fea0afb298157f9a75256336"
integrity sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw==
"@docusaurus/theme-common@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.1.tgz#5a16893928b8379c9e83aef01d753e7e142459e2"
integrity sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==
dependencies:
"@docusaurus/mdx-loader" "3.1.0"
"@docusaurus/module-type-aliases" "3.1.0"
"@docusaurus/plugin-content-blog" "3.1.0"
"@docusaurus/plugin-content-docs" "3.1.0"
"@docusaurus/plugin-content-pages" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-common" "3.1.0"
"@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.1"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
@ -1867,19 +1882,19 @@
tslib "^2.6.0"
utility-types "^3.10.0"
"@docusaurus/theme-search-algolia@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.0.tgz#3cdb1f0e8d15698a60110856ca5a06f10d3b049d"
integrity sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ==
"@docusaurus/theme-search-algolia@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.1.tgz#5170cd68cc59d150416b070bdc6d15c363ddf5e1"
integrity sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==
dependencies:
"@docsearch/react" "^3.5.2"
"@docusaurus/core" "3.1.0"
"@docusaurus/logger" "3.1.0"
"@docusaurus/plugin-content-docs" "3.1.0"
"@docusaurus/theme-common" "3.1.0"
"@docusaurus/theme-translations" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/utils-validation" "3.1.0"
"@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-translations" "3.1.1"
"@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.1"
algoliasearch "^4.18.0"
algoliasearch-helper "^3.13.3"
clsx "^2.0.0"
@ -1889,18 +1904,18 @@
tslib "^2.6.0"
utility-types "^3.10.0"
"@docusaurus/theme-translations@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.0.tgz#1c6bdc19723a87e042b5e89b6cdc8b747fdcbc13"
integrity sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA==
"@docusaurus/theme-translations@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.1.tgz#117e91ba5e3a8178cb59f3028bf41de165a508c1"
integrity sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==
dependencies:
fs-extra "^11.1.1"
tslib "^2.6.0"
"@docusaurus/types@3.1.0", "@docusaurus/types@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.0.tgz#1dbb60ea38e98ba869f8d7ea2323e4460f05ab65"
integrity sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw==
"@docusaurus/types@3.1.1", "@docusaurus/types@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.1.tgz#747c9dee8cf7c3b0e5ee7351bac5e9c4fdc7f259"
integrity sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==
dependencies:
"@mdx-js/mdx" "^3.0.0"
"@types/history" "^4.7.11"
@ -1912,20 +1927,20 @@
webpack "^5.88.1"
webpack-merge "^5.9.0"
"@docusaurus/utils-common@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.0.tgz#846ce9c12b9ebf1ebf513e65303fb8158dcd2e1b"
integrity sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw==
"@docusaurus/utils-common@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.1.tgz#b48fade63523fd40f3adb67b47c3371e5183c20b"
integrity sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==
dependencies:
tslib "^2.6.0"
"@docusaurus/utils-validation@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz#3e88c42caec29cd3eedbbd17af97f88719613340"
integrity sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg==
"@docusaurus/utils-validation@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.1.tgz#3a747349ed05aee0e4d543552b41f3c9467ee731"
integrity sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==
dependencies:
"@docusaurus/logger" "3.1.0"
"@docusaurus/utils" "3.1.0"
"@docusaurus/logger" "3.1.1"
"@docusaurus/utils" "3.1.1"
joi "^17.9.2"
js-yaml "^4.1.0"
tslib "^2.6.0"
@ -1963,12 +1978,12 @@
url-loader "^4.1.1"
webpack "^5.73.0"
"@docusaurus/utils@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.0.tgz#6ef821bc4c40a91586835a385110b5c0082c590c"
integrity sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg==
"@docusaurus/utils@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.1.tgz#e822d14704e4b3bb451ca464a7cc56aea9b55a45"
integrity sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==
dependencies:
"@docusaurus/logger" "3.1.0"
"@docusaurus/logger" "3.1.1"
"@svgr/webpack" "^6.5.1"
escape-string-regexp "^4.0.0"
file-loader "^6.2.0"