Classes for working with the Gemini models.
Classes
Candidate
Candidate()A response candidate generated by the model.
ChatSession
ChatSession(
model: vertexai.generative_models._generative_models._GenerativeModel,
*,
history: typing.Optional[
typing.List[vertexai.generative_models._generative_models.Content]
] = None,
raise_on_blocked: bool = True
)Chat session holds the chat history.
Content
Content(
*,
parts: typing.Optional[
typing.List[vertexai.generative_models._generative_models.Part]
] = None,
role: typing.Optional[str] = None
)The multi-part content of a message.
Usage:
response = model.generate_content(contents=[
Content(role="user", parts=[Part.from_text("Why is sky blue?")])
])
```
FinishReason
FinishReason(value)The reason why the model stopped generating tokens. If empty, the model has not stopped generating the tokens.
Values: FINISH_REASON_UNSPECIFIED (0): The finish reason is unspecified. STOP (1): Natural stop point of the model or provided stop sequence. MAX_TOKENS (2): The maximum number of tokens as specified in the request was reached. SAFETY (3): The token generation was stopped as the response was flagged for safety reasons. NOTE: When streaming the Candidate.content will be empty if content filters blocked the output. RECITATION (4): The token generation was stopped as the response was flagged for unauthorized citations. OTHER (5): All other reasons that stopped the token generation
FunctionDeclaration
FunctionDeclaration(
*,
name: str,
parameters: typing.Dict[str, typing.Any],
description: typing.Optional[str] = None
)A representation of a function declaration.
Usage: Create function declaration and tool:
get_current_weather_func = generative_models.FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit",
]
}
},
"required": [
"location"
]
},
)
weather_tool = generative_models.Tool(
function_declarations=[get_current_weather_func],
)
```
Use tool in `GenerativeModel.generate_content`:
```
model = GenerativeModel("gemini-pro")
print(model.generate_content(
"What is the weather like in Boston?",
# You can specify tools when creating a model to avoid having to send them with every request.
tools=[weather_tool],
))
```
Use tool in chat:
```
fc_model = GenerativeModel(
"gemini-pro",
# You can specify tools when creating a model to avoid having to send them with every request.
tools=[weather_tool],
)
fc_chat = model.start_chat()
print(fc_chat.send_message("What is the weather like in Boston?"))
print(fc_chat.send_message(
Part.from_function_response(
name="get_current_weather",
response={
"content": {"weather_there": "super nice"},
}
),
))
```
GenerationConfig
GenerationConfig(
*,
temperature: typing.Optional[float] = None,
top_p: typing.Optional[float] = None,
top_k: typing.Optional[int] = None,
candidate_count: typing.Optional[int] = None,
max_output_tokens: typing.Optional[int] = None,
stop_sequences: typing.Optional[typing.List[str]] = None
)Parameters for the generation.
GenerationResponse
GenerationResponse()The response from the model.
HarmBlockThreshold
HarmBlockThreshold(value)Probability based thresholds levels for blocking.
Values: HARM_BLOCK_THRESHOLD_UNSPECIFIED (0): Unspecified harm block threshold. BLOCK_LOW_AND_ABOVE (1): Block low threshold and above (i.e. block more). BLOCK_MEDIUM_AND_ABOVE (2): Block medium threshold and above. BLOCK_ONLY_HIGH (3): Block only high threshold (i.e. block less). BLOCK_NONE (4): Block none.
HarmCategory
HarmCategory(value)Harm categories that will block the content.
Values: HARM_CATEGORY_UNSPECIFIED (0): The harm category is unspecified. HARM_CATEGORY_HATE_SPEECH (1): The harm category is hate speech. HARM_CATEGORY_DANGEROUS_CONTENT (2): The harm category is dangerous content. HARM_CATEGORY_HARASSMENT (3): The harm category is harassment. HARM_CATEGORY_SEXUALLY_EXPLICIT (4): The harm category is sexually explicit content.
Image
Image()The image that can be sent to a generative model.
Part
Part()A part of a multi-part Content message.
Usage:
text_part = Part.from_text("Why is sky blue?")
image_part = Part.from_image(Image.load_from_file("image.jpg"))
video_part = Part.from_uri(uri="gs://.../video.mp4", mime_type="video/mp4")
function_response_part = Part.from_function_response(
name="get_current_weather",
response={
"content": {"weather_there": "super nice"},
}
)
response1 = model.generate_content([text_part, image_part])
response2 = model.generate_content(video_part)
response3 = chat.send_message(function_response_part)
```
ResponseBlockedError
ResponseBlockedError(
message: str,
request_contents: typing.List[
vertexai.generative_models._generative_models.Content
],
responses: typing.List[
vertexai.generative_models._generative_models.GenerationResponse
],
)Common base class for all non-exit exceptions.
Tool
Tool(
function_declarations: typing.List[
vertexai.generative_models._generative_models.FunctionDeclaration
],
)A collection of functions that the model may use to generate response.
Usage: Create tool from function declarations:
get_current_weather_func = generative_models.FunctionDeclaration(...)
weather_tool = generative_models.Tool(
function_declarations=[get_current_weather_func],
)
```
Use tool in `GenerativeModel.generate_content`:
```
model = GenerativeModel("gemini-pro")
print(model.generate_content(
"What is the weather like in Boston?",
# You can specify tools when creating a model to avoid having to send them with every request.
tools=[weather_tool],
))
```
Use tool in chat:
```
fc_model = GenerativeModel(
"gemini-pro",
# You can specify tools when creating a model to avoid having to send them with every request.
tools=[weather_tool],
)
fc_chat = fc_model.start_chat()
print(fc_chat.send_message("What is the weather like in Boston?"))
print(fc_chat.send_message(
Part.from_function_response(
name="get_current_weather",
response={
"content": {"weather_there": "super nice"},
}
),
))
```