Configs#

Overview#

Gen AI Builder exposes a global singleton, defaults_config , which can be used to access and modify the default configurations of the framework.

To update the default configurations, simply update the fields on the Defaults object. Framework objects will be created with the currently set default configurations, but you can always override at the individual class level.

from griptape.configs import Defaults
from griptape.configs.drivers import AnthropicDriversConfig, OpenAiDriversConfig
from griptape.drivers.prompt.anthropic_prompt_driver import AnthropicPromptDriver
from griptape.structures import Agent

Defaults.drivers_config = OpenAiDriversConfig()  # Default
openai_agent = Agent()

Defaults.drivers_config = AnthropicDriversConfig()
anthropic_agent = Agent(
    prompt_driver=AnthropicPromptDriver(model="claude-3-7-sonnet-latest"),  # Override the default prompt driver
)

Drivers Configs#

The AnthropicDriversConfig class allows for the customization of Structures within Gen AI Builder, enabling specific settings such as Drivers to be defined for Tasks.

Gen AI Builder provides predefined AnthropicDriversConfig ’s for widely used services that provide APIs for most Driver types Gen AI Builder offers.

DriversConfig s can be used as a Python Context Manager using the with statement to temporarily change the default configurations for a block of code.

import schema

from griptape.configs.drivers import AnthropicDriversConfig, OpenAiDriversConfig
from griptape.drivers.prompt.anthropic import AnthropicPromptDriver
from griptape.drivers.prompt.openai import OpenAiChatPromptDriver
from griptape.engines import JsonExtractionEngine
from griptape.structures import Agent
from griptape.tasks import ToolTask
from griptape.tools import ExtractionTool

with OpenAiDriversConfig():  # Agent will be created with OpenAi Drivers
    openai_agent = Agent()

with AnthropicDriversConfig():  # Agent will be created with Anthropic Drivers
    anthropic_agent = Agent(
        tasks=[
            ToolTask(
                "Extract sentiment from this text: {{ args[0] }}",
                prompt_driver=OpenAiChatPromptDriver(model="gpt-4.1"),  # Override this particular Tasks prompt driver
                tool=ExtractionTool(
                    extraction_engine=JsonExtractionEngine(
                        prompt_driver=AnthropicPromptDriver(  # Override this particular Engines prompt driver
                            model="claude-3-opus-20240229"
                        ),
                        template_schema=schema.Schema({"sentiment": str}).json_schema("Output"),
                    ),
                ),
            )
        ]
    )

anthropic_agent.run("Hello, I am happy!")

OpenAI#

The OpenAI Driver config provides default Drivers for OpenAI’s APIs. This is the default config for all Structures.

from griptape.configs import Defaults
from griptape.configs.drivers import OpenAiDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = OpenAiDriversConfig()

agent = Agent()

Azure OpenAI#

The Azure OpenAI Driver config provides default Drivers for Azure’s OpenAI APIs.

import os

from griptape.configs import Defaults
from griptape.configs.drivers import AzureOpenAiDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = AzureOpenAiDriversConfig(
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT_1"], api_key=os.environ["AZURE_OPENAI_API_KEY_1"]
)

agent = Agent()

Amazon Bedrock#

The Amazon Bedrock Driver config provides default Drivers for Amazon Bedrock’s APIs.

import os

import boto3

from griptape.configs import Defaults
from griptape.configs.drivers import AmazonBedrockDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = AmazonBedrockDriversConfig(
    session=boto3.Session(
        region_name=os.environ["AWS_DEFAULT_REGION"],
        aws_access_key_id=os.environ["AWS_ACCESS_KEY_ID"],
        aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"],
    )
)

agent = Agent()

Google#

The Google Driver config provides default Drivers for Google’s Gemini APIs.

from griptape.configs import Defaults
from griptape.configs.drivers import GoogleDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = GoogleDriversConfig()

agent = Agent()

Anthropic#

The Anthropic Driver config provides default Drivers for Anthropic’s APIs.

from griptape.configs import Defaults
from griptape.configs.drivers import AnthropicDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = AnthropicDriversConfig()

agent = Agent()

Cohere#

The Cohere Driver config provides default Drivers for Cohere’s APIs.

import os

from griptape.configs import Defaults
from griptape.configs.drivers import CohereDriversConfig
from griptape.structures import Agent

Defaults.drivers_config = CohereDriversConfig(api_key=os.environ["COHERE_API_KEY"])

agent = Agent()

Custom#

You can create your own AnthropicDriversConfig by overriding relevant Drivers. The AnthropicDriversConfig class includes “Dummy” Drivers for all types, which throw a DummyError if invoked without being overridden. This approach ensures that you are informed through clear error messages if you attempt to use Structures without proper Driver configurations.

import os

from griptape.configs import Defaults
from griptape.configs.drivers import DriversConfig
from griptape.drivers.embedding.openai import OpenAiEmbeddingDriver
from griptape.drivers.prompt.anthropic import AnthropicPromptDriver
from griptape.structures import Agent

Defaults.drivers_config = DriversConfig(
    prompt_driver=AnthropicPromptDriver(
        model="claude-3-sonnet-20240229",
        api_key=os.environ["ANTHROPIC_API_KEY"],
    ),
    embedding_driver=OpenAiEmbeddingDriver(),
)

agent = Agent()

Logging Config#

Gen AI Builder provides a predefined LoggingConfig ’s for easily customizing the logging events that the framework emits. In order to customize the logger, the logger can be fetched by using the Defaults.logging.logger_name .

import logging

from griptape.configs import Defaults
from griptape.configs.drivers import OpenAiDriversConfig
from griptape.configs.logging import TruncateLoggingFilter
from griptape.structures import Agent

Defaults.drivers_config = OpenAiDriversConfig()

logger = logging.getLogger(Defaults.logging_config.logger_name)
logger.setLevel(logging.ERROR)
logger.addFilter(TruncateLoggingFilter(max_log_length=100))

agent = Agent()

Debug Logs#

You can enable debug logs to view more granular information such as request/response payloads.

import logging

from griptape.configs import Defaults
from griptape.configs.logging import JsonFormatter
from griptape.structures import Agent

logger = logging.getLogger(Defaults.logging_config.logger_name)
logger.setLevel(logging.DEBUG)
logger.handlers[0].setFormatter(JsonFormatter())

agent = Agent()

agent.run("Hello world!")

Loading/Saving Configs#

You can serialize and deserialize Driver Configs using the actions_to_json() and from_json() methods.

from pathlib import Path

from griptape.configs import Defaults
from griptape.configs.drivers import DriversConfig
from griptape.structures import Agent

config_file = "config.json"

#  Save config

config_text = Defaults.drivers_config.to_json()
Path(config_file).write_text(config_text)

#  Load config

config_text = Path(config_file).read_text()
Defaults.drivers_config = DriversConfig.from_json(config_text)

agent = Agent()