chat.invoke("Write me a ballad about LangChain")
    """
    model: str = Field(
        ...,
        description="""The name of the model to use.
Supported examples:
    - gemini-pro""",
    )
    max_output_tokens: int = Field(default=None, description="Max output tokens")
    client: Any  #: :meta private:
    google_api_key: Optional[SecretStr] = None
    temperature: Optional[float] = None
    """Run inference with this temperature. Must by in the closed
       interval [0.0, 1.0]."""
    top_k: Optional[int] = None
    """Decode using top-k sampling: consider the set of top_k most probable tokens.
       Must be positive."""
    top_p: Optional[int] = None
    """The maximum cumulative probability of tokens to consider when sampling.
        The model uses combined Top-k and nucleus sampling.
        Tokens are sorted based on their assigned probabilities so
        that only the most likely tokens are considered. Top-k
        sampling directly limits the maximum number of tokens to
        consider, while Nucleus sampling limits number of tokens
        based on the cumulative probability.
        Note: The default value varies by model, see the
        `Model.top_p` attribute of the `Model` returned the
        `genai.get_model` function.
    """
    n: int = Field(default=1, alias="candidate_count")
    """Number of chat completions to generate for each prompt. Note that the API may
       not return the full n completions if duplicates are generated."""
    _generative_model: Any  #: :meta private:
    class Config:
        allow_population_by_field_name = True
    @property
    def lc_secrets(self) -> Dict[str, str]: