# bind_tools

> **Method** in `langchain_anthropic`

📖 [View in docs](https://reference.langchain.com/python/langchain-anthropic/chat_models/ChatAnthropic/bind_tools)

Bind tool-like objects to `ChatAnthropic`.

## Signature

```python
bind_tools(
    self,
    tools: Sequence[Mapping[str, Any] | type | Callable | BaseTool],
    *,
    tool_choice: dict[str, str] | str | None = None,
    parallel_tool_calls: bool | None = None,
    strict: bool | None = None,
    **kwargs: Any = {},
) -> Runnable[LanguageModelInput, AIMessage]
```

## Description

**Example:**

```python
from langchain_anthropic import ChatAnthropic
from pydantic import BaseModel, Field

class GetWeather(BaseModel):
    '''Get the current weather in a given location'''

    location: str = Field(..., description="The city and state, e.g. San Francisco, CA")

class GetPrice(BaseModel):
    '''Get the price of a specific product.'''

    product: str = Field(..., description="The product to look up.")

model = ChatAnthropic(model="claude-sonnet-4-5-20250929", temperature=0)
model_with_tools = model.bind_tools([GetWeather, GetPrice])
model_with_tools.invoke(
    "What is the weather like in San Francisco",
)
# -> AIMessage(
#     content=[
#         {'text': '<thinking>\nBased on the user\'s question, the relevant function to call is GetWeather, which requires the "location" parameter.\n\nThe user has directly specified the location as "San Francisco". Since San Francisco is a well known city, I can reasonably infer they mean San Francisco, CA without needing the state specified.\n\nAll the required parameters are provided, so I can proceed with the API call.\n</thinking>', 'type': 'text'},
#         {'text': None, 'type': 'tool_use', 'id': 'toolu_01SCgExKzQ7eqSkMHfygvYuu', 'name': 'GetWeather', 'input': {'location': 'San Francisco, CA'}}
#     ],
#     response_metadata={'id': 'msg_01GM3zQtoFv8jGQMW7abLnhi', 'model': 'claude-sonnet-4-5-20250929', 'stop_reason': 'tool_use', 'stop_sequence': None, 'usage': {'input_tokens': 487, 'output_tokens': 145}},
#     id='run-87b1331e-9251-4a68-acef-f0a018b639cc-0'
# )
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `tools` | `Sequence[Mapping[str, Any] \| type \| Callable \| BaseTool]` | Yes | A list of tool definitions to bind to this chat model.  Supports Anthropic format tool schemas and any tool definition handled by [`convert_to_openai_tool`][langchain_core.utils.function_calling.convert_to_openai_tool]. |
| `tool_choice` | `dict[str, str] \| str \| None` | No | Which tool to require the model to call. Options are:  - Name of the tool as a string or as dict `{"type": "tool", "name": "<<tool_name>>"}`: calls corresponding tool - `'auto'`, `{"type: "auto"}`, or `None`: automatically selects a tool (including no tool) - `'any'` or `{"type: "any"}`: force at least one tool to be called (default: `None`) |
| `parallel_tool_calls` | `bool \| None` | No | Set to `False` to disable parallel tool use.  Defaults to `None` (no specification, which allows parallel tool use).  !!! version-added "Added in `langchain-anthropic` 0.3.2" (default: `None`) |
| `strict` | `bool \| None` | No | If `True`, Claude's schema adherence is applied to tool calls.  See the [docs](https://docs.langchain.com/oss/python/integrations/chat/anthropic#strict-tool-use) for more info. (default: `None`) |
| `kwargs` | `Any` | No | Any additional parameters are passed directly to `bind`. (default: `{}`) |

---

[View source on GitHub](https://github.com/langchain-ai/langchain/blob/e495651fef791650ca554d7b88b23327878a0be8/libs/partners/anthropic/langchain_anthropic/chat_models.py#L1847)