Class Prompt (1.74.0)

Prompt(
    prompt_data: typing.Optional[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
            typing.List[
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                ]
            ],
        ]
    ] = None,
    *,
    variables: typing.Optional[
        typing.List[
            typing.Dict[
                str,
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                    typing.List[
                        typing.Union[
                            str,
                            vertexai.generative_models._generative_models.Image,
                            vertexai.generative_models._generative_models.Part,
                        ]
                    ],
                ],
            ]
        ]
    ] = None,
    prompt_name: typing.Optional[str] = None,
    generation_config: typing.Optional[
        vertexai.generative_models._generative_models.GenerationConfig
    ] = None,
    model_name: typing.Optional[str] = None,
    safety_settings: typing.Optional[
        vertexai.generative_models._generative_models.SafetySetting
    ] = None,
    system_instruction: typing.Optional[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
            typing.List[
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                ]
            ],
        ]
    ] = None,
    tools: typing.Optional[
        typing.List[vertexai.generative_models._generative_models.Tool]
    ] = None,
    tool_config: typing.Optional[
        vertexai.generative_models._generative_models.ToolConfig
    ] = None
)

A prompt which may be a template with variables.

The `Prompt` class allows users to define a template string with
variables represented in curly braces `{variable}`. The variable
name must be a valid Python variable name (no spaces, must start with a
letter). These placeholders can be replaced with specific values using the
`assemble_contents` method, providing flexibility in generating dynamic prompts.

Usage:
    Generate content from a single set of variables:
    ```
    prompt = Prompt(
        prompt_data="Hello, {name}! Today is {day}. How are you?",
        variables=[{"name": "Alice", "day": "Monday"}]
        generation_config=GenerationConfig(
            temperature=0.1,
            top_p=0.95,
            top_k=20,
            candidate_count=1,
            max_output_tokens=100,
            stop_sequences=["

"], ), model_name="gemini-1.0-pro-002", safety_settings=[SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, method=SafetySetting.HarmBlockMethod.SEVERITY, )], system_instruction="Please answer in a short sentence.", )

    # Generate content using the assembled prompt.
    prompt.generate_content(
        contents=prompt.assemble_contents(**prompt.variables)
    )
    ```
    Generate content with multiple sets of variables:
    ```
    prompt = Prompt(
        prompt_data="Hello, {name}! Today is {day}. How are you?",
        variables=[
            {"name": "Alice", "day": "Monday"},
            {"name": "Bob", "day": "Tuesday"},
        ],
        generation_config=GenerationConfig(
            temperature=0.1,
            top_p=0.95,
            top_k=20,
            candidate_count=1,
            max_output_tokens=100,
            stop_sequences=["

"], ), model_name="gemini-1.0-pro-002", safety_settings=[SafetySetting( category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, method=SafetySetting.HarmBlockMethod.SEVERITY, )], system_instruction="Please answer in a short sentence.", )

    # Generate content using the assembled prompt for each variable set.
    for i in range(len(prompt.variables)):
        prompt.generate_content(
            contents=prompt.assemble_contents(**prompt.variables[i])
        )
    ```

Methods

Prompt

Prompt(
    prompt_data: typing.Optional[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
            typing.List[
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                ]
            ],
        ]
    ] = None,
    *,
    variables: typing.Optional[
        typing.List[
            typing.Dict[
                str,
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                    typing.List[
                        typing.Union[
                            str,
                            vertexai.generative_models._generative_models.Image,
                            vertexai.generative_models._generative_models.Part,
                        ]
                    ],
                ],
            ]
        ]
    ] = None,
    prompt_name: typing.Optional[str] = None,
    generation_config: typing.Optional[
        vertexai.generative_models._generative_models.GenerationConfig
    ] = None,
    model_name: typing.Optional[str] = None,
    safety_settings: typing.Optional[
        vertexai.generative_models._generative_models.SafetySetting
    ] = None,
    system_instruction: typing.Optional[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
            typing.List[
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                ]
            ],
        ]
    ] = None,
    tools: typing.Optional[
        typing.List[vertexai.generative_models._generative_models.Tool]
    ] = None,
    tool_config: typing.Optional[
        vertexai.generative_models._generative_models.ToolConfig
    ] = None
)

Initializes the Prompt with a given prompt, and variables.

__repr__

__repr__() -> str

Returns a string representation of the unassembled prompt.

__str__

__str__() -> str

Returns the prompt data as a string, without any variables replaced.

assemble_contents

assemble_contents(
    **variables_dict: typing.Union[
        str,
        vertexai.generative_models._generative_models.Image,
        vertexai.generative_models._generative_models.Part,
        typing.List[
            typing.Union[
                str,
                vertexai.generative_models._generative_models.Image,
                vertexai.generative_models._generative_models.Part,
            ]
        ],
    ]
) -> typing.List[vertexai.generative_models._generative_models.Content]

Returns the prompt data, as a List[Content], assembled with variables if applicable. Can be ingested into model.generate_content to make API calls.

generate_content

generate_content(
    contents: typing.Union[
        typing.List[vertexai.generative_models._generative_models.Content],
        typing.List[typing.Dict[str, typing.Any]],
        str,
        vertexai.generative_models._generative_models.Image,
        vertexai.generative_models._generative_models.Part,
        typing.List[
            typing.Union[
                str,
                vertexai.generative_models._generative_models.Image,
                vertexai.generative_models._generative_models.Part,
            ]
        ],
    ],
    *,
    generation_config: typing.Optional[
        typing.Union[
            vertexai.generative_models._generative_models.GenerationConfig,
            typing.Dict[str, typing.Any],
        ]
    ] = None,
    safety_settings: typing.Optional[
        typing.Union[
            typing.List[vertexai.generative_models._generative_models.SafetySetting],
            typing.Dict[
                google.cloud.aiplatform_v1beta1.types.content.HarmCategory,
                google.cloud.aiplatform_v1beta1.types.content.SafetySetting.HarmBlockThreshold,
            ],
        ]
    ] = None,
    model_name: typing.Optional[str] = None,
    tools: typing.Optional[
        typing.List[vertexai.generative_models._generative_models.Tool]
    ] = None,
    tool_config: typing.Optional[
        vertexai.generative_models._generative_models.ToolConfig
    ] = None,
    stream: bool = False,
    system_instruction: typing.Optional[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
            typing.List[
                typing.Union[
                    str,
                    vertexai.generative_models._generative_models.Image,
                    vertexai.generative_models._generative_models.Part,
                ]
            ],
        ]
    ] = None
) -> typing.Union[
    vertexai.generative_models._generative_models.GenerationResponse,
    typing.Iterable[vertexai.generative_models._generative_models.GenerationResponse],
]

Generates content using the saved Prompt configs.

get_unassembled_prompt_data

get_unassembled_prompt_data() -> typing.Union[
    str,
    vertexai.generative_models._generative_models.Image,
    vertexai.generative_models._generative_models.Part,
    typing.List[
        typing.Union[
            str,
            vertexai.generative_models._generative_models.Image,
            vertexai.generative_models._generative_models.Part,
        ]
    ],
]

Returns the prompt data, without any variables replaced.