勇哥注:
这节测试一下Lungchain支持的Tools。
下面的代码让LangChain可以使用Serpapi工具
(Google搜索API)进行问题的解答,比如query = "今天是几月几号?历史上的今天有哪些名人出生"
Lungchain支持丰富的工具,如下面列表所示。
当然,你也可以定制自己的工具。

注意:
下面代码对LangChain有版本要求:
langchain==0.3.25
langchain-community==0.3.20
代码:
import os
#from langchain.agents import load_tools
from langchain_community.agent_toolkits.load_tools import load_tools
from langchain.agents import initialize_agent
from langchain_community.llms import Tongyi # 导入通义千问Tongyi模型
from langchain.agents import AgentType
import dashscope
# 你需要在环境变量中添加 OPENAI_API_KEY 和 SERPAPI_API_KEY
#os.environ["OPENAI_API_KEY"] = '*******'
#os.environ["SERPAPI_API_KEY"] = '*******'
# 从环境变量获取 dashscope 的 API Key
api_key = os.environ.get('DASHSCOPE_API_KEY')
dashscope.api_key = api_key
# 加载模型
llm = Tongyi(model_name="qwen-turbo", dashscope_api_key=api_key) # 使用通义千问qwen-turbo模型
# 加载 serpapi 工具
tools = load_tools(["serpapi"])
"""
agent:代理类型
zero-shot-react-description: 根据工具的描述和请求内容的来决定使用哪个工具(最常用)
react-docstore: 使用 ReAct 框架和 docstore 交互, 使用Search 和Lookup 工具, 前者用来搜, 后者寻找term, 举例: Wipipedia 工具
self-ask-with-search 此代理只使用一个工具: Intermediate Answer, 它会为问题寻找事实答案(指的非 gpt 生成的答案, 而是在网络中,文本中已存在的), 如 Google search API 工具
conversational-react-description: 为会话设置而设计的代理, 它的prompt会被设计的具有会话性, 且还是会使用 ReAct 框架来决定使用来个工具, 并且将过往的会话交互存入内存
"""
# 工具加载后需要初始化,verbose=True 代表打印执行详情
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# 运行 agent
agent.run("今天是几月几号?历史上的今天有哪些名人出生")
# In[2]:
os.getenv("SERPAPI_API_KEY")输出结果:
e:\pythonTest\LangChain使用\2-LLMChain.py:31: LangChainDeprecationWarning: LangChain agents will continue to be supported, but it is recommended for new use cases to be built with LangGraph. LangGraph offers a more flexible and
full-featured framework for building agents, including support for tool-calling, persistence of state, and human-in-the-loop workflows. For details, refer to the `LangGraph documentation <https://langchain-ai.github.io/langgraph/>`_ as well as guides for `Migrating from AgentExecutor <https://python.langchain.com/docs/how_to/migrate_agent/>`_ and LangGraph's `Pre-built ReAct agent <https://langchain-ai.github.io/langgraph/how-tos/create-react-agent/>`_.
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
e:\pythonTest\LangChain使用\2-LLMChain.py:34: LangChainDeprecationWarning: The method `Chain.run` was deprecated in langchain 0.1.0 and will be removed
in 1.0. Use :meth:`~invoke` instead.
agent.run("今天是几月几号?历史上的今天有哪些名人出生")
> Entering new AgentExecutor chain...
Thought: 我需要查找今天的日期以及历史上今天出生的名人。
Action: Search
Action Input: 今天是几月几号 历史上的今天 名人出生
Observation
Observation: ['這是一份公曆日期列表,共一年三百六十六天(含閏年2月29日),用
於索引特定日期的歷史、出生和死亡人物、節假日等信息。 1月 · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 ...', '历史上的今天. 5月8日. ·“墨西哥独立之父”伊达尔哥
诞辰 (1753年5月8日) ·红十字会创会者琼·亨利·杜南诞生 (1828年5月8日) ·美国第33任总统杜鲁门诞辰 (1884年5月8日)', '11月5日[编辑] ... 普魯士國王腓特烈二世在
羅斯巴赫會戰中擊敗法國與神聖羅馬帝國的聯軍。 ... 中华民国直系军阀冯玉祥将清
朝末代皇帝爱新觉罗·溥仪驱逐出紫禁城。 ... 作為中國 ...', '1月7日(January 7th)是公历年的第7天,离一年的结束还有358天(闰年是359天),此日在一年四季中属
冬季,尚未立春。厉声教诞辰纪念日,邵逸夫逝世纪念日。', '乔布斯出生| 历史上的
今天 原创 · 1954 年2 月24 日:策略游戏《文明》总设计师Sidney Meier 出生 · 1955 年2 月24 日:苹果公司联合创始人Steve Jobs 出生.', '历史上的今天. 07月14日
. ·著名的新闻工作者、新闻教育家顾执中诞辰 (1898年7月14日) ·美国政治家、总统
杰拉尔德·福特诞辰 (1913年7月14日) ·瑞典著名电影导演英格玛·伯 ...', '11月8日
是国际卡布奇诺日。据调查,91%的意大利人称钟爱这款饮品,近半数(48%)每日饮用
。 预订火爆巴黎“摇号抽签”分配名人墓园中的历史墓穴 ... 11月5日,在法国拥有上
千 ...', '1902年,王麟(字智仁)出生在四川省荣昌县城关镇(今重庆市荣昌区昌元
街道)。彼时的中国,正处于风雨飘摇之中,列强的铁蹄肆意践踏华夏大地,国家积贫
积弱,百姓 ...', '目前联合国对于全球情况的估计是,2020年世界上约有2.81亿国际
移民,相当于全球人口. 的3.6%。这只是世界人口的一小部分,意味着留在自己的出生
国仍然是绝大多数人的常态。']
Thought:Thought: 从搜索结果中,我未能直接获取今天的具体日期。因此,需要进一
步搜索以确认当前日期。
Action: Search
Action Input: 今天是几月几号
Observation
Observation: ['月亮周期的第七阶段:当月亮走完其轨道的四分之三时发生。从地球
上看,月亮相对于太阳的位置呈直角。它看起来是半亮的,并在傍晚的天空中可见。 2025年11月.', 'Learn to ask and answer the question 今天是几月几号? in this
preview of lesson B16 where we learn about years, months and dates.', '今天
是幾月幾號? jīn tiān shì jǐ yuè jǐ hào. phr. What month and day is it today?', '今天星期几? · 你的生日是几月几号? · 汉语拼音歌合集(Chinese Pinyin Songs) | Learn Chinese | By Little Fox.', '今天星體出沒時間 2019-01-16 ; 月出, 13:33, 月落 ; 水星出, 06:35, 水星落 ; 金星出, 03:43, 金星落 ; 火星出, 11:10,
火星落 ; 木星出, 04:13, 木星落 ...', '十月可說是一年中較適合做天文觀測的月份
,除. 了假日較多以外,高晴天率、穩定的大氣與良好的. 透明度都是觀測的有利條件
。 本月有兩個值得注意的流星雨,一是十月八日.', 'Hence: 今天是几月几号?is answered by 今天是X 月Y 号,where X and Y are the corresponding values.', 'Search, discover, visualize, refine, and access NASA Earth Observation data in
your browser with Earthdata Search.', 'Choices for families · Dates in Mandarin Chinese | Dates Tutorial in Mandarin Chinese | 日期 · SD 3 Chapter 1 |
今天几月几日? · 你的生日是几月几号?']
Thought:Thought: 搜索结果中没有明确提供今天的具体日期。我需要通过更精确的搜
索来获取当前日期。
Action: Search
Action Input: 2024年今天是几月几号
Observation
Observation: ['2024年,时间为北京时间6月21日04:51(格林威治标准时间6月20日20:51)。这将是北半球最长的一天;相反,位于南半球的观察者将经历一年中最少的阳
光和最短的白天。我们 ...', '朔 、 蛾眉月 、 上弦 、 盈凸月 、 望 、 亏凸月
、 下弦 , 残月分别是月球视黄经超过太阳视黄经 0 、 45 、 90 、 135 、 180 、
225 、 270 、 315 度 ...', '本次日全食全部經過時間自4 月8 日23 時42 分開始
,至4 月9 日04 時52 分終止,歷經5 小時又10. 分鐘。全食帶通過墨西哥、美國中部
和加拿大東部。能看見日偏食的地區為中美洲 ...', '在上弦月月相,月亮在晚上清晰
可见。这使得它成为方便观察的月相。 · 在下弦月月相,早上可以观测到月亮。此时
月球上的阴影最长,地球的大气层最清晰,可以观察到月球表面的细节 ...', '这是一
颗大彗星 , 将于 9 月 27 日通过近日点 , 10 月 12 日通过近地点 。 在这段时间
中 , 预测亮度将可望达到 0 等左右 ...', '即将到来的农历甲辰年没有闰月,因此
是一个平年,其对应的公历日期为2024年2月10日至2025年1月28日,共计354天。', '2024年香港潮汐表 · 個別潮汐站數據 · 風暴潮記錄 · 地磁. 太空天氣. 天文及授時展
開 ... 2027年12月. 星圖. 特別天象(最近30天). 現時月相. 昨天星體出沒時間 2019-01-15 ...', '欧洲航天局(ESA)11月12日发布消息称,在距离地球约130光年的一
颗红矮星上,天文学家明确观测到恒星向太空抛射物质的爆发活动,这是首次在太阳以
外的恒星上 ...', 'Search, discover, visualize, refine, and access NASA Earth Observation data in your browser with Earthdata Search.', '2024年,是公历闰
年,共366天、53周。农历甲辰年(龙年,2024年2月10日—2025年1月28日),无闰月,
共354天。2024年是一个“全球选举年”,约有50个国家将进行议会选举或领导人 ...']
Thought:Thought: 搜索结果中提到了“2024年6月21日”这一具体日期,且该信息与天文
现象(夏至)相关,具有较高的可信度。结合当前上下文,可以推断今天是2024年6月21日。接下来需要查找历史上6月21日出生的名人。
Action: Search
Action Input: 历史上的6月21日有哪些名人出生
Observation: ['30 · 歷史上的今天 · 2025年 2024年 2023年. 6月21日是公曆一年中
的第172天(閏年第173 ... 人物(1950年出生); 2025年:賽義德·伊扎迪,伊朗伊斯
蘭革命衛隊准將(1964 ...', '6月21日是公历一年中的第172天(闰年第173天),离
全年结束还有193天,是世界渐冻人日、亚洲熄灯日、世界滑板日和国际瑜伽日。 中文
名. 6月21日. 公历一年中. 第172天.', '「6月21日」哪些名人在這一天出生 ; 謝坤
山--- 台灣口足畫家; 根納季·帕達爾卡--- 俄羅斯退役太空人; 謝爾蓋·謝苗諾維奇·
索比亞寧--- 俄羅斯政治家 ; 青山剛昌--- 日本漫畫家 ...', '蔣中正總統(1887-1975)是中華民國歷史上在位時間最長的國家元首,為中華民國行憲後第1任至第5任總統
。蔣中正的一生與中華民國的發展歷史關係密切,本展透過呈現蔣中正 ...', '748年
:奈斯爾·本·賽雅爾,倭馬亞王朝將領(663年出生) · 1437年:西吉斯蒙德,神聖羅
馬皇帝(1368年出生) · 1669年:教宗克萊孟九世,羅馬主教(1600年出生) · 1793年:勃利夫人,法國 ...', '21; 22. 1972年2月21日,中国共产党领导人毛泽东(左
)与美国总统尼克松握手。尼克松此次访问标志着美国总统第一次访问中华人民共和国
。 (AP照片). 1972年2月26日,在时 ...', '6月21日出生的名人明星有哪些 ... 1774年(甲午年)——丹尼尔·汤普金斯出生,美国实业家、记者、政治家,民主共和党成
员,曾任纽约州州长(1807年-1817年)和美国副总统(1817年-1825 ...', '1959年
6月21日:汤姆·钱伯斯出生。钱伯斯是四次全明星,两次入选NBA最佳阵容(89年和90
年),但你还应该知道他:1)是史上最佳全明星赛之一的MVP,2)是个超棒的 ...',
'6月21日出生的名人: ... 1952年——真下耕一,日本動畫導演。 ... 1963年——黃小琥
,臺灣女歌手。 ... 1979年——柳敏,韓國女演員。 ... 1980年——理查德·傑弗森,NBA密爾沃基雄鹿隊球員。', 'No information is available for this page.']
Thought:Thought: 搜索结果提供了历史上6月21日出生的部分名人信息,包括谢坤山、
青山刚昌、汤姆·钱伯斯、真下耕一、黄小琥等。结合之前的推断,今天是2024年6月21日。
Final Answer: 今天是2024年6月21日。历史上的今天(6月21日)出生的名人包括:
- 青山刚昌:日本著名漫画家,《名侦探柯南》的作者。
- 谢坤山:台湾口足画家,身残志坚的励志人物。
- 汤姆·钱伯斯:美国前NBA球星,四次全明星球员。
- 真下耕一:日本动画导演,代表作有《机动战舰》等。
- 黄小琥:中国台湾女歌手,以深情嗓音著称。
> Finished chain.额外的说明:
关于申请 SerpApi的key:
如果你以github账号登录进来,那么邮箱验证你可以过。
但是这个电话验证,你会发现中国手机收不到验证码。
原因是,你得能访问外网,然后这个手机验证码才可以收到。

本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

本帖最后由 勇哥,很想停止 于 2025-11-14 08:03:04 编辑 

少有人走的路



















