Setting up Development Environment - AG2
Setup Development Environment
Setting up LLM Keys
If you are contributing to the AG2 project, you will need an LLM key depending on the submodule you are working on.
AG2 uses an environment variable called OAI_CONFIG_LIST in JSON format to store the LLM keys. OAI_CONFIG_LIST is a list of dictionaries where each dictionary contains the following keys:
model(required): The name of the OpenAI/LLM model.api_key(optional): The API key for the OpenAI/LLM model.api_type(optional): The type of the API key. It is used for non-OpenAI LLMs.api_version(optional): The version of the API key. It is used for Azure API.base_url(optional): The base URL for the OpenAI/LLM model.tags(optional): A list of tags for the OpenAI/LLM model which can be used for filtering.
Following is an example of the `OAI_CONFIG_LIST` in JSON format which consists of two OpenAI models and a gemini model:
[
{
"model": "gpt-4o",
"api_key": "<your_api_key>",
"tags": ["gpt-4o", "tool", "vision"]
},
{
"model": "gpt-4o-mini",
"api_key": "<your_api_key>",
"tags": ["gpt-4o-mini", "tool", "vision"]
},
{
"api_type": "google",
"model": "gemini-pro",
"api_key": "<your_gemini_api_key>"
}
]
Further, this OAI_CONFIG_LIST can be set in two ways:
- As environment variable: Simply set the
OAI_CONFIG_LISTenvironment variable in your terminal:export OAI_CONFIG_LIST='[{"api_type": "openai", "model": "gpt-4o","api_key": "<your_api_key>","tags": ["gpt-4o", "tool", "vision"]},{"api_type": "openai", "model": "gpt-4o-mini","api_key": "<your_api_key>","tags": ["gpt-4o-mini", "tool", "vision"]},{"api_type": "google", "model": "gemini-pro","api_key": "<your_gemini_api_key>",}]'
Or you can save the OAI_CONFIG_LIST in a file and set the path of the file as an environment variable. For example, let's say you have saved the OAI_CONFIG_LIST in a file called OAI_CONFIG_LIST.json at the root of the project. You can set the OAI_CONFIG_LIST environment variable as follows:
export OAI_CONFIG_LIST="/path/to/OAI_CONFIG_LIST.json"
Alternatively, you can set up the LLM keys directly as environment variables. Following is an example of setting up the Gemini api key as an environment variable:
export GEMINI_API_KEY="<your_api_key>"
Setting up the Development Environment
To contribute to the AG2 project, AG2 provides three different methods to set up the development environment:
Setup the necessary LLM keys as mentioned above in your terminal.
Clone the AG2 repository and cd into the repository.
Open the project in Visual Studio Code by running the following command from the root of the repository:
code .Press
Ctrl+Shift+Pand selectDev Containers: Reopen in Container.Select the desired python environment and wait for the container to build.
Once the container is built, you can start developing AG2.
- Open the AG2 repository on GitHub and fork the repository.
- Navigate to Settings -> Secrets and variables -> Codespaces.
- Add the necessary LLM keys as mentioned above by clicking on the
New repository secretbutton. - Navigate back to the forked repository.
- Click on the
Codebutton and selectOpen with Codespaces. - Once the container is built, you can start developing AG2.
Setup the necessary LLM keys as mentioned above in your terminal.
Fork the AG2 repository and clone the forked repository.
Create a virtual environment by running the following command from the root of the repository:
python3 -m venv venvActivate the virtual environment by running the following command:
source venv/bin/activateInstall the required dependencies by running the following command:
pip install -e ".[dev]" && pre-commit installOnce the dependencies are installed, you can start developing AG2.
Verifying the Development Environment
To make sure that we have set up the development environment correctly, we can run the pre-commit hooks and tests.
To run the pre-commit hooks, run the following command:
pre-commit run --all-files
To run the non-llm tests, run the following command:
bash scripts/test-core-skip-llm.sh