mirror of
https://github.com/imartinez/privateGPT.git
synced 2025-06-24 14:33:23 +00:00
--------- Co-authored-by: Louis <lpglm@orange.fr> Co-authored-by: LeMoussel <cnhx27@gmail.com>
80 lines
3.3 KiB
Plaintext
80 lines
3.3 KiB
Plaintext
# Settings and profiles for your private GPT
|
|
|
|
The configuration of your private GPT server is done thanks to `settings` files (more precisely `settings.yaml`).
|
|
These text files are written using the [YAML](https://en.wikipedia.org/wiki/YAML) syntax.
|
|
|
|
While privateGPT is distributing safe and universal configuration files, you might want to quickly customize your
|
|
privateGPT, and this can be done using the `settings` files.
|
|
|
|
This project is defining the concept of **profiles** (or configuration profiles).
|
|
This mechanism, using your environment variables, is giving you the ability to easily switch between
|
|
configuration you've made.
|
|
|
|
A typical use case of profile is to easily switch between LLM and embeddings.
|
|
To be a bit more precise, you can change the language (to French, Spanish, Italian, English, etc) by simply changing
|
|
the profile you've selected; no code changes required!
|
|
|
|
PrivateGPT is configured through *profiles* that are defined using yaml files, and selected through env variables.
|
|
The full list of properties configurable can be found in `settings.yaml`.
|
|
|
|
## How to know which profiles exist
|
|
Given that a profile `foo_bar` points to the file `settings-foo_bar.yaml` and vice-versa, you simply have to look
|
|
at the files starting with `settings` and ending in `.yaml`.
|
|
|
|
## How to use an existing profiles
|
|
**Please note that the syntax to set the value of an environment variables depends on your OS**.
|
|
You have to set environment variable `PGPT_PROFILES` to the name of the profile you want to use.
|
|
|
|
For example, on **linux and macOS**, this gives:
|
|
```bash
|
|
export PGPT_PROFILES=my_profile_name_here
|
|
```
|
|
|
|
Windows Powershell(s) have a different syntax, one of them being:
|
|
```shell
|
|
set PGPT_PROFILES=my_profile_name_here
|
|
```
|
|
If the above is not working, you might want to try other ways to set an env variable in your window's terminal.
|
|
|
|
---
|
|
|
|
Once you've set this environment variable to the desired profile, you can simply launch your privateGPT,
|
|
and it will run using your profile on top of the default configuration.
|
|
|
|
## Reference
|
|
Additional details on the profiles are described in this section
|
|
|
|
### Environment variable `PGPT_SETTINGS_FOLDER`
|
|
|
|
The location of the settings folder. Defaults to the root of the project.
|
|
Should contain the default `settings.yaml` and any other `settings-{profile}.yaml`.
|
|
|
|
### Environment variable `PGPT_PROFILES`
|
|
|
|
By default, the profile definition in `settings.yaml` is loaded.
|
|
Using this env var you can load additional profiles; format is a comma separated list of profile names.
|
|
This will merge `settings-{profile}.yaml` on top of the base settings file.
|
|
|
|
For example:
|
|
`PGPT_PROFILES=local,cuda` will load `settings-local.yaml`
|
|
and `settings-cuda.yaml`, their contents will be merged with
|
|
later profiles properties overriding values of earlier ones like `settings.yaml`.
|
|
|
|
During testing, the `test` profile will be active along with the default, therefore `settings-test.yaml`
|
|
file is required.
|
|
|
|
### Environment variables expansion
|
|
|
|
Configuration files can contain environment variables,
|
|
they will be expanded at runtime.
|
|
|
|
Expansion must follow the pattern `${VARIABLE_NAME:default_value}`.
|
|
|
|
For example, the following configuration will use the value of the `PORT`
|
|
environment variable or `8001` if it's not set.
|
|
Missing variables with no default will produce an error.
|
|
|
|
```yaml
|
|
server:
|
|
port: ${PORT:8001}
|
|
``` |