Source code for langchain_ibm.agent_toolkits.utility.utils
"""Utility helpers."""
from copy import deepcopy
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from langchain_ibm.agent_toolkits.utility.toolkit import WatsonxTool
[docs]
def convert_to_watsonx_tool(tool: "WatsonxTool") -> dict:
"""Convert `WatsonxTool` to watsonx tool structure.
Args:
tool: `WatsonxTool` from `WatsonxToolkit`
???+ example "Example"
```python
from langchain_ibm.agents_toolkits.utility import WatsonxToolkit
watsonx_toolkit = WatsonxToolkit(
url="https://us-south.ml.cloud.ibm.com",
apikey="*****",
)
weather_tool = watsonx_toolkit.get_tool("Weather")
convert_to_watsonx_tool(weather_tool)
```
```json
{
"type": "function",
"function": {
"name": "Weather",
"description": "Find the weather for a city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"title": "location",
"description": "Name of the location",
"type": "string",
},
"country": {
"title": "country",
"description": "Name of the state or country",
"type": "string",
},
},
"required": ["location"],
},
},
}
```
"""
def parse_parameters(input_schema: dict | None) -> dict:
if input_schema:
parameters = deepcopy(input_schema)
else:
parameters = {
"type": "object",
"properties": {
"input": {
"description": "Input to be used when running tool.",
"type": "string",
},
},
"required": ["input"],
}
return parameters
return {
"type": "function",
"function": {
"name": tool.name,
"description": tool.description,
"parameters": parse_parameters(tool.tool_input_schema),
},
}