《2026 LangChain零基础入门:用AI应用框架快速搭建智能助手》第6课:Tools 与自定义工具 —— 给AI加上搜索、计算、读文件、调用外部API等能力,让代理更强大

《2026 LangChain零基础入门:用AI应用框架快速搭建智能助手》第6课:Tools 与自定义工具 —— 给AI加上搜索、计算、读文件、调用外部API等能力,让代理更强大 大家好我是链上杯子CSDN链上杯子。失业一年了天天想着怎么翻身。上节课让AI自己决定用工具后我发现如果能给它加上更多“手脚”比如实时搜索网页、读本地笔记、调用天气/股票API它就真的能帮我干活了。LangChain 的 Tools 系统就是为此设计的——你可以无限扩展工具让Agent变成一个“万能助手”。第一次看到AI自己上网搜资料再回答问题感觉像给它开了外挂。本课目标学会使用和自定义 LangChain Tools让Agent拥有外部能力计算、搜索、文件读写、API调用等。学完这节课你就能为Agent添加任意工具实现“AI自己去查资料、算数、读笔记”的强大交互。核心代码实战1. 内置工具 自定义工具最简单扩展fromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportAgentExecutor,create_react_agentfromlangchain_classic.promptsimportPromptTemplatefromlangchain.toolsimporttoolimportdatetime# 初始化模型llmChatOpenAI(openai_api_key,# ←←← 这里替换成你的 DeepSeek API Keyopenai_api_basehttps://api.deepseek.com/v1,modeldeepseek-chat,temperature0)# 自定义工具1当前时间tooldefget_current_time()-str:返回当前日期和时间returndatetime.datetime.now().strftime(%Y年%m月%d日 %H:%M:%S)# 自定义工具2简单计算器支持加减乘除tooldefcalculator(expression:str)-str:执行简单的数学表达式计算例如 2 3 * 4try:returnstr(eval(expression))exceptExceptionase:returnf计算错误{str(e)}# 自定义工具3模拟搜索本地笔记tooldefsearch_local_note(keyword:str)-str:在本地笔记中搜索关键词返回匹配内容模拟# 实际可以换成读文件或向量搜索notes{失恋:上次笔记写失恋后要多运动、多读书、找朋友聊天。,Python:Python入门建议先学变量、列表、函数再学类和模块。}returnnotes.get(keyword,f没有找到关于{keyword}的笔记。)tools[get_current_time,calculator,search_local_note]# 使用中文 ReAct Prompt同上节课react_promptPromptTemplate.from_template(尽可能好地回答以下问题。你可以使用以下工具 {tools} 请严格按照以下格式回答 问题你必须回答的输入问题 思考你应该始终思考该做什么 行动要采取的行动必须是 [{tool_names}] 中的一个 行动输入行动的输入 观察行动的结果 ...思考/行动/行动输入/观察 可以重复 N 次 思考我现在知道最终答案了 最终答案对原始输入问题的最终答案 开始 问题{input} 思考{agent_scratchpad})# 创建 Agentagentcreate_react_agent(llm,tools,react_prompt)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue)# 测试各种问题queries[现在几点了,帮我算一下 456 * 789 - 1234 是多少,我上次笔记里关于失恋写了什么,今天天气如何如果热的话建议穿什么]forqinqueries:print(f\n问题{q})resultagent_executor.invoke({input:q})print(AI 回答,result[output])运行后会看到 AI 自己决定问时间 → 调用 get_current_time问计算 → 调用 calculator问笔记 → 调用 search_local_note问天气 → 可能直接推理或说没工具你可以再加天气工具2. 真实外部API工具 —— 调用免费天气APIimportrequeststooldefreal_weather(city:str)-str:调用真实天气API获取城市当前天气使用免费接口示例api_key你的和风天气免费Key# 注册https://dev.qweather.com/urlfhttps://devapi.qweather.com/v7/weather/now?location{city}key{api_key}try:resprequests.get(url).json()ifresp.get(code)200:tempresp[now][temp]textresp[now][text]returnf{city}当前温度{temp}°C天气{text}。else:return天气查询失败。exceptExceptionase:returnfAPI错误{str(e)}tools.append(real_weather)# 重新创建 Agent工具更新agentcreate_react_agent(llm,tools,react_prompt)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue)# 测试result_weatheragent_executor.invoke({input:上海现在天气如何适合穿短袖吗})print(天气查询结果,result_weather[output])提示注册和风天气qweather.com免费Key替换 api_key。其他免费天气API也可替换。3. 互动版 —— 命令行多工具 Agentprint( 多工具 Agent 开始输入 quit 退出 )whileTrue:user_inputinput(你).strip()ifuser_input.lower()quit:breakresultagent_executor.invoke({input:user_input})print(AI,result[output])试试问“现在几点帮我算 88 * 99 是多少再查查北京天气。”小练习2 道练习1基础复制第1段代码加一个新工具tool def get_date() - str: return datetime.date.today().strftime(%Y年%m月%d日)。测试问“今天是星期几后天是几号”观察AI是否正确调用工具。练习2进阶加一个“读文件”工具参考上节课 read_file。问“读取当前目录下 my_notes.txt 的内容并告诉我里面有没有提到‘目标’这个词。”让AI自己决定调用工具并分析结果。本课小结本课重点学习了 Tools 系统tool 定义自定义工具、添加到 Agent、让AI自动调用。通过真实API、计算、文件读写等工具Agent 从“只会聊天”升级到“能干活”。这是构建实用AI助手的必备技能。下节预告下一课RAG 入门 —— 让AI读你的本地文档再回答问题构建个人知识库助手。欢迎在评论区贴出你的Agent运行截图、工具调用过程、或任何问题如果觉得这篇有用欢迎点赞或关注一起玩转 LangChain