```
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"
]
},
# Optional:
response={
"type": "object",
"properties": {
"weather": {
"type": "string",
"description": "The weather in the city"
},
},
},
)
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:
```
model = GenerativeModel(
"gemini-pro",
# You can specify tools when creating a model to avoid having to send them with every request.
tools=[weather_tool],
)
chat = model.start_chat()
print(chat.send_message("What is the weather like in Boston?"))
print(chat.send_message(
Part.from_function_response(
name="get_current_weather",
response={
"content": {"weather_there": "super nice"},
}
),
))
```
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[],null,["# Class FunctionDeclaration (1.95.1)\n\nVersion latestkeyboard_arrow_down\n\n- [1.95.1 (latest)](/python/docs/reference/vertexai/latest/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.94.0](/python/docs/reference/vertexai/1.94.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.93.1](/python/docs/reference/vertexai/1.93.1/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.92.0](/python/docs/reference/vertexai/1.92.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.91.0](/python/docs/reference/vertexai/1.91.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.90.0](/python/docs/reference/vertexai/1.90.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.89.0](/python/docs/reference/vertexai/1.89.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.88.0](/python/docs/reference/vertexai/1.88.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.87.0](/python/docs/reference/vertexai/1.87.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.86.0](/python/docs/reference/vertexai/1.86.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.85.0](/python/docs/reference/vertexai/1.85.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.84.0](/python/docs/reference/vertexai/1.84.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.83.0](/python/docs/reference/vertexai/1.83.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.82.0](/python/docs/reference/vertexai/1.82.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.81.0](/python/docs/reference/vertexai/1.81.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.80.0](/python/docs/reference/vertexai/1.80.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.79.0](/python/docs/reference/vertexai/1.79.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.78.0](/python/docs/reference/vertexai/1.78.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.77.0](/python/docs/reference/vertexai/1.77.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.76.0](/python/docs/reference/vertexai/1.76.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.75.0](/python/docs/reference/vertexai/1.75.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.74.0](/python/docs/reference/vertexai/1.74.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.73.0](/python/docs/reference/vertexai/1.73.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.72.0](/python/docs/reference/vertexai/1.72.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.71.1](/python/docs/reference/vertexai/1.71.1/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.70.0](/python/docs/reference/vertexai/1.70.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.69.0](/python/docs/reference/vertexai/1.69.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.68.0](/python/docs/reference/vertexai/1.68.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.67.1](/python/docs/reference/vertexai/1.67.1/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.66.0](/python/docs/reference/vertexai/1.66.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.65.0](/python/docs/reference/vertexai/1.65.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.63.0](/python/docs/reference/vertexai/1.63.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.62.0](/python/docs/reference/vertexai/1.62.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.60.0](/python/docs/reference/vertexai/1.60.0/vertexai.preview.generative_models.FunctionDeclaration)\n- [1.59.0](/python/docs/reference/vertexai/1.59.0/vertexai.preview.generative_models.FunctionDeclaration) \n\n FunctionDeclaration(\n *,\n name: str,\n parameters: typing.Dict[str, typing.Any],\n description: typing.Optional[str] = None,\n response: typing.Optional[typing.Dict[str, typing.Any]] = None\n )\n\nA representation of a function declaration.\n\nUsage:\nCreate function declaration and tool: \n\n ```\n get_current_weather_func = generative_models.FunctionDeclaration(\n name=\"get_current_weather\",\n description=\"Get the current weather in a given location\",\n parameters={\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\",\n \"description\": \"The city and state, e.g. San Francisco, CA\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"enum\": [\n \"celsius\",\n \"fahrenheit\",\n ]\n }\n },\n \"required\": [\n \"location\"\n ]\n },\n # Optional:\n response={\n \"type\": \"object\",\n \"properties\": {\n \"weather\": {\n \"type\": \"string\",\n \"description\": \"The weather in the city\"\n },\n },\n },\n )\n weather_tool = generative_models.Tool(\n function_declarations=[get_current_weather_func],\n )\n ```\n\n Use tool in `GenerativeModel.generate_content`:\n\n ```\n model = GenerativeModel(\"gemini-pro\")\n print(model.generate_content(\n \"What is the weather like in Boston?\",\n # You can specify tools when creating a model to avoid having to send them with every request.\n tools=[weather_tool],\n ))\n ```\n\n Use tool in chat:\n\n ```\n model = GenerativeModel(\n \"gemini-pro\",\n # You can specify tools when creating a model to avoid having to send them with every request.\n tools=[weather_tool],\n )\n chat = model.start_chat()\n print(chat.send_message(\"What is the weather like in Boston?\"))\n print(chat.send_message(\n Part.from_function_response(\n name=\"get_current_weather\",\n response={\n \"content\": {\"weather_there\": \"super nice\"},\n }\n ),\n ))\n ```\n\nMethods\n-------\n\n### FunctionDeclaration\n\n FunctionDeclaration(\n *,\n name: str,\n parameters: typing.Dict[str, typing.Any],\n description: typing.Optional[str] = None,\n response: typing.Optional[typing.Dict[str, typing.Any]] = None\n )\n\nConstructs a FunctionDeclaration."]]