{ "cells": [ { "cell_type": "markdown", "id": "245a954a", "metadata": {}, "source": [ "# OpenWeatherMap API\n", "\n", "This notebook goes over how to use the OpenWeatherMap component to fetch weather information.\n", "\n", "First, you need to sign up for an OpenWeatherMap API key:\n", "\n", "1. Go to OpenWeatherMap and sign up for an API key [here](https://openweathermap.org/api/)\n", "2. pip install pyowm\n", "\n", "Then we will need to set some environment variables:\n", "1. Save your API KEY into OPENWEATHERMAP_API_KEY env variable\n", "\n", "## Use the wrapper" ] }, { "cell_type": "code", "execution_count": 9, "id": "34bb5968", "metadata": {}, "outputs": [], "source": [ "from langchain.utilities import OpenWeatherMapAPIWrapper\n", "import os\n", "\n", "os.environ[\"OPENWEATHERMAP_API_KEY\"] = \"\"\n", "\n", "weather = OpenWeatherMapAPIWrapper()" ] }, { "cell_type": "code", "execution_count": 10, "id": "ac4910f8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "In London,GB, the current weather is as follows:\n", "Detailed status: broken clouds\n", "Wind speed: 2.57 m/s, direction: 240°\n", "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, llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "id": "bf4f6854", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", "\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" ] }, { "data": { "text/plain": [ "'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.'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "agent_chain.run(\"What's the weather like in London?\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "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 }