trulens.core.utils.keys¶
trulens.core.utils.keys
¶
API keys and configuration¶
Setting keys¶
To check whether appropriate api keys have been set:
from trulens.core.utils.keys import check_keys
check_keys(
"OPENAI_API_KEY",
"HUGGINGFACE_API_KEY"
)
Alternatively you can set using check_or_set_keys
:
from trulens.core.utils.keys import check_or_set_keys
check_or_set_keys(
OPENAI_API_KEY="to fill in",
HUGGINGFACE_API_KEY="to fill in"
)
This line checks that you have the requisite api keys set before continuing the notebook. They do not need to be provided, however, right on this line. There are several ways to make sure this check passes:
-
Explicit -- Explicitly provide key values to
check_keys
. -
Python -- Define variables before this check like this:
OPENAI_API_KEY="something"
- Environment -- Set them in your environment variable. They should be visible when you execute:
import os
print(os.environ)
-
.env -- Set them in a .env file in the same folder as the example notebook or one of its parent folders. An example of a .env file is found in
trulens/trulens/env.example
. -
Endpoint class For some keys, set them as arguments to trulens endpoint class that manages the endpoint. For example, with
openai
, do this ahead of thecheck_keys
check:
from trulens.providers.openai import OpenAIEndpoint
openai_endpoint = OpenAIEndpoint(api_key="something")
- Provider class For some keys, set them as arguments to trulens feedback
collection ("provider") class that makes use of the relevant endpoint. For
example, with
openai
, do this ahead of thecheck_keys
check:
from trulens.providers.openai import OpenAI
openai_feedbacks = OpenAI(api_key="something")
In the last two cases, please note that the settings are global. Even if you create multiple OpenAI or OpenAIEndpoint objects, they will share the configuration of keys (and other openai attributes).
Other API attributes¶
Some providers may require additional configuration attributes beyond api key.
For example, openai
usage via azure require special keys. To set those, you
should use the 3rd party class method of configuration. For example with
openai
:
import openai
openai.api_type = "azure"
openai.api_key = "..."
openai.api_base = "https://example-endpoint.openai.azure.com"
openai.api_version = "2023-05-15" # subject to change
# See https://learn.microsoft.com/en-us/azure/cognitive-services/openai/how-to/switching-endpoints .
Our example notebooks will only check that the api_key is set but will make use of the configured openai object as needed to compute feedback.
Functions¶
redact_value
¶
Determine whether the given value v
should be redacted and redact it if
so. If its key k
(in a dict/json-like) is given, uses the key name to
determine whether redaction is appropriate. If key k
is not given, only
redacts if v
is a string and identical to one of the keys ingested using
setup_keys
.
get_config_file
¶
Looks for a .env file in current folder or its parents. Returns Path of found .env or None if not found.
check_keys
¶
check_keys(*keys: str) -> None
Check that all keys named in *args
are set as env vars. Will fail with a
message on how to set missing key if one is missing. If all are provided
somewhere, they will be set in the env var as the canonical location where
we should expect them subsequently.
Example
from trulens.core.utils.keys import check_keys
check_keys(
"OPENAI_API_KEY",
"HUGGINGFACE_API_KEY"
)
check_or_set_keys
¶
Check various sources of api configuration values like secret keys and set env variables for each of them. We use env variables as the canonical storage of these keys, regardless of how they were specified. Values can also be specified explicitly to this method. Example:
from trulens.core.utils.keys import check_or_set_keys
check_or_set_keys(
OPENAI_API_KEY="to fill in",
HUGGINGFACE_API_KEY="to fill in"
)