新闻详情

新闻详情

首页 / 资讯中心 / 详情

【LLM】Langchain框架开发应用总结

发布时间:2026/9/25 8:58:29来源:尧图网络
【LLM】Langchain框架开发应用总结
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月草稿
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

CTF密码学入门:栅栏密码原理、Python脚本破解与实战技巧 2026/9/25 9:37:19

CTF密码学入门:栅栏密码原理、Python脚本破解与实战技巧

1. 从“聪明的小羊”看CTF密码学入门题的设计逻辑第一次看到“聪明的小羊”这个题目名,我脑子里蹦出来的画面是羊圈、栅栏、还有一只试图翻越围栏的羊。后来打开题目一看,果然——栅栏密码。这个命名不是随便起的,出题人用“小羊”和“栅栏”…

阅读更多 →
ISG信息安全竞赛题型全解析:五大考点与备考路径 2026/9/25 9:37:19

ISG信息安全竞赛题型全解析:五大考点与备考路径

简介:ISG信息安全竞赛题目类型文档,面向CTF初学者及备战ISG赛事的参赛者,系统梳理了比赛组织方式与题目体系。文档参照CTF竞赛模式,详解Web漏洞与渗透、软件逆向、漏洞挖掘利用、密码学原理及应用、杂项等五大类考点的具体能力要求…

阅读更多 →
《信息犯罪与计算机取证》读书笔记模板:构建取证知识体系 2026/9/25 9:37:13

《信息犯罪与计算机取证》读书笔记模板:构建取证知识体系

简介:《信息犯罪与计算机取证》读书笔记模板.pptx 是围绕同名教材整理的知识框架型PPT,适合正在学习信息安全、信息犯罪与计算机取证相关课程的学生,或希望系统梳理知识脉络的备考者。模板基于教材结构,覆盖信息安全、信息犯罪概念…

阅读更多 →
AI编程神器:Cursor 配 TaoToken 的 settings.json 骨架与验证 2026/9/25 9:37:06

AI编程神器:Cursor 配 TaoToken 的 settings.json 骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
麻雀搜索算法优化XGBoost:多特征分类调参实战指南 2026/9/25 9:37:00

麻雀搜索算法优化XGBoost:多特征分类调参实战指南

简介:一份基于麻雀搜索算法(SSA)优化极端梯度提升(XGBoost)的多特征分类预测完整项目实例,面向具备机器学习基础、希望掌握群体智能优化与XGBoost结合应用的研发人员和数据科学家,可应用于金融风…

阅读更多 →
导波光学基础:平板波导模式与特征方程从原理到PPT实战 2026/9/25 9:37:00

导波光学基础:平板波导模式与特征方程从原理到PPT实战

简介:一份来自北京理工大学的《导波光学基础》教学课件(PPT),面向光学工程、光通信及相关专业的高校学生与入门研究者,系统讲解光波在晶体中的传播规律。课件以晶体几何特性和数学描述为基础,重点展开电光效…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉