Langchain 常用组件以及包含的子模块常用组件OpenAI langchain-openai Downloads per month PyPI - Latest version[AzureChatOpenAI,AzureOpenAI,AzureOpenAIEmbeddings,ChatOpenAI,OpenAI,OpenAIEmbeddings,__all__,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__path__,__spec__,chat_models,custom_tool,data,embeddings,llms,tools]tools1. 直接是函数的形式只能由Agent自主决策调用# 工具定义defget_weather(city:str)-str:获取指定城市的实时天气信息 模拟天气数据实际项目中调用天气 API 这个工具可以查询中国主要城市的天气情况包括温度、天气状况和空气质量。 Args: city: 城市名称支持北京、上海、成都等 Returns: 包含天气详情的字符串 weather_database{北京:{condition:晴天,temp_range:15-25°C,aqi:优,humidity:45%,wind:东南风2级,suggestion:适合户外活动,icon:☀️},上海:{condition:多云,temp_range:18-28°C,aqi:良,humidity:65%,wind:东风3级,suggestion:空气质量良好,icon:⛅},成都:{condition:多云,temp_range:16-24°C,aqi:中,humidity:75%,wind:无持续风向1级,suggestion:空气质量一般,icon:⛅}}ifcitynotinweather_database:returnf❌ 抱歉暂时无法查询{city}的天气信息。\n支持的城市北京、上海、成都dataweather_database[city]resultf{data[icon]}{city}天气预报 ━━━━━━━━━━━━━━━━━━━━━━ • 天气状况{data[condition]}• 温度范围{data[temp_range]}• 空气质量{data[aqi]}• 湿度{data[humidity]}• 风力{data[wind]}• 建议{data[suggestion]}━━━━━━━━━━━━━━━━━━━━━━ 数据更新时间{datetime.now().strftime(%Y-%m-%d %H:%M)}returnresult.strip()# 在agent中传入工具a_gentcreate_agent(modelllm,#agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,#verboseTrue,toolstools,system_prompt你是一个周内助手能自动分析输入需求自动调用对应工具精准查询并按优好的方式返回回答。,)inputs{messages:[{role:user,content:成都现在的天气如何}]}resulta_gent.invoke(inputs)# 使用函数作为tool时只能使用agent自主调用final_messageresult[messages][-1]print(f查询结果{final_message.content})使用函数作为tool时只能使用agent自主调用2. 使用tool装饰器使用装饰器可以直接通过tools方法名通过.invoke(参数)调用fromlangchain_core.toolsimporttooltooldefget_current_time(timezone:strAsia/Shanghai)-str:获取当前时间和日期 Args: timezone: 时区默认为 Asia/Shanghai北京时间 Returns: 格式化的时间信息 nowdatetime.now()weekdays[一,二,三,四,五,六,日]weekdayweekdays[now.weekday()]resultf 当前时间信息 ━━━━━━━━━━━━━━━━━━━━━━ 日期{now.year}年{now.month}月{now.day}日 星期星期{weekday}⏰ 时间{now.strftime(%H:%M:%S)} 时区{timezone}━━━━━━━━━━━━━━━━━━━━━━ returnresult.strip()# tool装饰器方法测试resultget_current_time.invoke(北京)print(result)# 输出: 晴天25°C# 查看工具信息print(f工具名称:{get_current_time.name})print(f工具描述:{get_current_time.description})print(f参数结构:{get_current_time.args})3. 复杂的装饰器fromlangchain_core.toolsimporttoolfromtypingimportOptionaltooldefsearch_database(query:str,category:Optional[str]None)-str: 在数据库中搜索信息 Args: query: 搜索关键词 category: 可选的分类过滤器如科技、健康、教育 database{科技:[人工智能正在改变世界,5G技术的应用],健康:[健康饮食的重要性,运动与长寿的关系],教育:[在线学习的趋势,终身学习的价值]}results[]ifcategoryandcategoryindatabase:foritemindatabase[category]:ifquery.lower()initem.lower():results.append(f[{category}]{item})else:forcat,itemsindatabase.items():foriteminitems:ifquery.lower()initem.lower():results.append(f[{cat}]{item})ifresults:return找到以下结果:\n\n.join(results)else:returnf没有找到关于 {query} 的结果4. 需要更多参数控制时fromlangchain_core.toolsimportBaseToolfrompydanticimportBaseModel,FieldfromtypingimportType# 定义输入参数结构classCalculatorInput(BaseModel):left_number:intField(description运算符左侧数字如 1)operator:strField(description二目运算符如 /-/*/%)right_number:intField(description运算符右侧数字如 2)classCalculator2D(BaseTool):name:strtwo-dimensional operation calculatordescription:str执行二目数学计算args_schema:Type[BaseModel]CalculatorInputdef_run(self,left_number:int,operator:str,right_number:int)-str:同步执行try:expressionf{left_number}{operator}{right_number}resulteval(expression)returnf计算结果:{expression}{result}exceptExceptionase:returnf计算错误:{str(e)}asyncdef_arun(self,left_number:int,operator:str,right_number:int)-str:异步执行可选实现expressionf{left_number}{operator}{right_number}returnself._run(expression)# 使用calcCalculator2D()resultcalc.invoke({left_number:123,operator:,right_number:456})print(result)模型初始化方法from langchain_openai import ChatOpenAIllm ChatOpenAI(model“deepseek-chat”,api_keyos.environ.get(‘DEEPSEEK_API_KEY’),base_url“https://api.deepseek.com”,)from langchain.chat_models import init_chat_modelmodel init_chat_model(“claude-sonnet-4-5-20250929”,temperature0.5,timeout10,max_tokens1000)2025年12月草稿
企业数字化 ERP 产品动态
相关推荐
省市区街道4级MySQL数据库:导入、查询与四级联动实战指南 简介:一份面向MySQL开发者和数据分析师的省市区街道四级行政区域数据压缩包,收录了全国省、市、区、街道的层级关系,适用于地理信息系统、电商配送、市场分析和物流规划等场景。压缩包体积仅1.58MB,共5个sql文件,既提供… · 2026/9/25 9:45:02
Atlas 300V 24G部署YOLOv5全流程:环境搭建、模型转换与性能调优 前两天看到有人在搜“atlas 300v 24g 是运算加速卡吗”,紧接着还有一条是“atlas部署yolo”。这两个问题拼在一起,基本就是一张昇腾推理卡从“这玩意到底能不能用”到“怎么把它跑起来”的全过程心态写照。我最近正好在Atlas 300V 24G这张卡上把YOLOv5检… · 2026/9/25 9:44:07
如何用AI Agent实现日均万行可用代码:工作流与实战指南 1. 当CEO把AI当成"结对程序员"而不是"代码补全器"第一次看到"日均产出一万行可用代码"这个说法,我的反应和大多数人一样:要么是标题党,要么是把AI生成的垃圾代码也算进去了。但仔细拆解这个数字背后的工作模式… · 2026/9/25 9:44:01
Atlas 300V 24G推理卡详解:从入门到YOLO部署实战 在边缘AI推理这个圈子里,Atlas这个名字最近几年出现的频率越来越高。尤其当“atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”这两个问题被反复问到的时候,我就知道很多人其实已经拿到了卡,或者正在选型阶段,但对这套工具链还… · 2026/9/25 9:43:55
Atlas 300V 24G推理加速卡部署YOLO完整实战:从环境配置到模型转换与调优 最近收到好几条私信,都是同一个问题:“Atlas 300V 24G 是运算加速卡吗?能不能拿来部署 YOLO?” 问的人多了,我干脆把之前折腾过的整套流程整理出来。这篇文章不是官方文档,是我自己从装卡、配驱动、转模型到… · 2026/9/25 9:43:55
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37