langchain循序渐进之利用langchain构建一个智能体

270 阅读4分钟

上文我们创建了一个langchain 链,这篇文章中我们承接上面的逻辑,来生成一个智能体,所谓的智能体是langchain的组件,用来告诉大模型需要做什么事。 首先我们构建一个检索器

from langchain.tools.retriever import create_retriever_tool

retriever_tool = create_retriever_tool(
    retriever,
    "langsmith_search",
    "Search for information about LangSmith. For any questions about LangSmith, you must use this tool!",
)

我们使用Tavily检索工具,注册后需要配置环境变量(也可以省略注册,不配置api key)

export TAVILY_API_KEY=...
from langchain_community.tools.tavily_search import TavilySearchResults
search = TavilySearchResults()

构建一个工具列表

tools = [retriever_tool, search]

安装langchain hub和langchain openapi依赖

pip install langchainhub
pip install langchain-openai

现在我们构建一个预定义的提示词

from langchain_openai import ChatOpenAI  
from langchain import hub  
from langchain.agents import create_openai_functions_agent  
from langchain.agents import AgentExecutor  
  
# Get the prompt to use - you can modify this!  
prompt = hub.pull("hwchase17/openai-functions-agent")  
  
# You need to set OPENAI_API_KEY environment variable or pass it as argument `api_key`.  
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)  
agent = create_openai_functions_agent(llm, tools, prompt)  
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

agent_executor.invoke({"input": "what is the weather in beijing?"})

执行后输出


> Entering new AgentExecutor chain...

Invoking: `tavily_search_results_json` with `{'query': 'weather in Beijing'}`


[{'url': 'https://www.weatherapi.com/', 'content': "{'location': {'name': 'Beijing', 'region': 'Beijing', 'country': 'China', 'lat': 39.93, 'lon': 116.39, 'tz_id': 'Asia/Shanghai', 'localtime_epoch': 1715825219, 'localtime': '2024-05-16 10:06'}, 'current': {'last_updated_epoch': 1715824800, 'last_updated': '2024-05-16 10:00', 'temp_c': 21.0, 'temp_f': 69.8, 'is_day': 1, 'condition': {'text': 'Sunny', 'icon': '//cdn.weatherapi.com/weather/64x64/day/113.png', 'code': 1000}, 'wind_mph': 2.2, 'wind_kph': 3.6, 'wind_degree': 252, 'wind_dir': 'WSW', 'pressure_mb': 1009.0, 'pressure_in': 29.8, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 31, 'cloud': 0, 'feelslike_c': 21.0, 'feelslike_f': 69.8, 'vis_km': 10.0, 'vis_miles': 6.0, 'uv': 6.0, 'gust_mph': 6.7, 'gust_kph': 10.8}}"}, {'url': 'https://www.weatherandclimate.info/monitor/54511', 'content': 'The table shows the main characteristics of weather in Beijing - air temperature and precipitation shown for each day of may 2024. Monthly mean temperature normal for May: 21.3°. Monthly mean temperature in this month: 20.9°. Departure of temperature from normal: +1.1°. Precipitation normal for May: 36 mm. Precipitation total in this month ...'}, {'url': 'https://www.whereandwhen.net/when/east-asia/china/beijing/may/', 'content': 'Average weather throughout may\nperfect weather\nUV index: 7\nClear/Sunny62% of time\n62%\n24%\n7%\n7%\nClear/Sunny63% of time\n63%\n26%\n4%\n4%\nClear/Sunny60% of time\n60%\n22%\n8%\n7%\n65%\n20%\n8%\n6%\nEvolution of daily average temperature and precipitation in Beijing in may\nThese charts show the evolution of average minimum/maximum temperatures as well as average daily precipitation volume in Beijing in may.\n Find a flight to China:\nFind the best price for your hotel room\nFind the best price for your car rental\nSearch for a Flight+Hotel package to China in may\nSeasonal average climate and temperature of Beijing in may\nCheck below seasonal norms These datas are set from the weather statements of the last years of the month of may.\n Here is the day by day recorded weather in Beijing in may 2023:\nMap: other cities in China in may\nCities near Beijing:\nClick over cities on the map for information about the weather in may.\n The climate of Beijing in may is perfect\nFollowing the decrease of precipitation that accompanies the rise in temperatures, the weather in Beijing throughout May is simply perfect. And When site:\nBeijing in may: average Weather, Temperature and Climate\nYou want to go to Beijing in China in may : check the weather and seasonal norms below.\n'}, {'url': 'https://weatherspark.com/h/y/131055/2024/Historical-Weather-during-2024-in-Beijing-China', 'content': 'Beijing Temperature History 2024\nHourly Temperature in 2024 in Beijing\nCompare Beijing to another city:\nCloud Cover in 2024 in Beijing\nObserved Weather in 2024 in Beijing\nHours of Daylight and Twilight in 2024 in Beijing\nSunrise & Sunset with Twilight in 2024 in Beijing\nSolar Elevation and Azimuth in 2024 in Beijing\nMoon Rise, Set & Phases in 2024 in Beijing\nHumidity Comfort Levels in 2024 in Beijing\nWind Speed in 2024 in Beijing\nHourly Wind Speed in 2024 in Beijing\nHourly Wind Direction in 2024 in Beijing\nAtmospheric Pressure in 2024 in Beijing\nData Sources\n See all nearby weather stations\nLatest Report — 12:00 AM\nThu, Feb 1, 2024\xa0\xa0\xa0\xa025 min ago\xa0\xa0\xa0\xa0UTC 16:00\nCall Sign ZBAA\nTemp.\n12°F\nPrecipitation\nNo Report\nWind\n2.2 mph\nCloud Cover\nCeiling and Visibility OK\nRaw: ZBAA 011600Z While having the tremendous advantages of temporal and spatial completeness, these reconstructions: (1) are based on computer models that may have model-based errors, (2) are coarsely sampled on a 50 km grid and are therefore unable to reconstruct the local variations of many microclimates, and (3) have particular difficulty with the weather in some coastal areas, especially small islands.\n We further caution that our travel scores are only as good as the data that underpin them, that weather conditions at any given location and time are unpredictable and variable, and that the definition of the scores reflects a particular set of preferences that may not agree with those of any particular reader.\n See all nearby weather stations\nDisclaimer\nThe information on this site is provided as is, without any assurances as to its accuracy or suitability for any purpose.'}, {'url': 'https://www.weather-atlas.com/en/china/beijing-weather-may', 'content': 'In Beijing, China, during the entire year, the rain falls for 70.6 days and collects up to 572mm (22.52") of precipitation. Daylight In Beijing, the average length of the day in May is 14h and 23min. On the first day of May, sunrise is at 05:14 and sunset at 19:08. On the last day of the month, sunrise is at 04:48 and sunset at 19:36 CST. Sunshine'}]The current weather in Beijing is sunny with a temperature of 69.8°F (21°C). The wind speed is 3.6 kph from the WSW direction, and the humidity is 31%.