mirror of https://github.com/hwchase17/langchain
add the existing OpenWeatherMap tool to the public api (#4292)
[OpenWeatherMapAPIWrapper](harrison/character-chat-agentf70e18a5b3/docs/modules/agents/tools/examples/openweathermap.ipynb
) works wonderfully, but the _tool_ itself can't be used in master branch. - added OpenWeatherMap **tool** to the public api, to be loadable with `load_tools` by using "openweathermap-api" tool name (that name is used in the existing [docs](aff33d52c5/docs/modules/agents/tools/getting_started.md
), at the bottom of the page) - updated OpenWeatherMap tool's **description** to make the input format match what the API expects (e.g. `London,GB` instead of `'London,GB'`) - added [ecosystem documentation page for OpenWeatherMap](f9c41594fe/docs/ecosystem/openweathermap.md
) - added tool usage example to [OpenWeatherMap's notebook](f9c41594fe/docs/modules/agents/tools/examples/openweathermap.ipynb
) Let me know if there's something I missed or something needs to be updated! Or feel free to make edits yourself if that makes it easier for you 🙂
parent
6f47ab17a4
commit
66828ad231
@ -0,0 +1,34 @@
|
|||||||
|
# OpenWeatherMap API
|
||||||
|
|
||||||
|
This page covers how to use the OpenWeatherMap API within LangChain.
|
||||||
|
It is broken into two parts: installation and setup, and then references to specific OpenWeatherMap API wrappers.
|
||||||
|
|
||||||
|
## Installation and Setup
|
||||||
|
|
||||||
|
- Install requirements with `pip install pyowm`
|
||||||
|
- Go to OpenWeatherMap and sign up for an account to get your API key [here](https://openweathermap.org/api/)
|
||||||
|
- Set your API key as `OPENWEATHERMAP_API_KEY` environment variable
|
||||||
|
|
||||||
|
## Wrappers
|
||||||
|
|
||||||
|
### Utility
|
||||||
|
|
||||||
|
There exists a OpenWeatherMapAPIWrapper utility which wraps this API. To import this utility:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from langchain.utilities.openweathermap import OpenWeatherMapAPIWrapper
|
||||||
|
```
|
||||||
|
|
||||||
|
For a more detailed walkthrough of this wrapper, see [this notebook](../modules/agents/tools/examples/openweathermap.ipynb).
|
||||||
|
|
||||||
|
### Tool
|
||||||
|
|
||||||
|
You can also easily load this wrapper as a Tool (to use with an Agent).
|
||||||
|
You can do this with:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from langchain.agents import load_tools
|
||||||
|
tools = load_tools(["openweathermap-api"])
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information on this, see [this page](../modules/agents/tools/getting_started.md)
|
@ -1,128 +1,173 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
{
|
||||||
"attachments": {},
|
"cell_type": "markdown",
|
||||||
"cell_type": "markdown",
|
"id": "245a954a",
|
||||||
"id": "245a954a",
|
"metadata": {},
|
||||||
"metadata": {},
|
"source": [
|
||||||
"source": [
|
"# OpenWeatherMap API\n",
|
||||||
"# OpenWeatherMap API\n",
|
"\n",
|
||||||
"\n",
|
"This notebook goes over how to use the OpenWeatherMap component to fetch weather information.\n",
|
||||||
"This notebook goes over how to use the OpenWeatherMap component to fetch weather information.\n",
|
"\n",
|
||||||
"\n",
|
"First, you need to sign up for an OpenWeatherMap API key:\n",
|
||||||
"First, you need to sign up for an OpenWeatherMap API key:\n",
|
"\n",
|
||||||
"\n",
|
"1. Go to OpenWeatherMap and sign up for an API key [here](https://openweathermap.org/api/)\n",
|
||||||
"1. Go to OpenWeatherMap and sign up for an API key [here](https://openweathermap.org/api/)\n",
|
"2. pip install pyowm\n",
|
||||||
"2. pip install pyowm\n",
|
"\n",
|
||||||
"\n",
|
"Then we will need to set some environment variables:\n",
|
||||||
"Then we will need to set some environment variables:\n",
|
"1. Save your API KEY into OPENWEATHERMAP_API_KEY env variable\n",
|
||||||
"1. Save your API KEY into OPENWEATHERMAP_API_KEY env variable"
|
"\n",
|
||||||
]
|
"## Use the wrapper"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"cell_type": "code",
|
{
|
||||||
"execution_count": null,
|
"cell_type": "code",
|
||||||
"id": "961b3689",
|
"execution_count": 9,
|
||||||
"metadata": {
|
"id": "34bb5968",
|
||||||
"vscode": {
|
"metadata": {},
|
||||||
"languageId": "shellscript"
|
"outputs": [],
|
||||||
}
|
"source": [
|
||||||
},
|
"from langchain.utilities import OpenWeatherMapAPIWrapper\n",
|
||||||
"outputs": [],
|
"import os\n",
|
||||||
"source": [
|
"\n",
|
||||||
"pip install pyowm"
|
"os.environ[\"OPENWEATHERMAP_API_KEY\"] = \"\"\n",
|
||||||
]
|
"\n",
|
||||||
},
|
"weather = OpenWeatherMapAPIWrapper()"
|
||||||
{
|
]
|
||||||
"cell_type": "code",
|
},
|
||||||
"execution_count": 35,
|
{
|
||||||
"id": "34bb5968",
|
"cell_type": "code",
|
||||||
"metadata": {},
|
"execution_count": 10,
|
||||||
"outputs": [],
|
"id": "ac4910f8",
|
||||||
"source": [
|
"metadata": {},
|
||||||
"import os\n",
|
"outputs": [
|
||||||
"os.environ[\"OPENWEATHERMAP_API_KEY\"] = \"\""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 36,
|
|
||||||
"id": "ac4910f8",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"from langchain.utilities import OpenWeatherMapAPIWrapper"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"name": "stdout",
|
||||||
"execution_count": 37,
|
"output_type": "stream",
|
||||||
"id": "84b8f773",
|
"text": [
|
||||||
"metadata": {},
|
"In London,GB, the current weather is as follows:\n",
|
||||||
"outputs": [],
|
"Detailed status: broken clouds\n",
|
||||||
"source": [
|
"Wind speed: 2.57 m/s, direction: 240°\n",
|
||||||
"weather = OpenWeatherMapAPIWrapper()"
|
"Humidity: 55%\n",
|
||||||
]
|
"Temperature: \n",
|
||||||
},
|
" - Current: 20.12°C\n",
|
||||||
|
" - High: 21.75°C\n",
|
||||||
|
" - Low: 18.68°C\n",
|
||||||
|
" - Feels like: 19.62°C\n",
|
||||||
|
"Rain: {}\n",
|
||||||
|
"Heat index: None\n",
|
||||||
|
"Cloud cover: 75%\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"weather_data = weather.run(\"London,GB\")\n",
|
||||||
|
"print(weather_data)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "e73cfa56",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Use the tool"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"id": "b3367417",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"from langchain.llms import OpenAI\n",
|
||||||
|
"from langchain.agents import load_tools, initialize_agent, AgentType\n",
|
||||||
|
"import os\n",
|
||||||
|
"\n",
|
||||||
|
"os.environ[\"OPENAI_API_KEY\"] = \"\"\n",
|
||||||
|
"os.environ[\"OPENWEATHERMAP_API_KEY\"] = \"\"\n",
|
||||||
|
"\n",
|
||||||
|
"llm = OpenAI(temperature=0)\n",
|
||||||
|
"\n",
|
||||||
|
"tools = load_tools([\"openweathermap-api\"], llm)\n",
|
||||||
|
"\n",
|
||||||
|
"agent_chain = initialize_agent(\n",
|
||||||
|
" tools=tools,\n",
|
||||||
|
" llm=llm,\n",
|
||||||
|
" agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n",
|
||||||
|
" verbose=True\n",
|
||||||
|
")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"id": "bf4f6854",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"name": "stdout",
|
||||||
"execution_count": 38,
|
"output_type": "stream",
|
||||||
"id": "9651f324-e74a-4f08-a28a-89db029f66f8",
|
"text": [
|
||||||
"metadata": {},
|
"\n",
|
||||||
"outputs": [],
|
"\n",
|
||||||
"source": [
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
||||||
"weather_data = weather.run(\"London,GB\")"
|
"\u001b[32;1m\u001b[1;3m I need to find out the current weather in London.\n",
|
||||||
]
|
"Action: OpenWeatherMap\n",
|
||||||
|
"Action Input: London,GB\u001b[0m\n",
|
||||||
|
"Observation: \u001b[36;1m\u001b[1;3mIn London,GB, the current weather is as follows:\n",
|
||||||
|
"Detailed status: broken clouds\n",
|
||||||
|
"Wind speed: 2.57 m/s, direction: 240°\n",
|
||||||
|
"Humidity: 56%\n",
|
||||||
|
"Temperature: \n",
|
||||||
|
" - Current: 20.11°C\n",
|
||||||
|
" - High: 21.75°C\n",
|
||||||
|
" - Low: 18.68°C\n",
|
||||||
|
" - Feels like: 19.64°C\n",
|
||||||
|
"Rain: {}\n",
|
||||||
|
"Heat index: None\n",
|
||||||
|
"Cloud cover: 75%\u001b[0m\n",
|
||||||
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the current weather in London.\n",
|
||||||
|
"Final Answer: The current weather in London is broken clouds, with a wind speed of 2.57 m/s, direction 240°, humidity of 56%, temperature of 20.11°C, high of 21.75°C, low of 18.68°C, and a heat index of None.\u001b[0m\n",
|
||||||
|
"\n",
|
||||||
|
"\u001b[1m> Finished chain.\u001b[0m\n"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"data": {
|
||||||
"execution_count": 39,
|
"text/plain": [
|
||||||
"id": "028f4cba",
|
"'The current weather in London is broken clouds, with a wind speed of 2.57 m/s, direction 240°, humidity of 56%, temperature of 20.11°C, high of 21.75°C, low of 18.68°C, and a heat index of None.'"
|
||||||
"metadata": {},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "stdout",
|
|
||||||
"output_type": "stream",
|
|
||||||
"text": [
|
|
||||||
"In London,GB, the current weather is as follows:\n",
|
|
||||||
"Detailed status: overcast clouds\n",
|
|
||||||
"Wind speed: 4.63 m/s, direction: 150°\n",
|
|
||||||
"Humidity: 67%\n",
|
|
||||||
"Temperature: \n",
|
|
||||||
" - Current: 5.35°C\n",
|
|
||||||
" - High: 6.26°C\n",
|
|
||||||
" - Low: 3.49°C\n",
|
|
||||||
" - Feels like: 1.95°C\n",
|
|
||||||
"Rain: {}\n",
|
|
||||||
"Heat index: None\n",
|
|
||||||
"Cloud cover: 100%\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"print(weather_data)"
|
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"source": [
|
||||||
"kernelspec": {
|
"agent_chain.run(\"What's the weather like in London?\")"
|
||||||
"display_name": "Python 3",
|
]
|
||||||
"language": "python",
|
}
|
||||||
"name": "python3"
|
],
|
||||||
},
|
"metadata": {
|
||||||
"language_info": {
|
"kernelspec": {
|
||||||
"codemirror_mode": {
|
"display_name": "Python 3 (ipykernel)",
|
||||||
"name": "ipython",
|
"language": "python",
|
||||||
"version": 3
|
"name": "python3"
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython3",
|
|
||||||
"version": "3.11.2"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"language_info": {
|
||||||
"nbformat_minor": 5
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.8.16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
}
|
}
|
||||||
|
@ -1 +1,8 @@
|
|||||||
"""OpenWeatherMap API toolkit."""
|
"""OpenWeatherMap API toolkit."""
|
||||||
|
|
||||||
|
|
||||||
|
from langchain.tools.openweathermap.tool import OpenWeatherMapQueryRun
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"OpenWeatherMapQueryRun",
|
||||||
|
]
|
||||||
|
Loading…
Reference in New Issue