当前位置: 首页 > article >正文

LangChain教程-、Langchain基础严

简介AI Agent 不仅仅是一个能聊天的机器人如普通的 ChatGPT而是一个能够感知环境、进行推理、自主决策并调用工具来完成特定任务的智能系统更够完成更为复杂的AI场景需求。AI Agent功能根据查阅的资料agent的功能点如下Agent LLM 规划 记忆 工具使用LLM 用于回答推理的AI模型记忆 短期记忆对话历史长期记忆RAG知识库规划 任务的执行流工具 Agent可以调用的外部函数一个简单的Agent案例案例描述agent可以使用两个工具1. 记录公司数据的RAG知识库 2. python精确计算器import osfrom langchain_community.chat_models.tongyi import ChatTongyifrom langchain_community.embeddings import DashScopeEmbeddingsfrom langchain_community.vectorstores import FAISSfrom langchain_core.messages import ToolMessagefrom langchain_core.tools import toolfrom langchain_core.messages import HumanMessage, ToolMessagefrom langchain_core.documents import Documentfrom langchain_text_splitters import RecursiveCharacterTextSplitteros.environ[DASHSCOPE_API_KEY] api_keytooldef calculator(expression: str) - str:计算数学表达式。需要精确计算时使用。参数:expression: 数学算式如 2 2 或 500 * 0.8。返回:str: 计算结果如 4.0 或 400.0。print(f [??? 工具调用] 计算器正在计算: {expression})try:return str(eval(expression))except Exception as e:return f计算错误: {e}tooldef rag_search(query: str) - str:从数据库中搜索与查询公司内部相关的文档包括公司计划名代号截止日期等详细信息。参数:query (str): 要搜索的查询字符串。返回:str: 与查询相关的文档内容。# 从RAG数据库中检索文档raw_text 【公司内部机密代号“深蓝计划”】1. 项目目标开发一款能听懂猫语的翻译器。2. 核心技术基于Transformer的“喵声波”分析算法。3. 团队暗号如果有人问“今天天气怎么样”必须回答“我想吃鱼”。4. 截止日期2026年12月31日。5. 经费预算仅剩50元人民币主要用于购买猫条。RAG_PATH faiss_indexdocs [Document(page_contentraw_text)]text_splitter RecursiveCharacterTextSplitter(chunk_size25, chunk_overlap5)split_docs text_splitter.split_documents(docs)embeddings DashScopeEmbeddings(modeltext-embedding-v1)if os.path.exists(RAG_PATH):print(公司内部数据库已存在)ragdb FAISS.load_local(RAG_PATH, embeddings, allow_dangerous_deserializationTrue)else:print(创建公司内部数据库)ragdb FAISS.from_documents(split_docs, embeddings)ragdb.save_local(RAG_PATH)return \n\n.join(doc.page_content for doc in ragdb.similarity_search(query, k2))def run_agent(query:str):#初始化模型tool_maps{rag_search: rag_search,calculator: calculator}llm ChatTongyi(model_nameqwen-plus)tool_llm llm.bind_tools(toolslist(tool_maps.values()))message [HumanMessage(contentquery)]for i in range(5):print(*20\n第str(i1)轮\nquery\n*20)response tool_llm.invoke(message)message.append(response)print(f需要调用{len(response.tool_calls)}个方法)if not response.tool_calls:print(最终结果 response.content)returnfor tool_call in response.tool_calls:call_id tool_call[id]func_name tool_call[name]func_args tool_call[args]# 安全检查确保模型调用的工具真的存在if func_name in tool_maps:# 运行 Python 函数tool_func tool_maps[func_name]tool_output tool_func.invoke(func_args)print(工具调用 func_name 参数 str(func_args) 结果 tool_output)else:tool_output f错误: 工具 {func_name} 不存在。message.append(ToolMessage(contenttool_output,tool_call_idcall_id,namefunc_name,))if __name__ __main__:run_agent(公司计划是什么)run_agent(公司的经费预算是多少如果预算预算提高46%后多少)run_agent(今天天气真好)代码解析要实现复杂的工具调用必须实现AI的多轮对话在langchain框架中提供了大量的prompt模板让开发者不需要过度想一些基础的prompt实现。上面代码的执行流程如下初始化2个工具函数-绑定LLM与工具-通过循环进行多轮对话初始化2个工具函数这里的rag_search上一篇文章讲了具体实现这里就不废话了。tooldef calculator(expression: str) - str:计算数学表达式。需要精确计算时使用。参数:expression: 数学算式如 2 2 或 500 * 0.8。返回:str: 计算结果如 4.0 或 400.0。print(f [??? 工具调用] 计算器正在计算: {expression})try:return str(eval(expression))except Exception as e:return f计算错误: {e}tooldef rag_search(query: str) - str:......工具函数的格式主要有3个方面工具修饰 利用tool修饰器修饰函数的描述 这里放函数的描述大模型通过这个描述定位工具因此这部分必须详细可以参考上面:函数的描述函数的参数例子函数的返回例子工具的实现 返回值要是字符串如下tooldef func_name(arg) - str:描述......绑定LLM与工具工具的绑定非常的简单只需要简单的bind_tools类方法就行tool_maps{rag_search: rag_search,calculator: calculator}llm ChatTongyi(model_nameqwen-plus)tool_llm llm.bind_tools(toolslist(tool_maps.values()))通过循环进行多轮对话重点工具的调用流程提示词-LLM-要调用的工具-LLM-结果message [HumanMessage(contentquery)]for i in range(5):print(*20\n第str(i1)轮\nquery\n*20)response tool_llm.invoke(message)message.append(response)print(f需要调用{len(response.tool_calls)}个方法)if not response.tool_calls:print(最终结果 response.content)returnfor tool_call in response.tool_calls:call_id tool_call[id]func_name tool_call[name]func_args tool_call[args]# 安全检查确保模型调用的工具真的存在if func_name in tool_maps:# 运行 Python 函数tool_func tool_maps[func_name]tool_output tool_func.invoke(func_args)print(工具调用 func_name 参数 str(func_args) 结果 tool_output)else:tool_output f错误: 工具 {func_name} 不存在。message.append(ToolMessage(contenttool_output,tool_call_idcall_id,namefunc_name,))在调用bind_tools方法后大模型的返回对象会多出tool_calls字段的数组数据用于存放需要调用工具的参数函数名在调用函数后将调用函数的结果封装成ToolMessage传入再继续调用大模型。注意在调用LLM时可能LLM会不断要求Tool由此可能发生死循环因此要限制循环次数。安全与审思风险评估近些年ai提示词注入频频发生根据上面的案例tooldef calculator(expression: str) - str:计算数学表达式。需要精确计算时使用。参数:expression: 数学算式如 2 2 或 500 * 0.8。返回:str: 计算结果如 4.0 或 400.0。print(f [??? 工具调用] 计算器正在计算: {expression})try:return str(eval(expression))except Exception as e:return f计算错误: {e}LLM在调用这个工具时使用了eval这就造成了风险注入点不法分子可能利用这个漏洞获取电脑权限。修复思路修复上面漏洞可以参考以下几个思路通过指令提示词让LLM忽略并终止危险代码调用该函数在函数中用正则匹配危险代码或设置白名单替换eval函数将其换为更加安全的方法如手动写死运算囟茁子讯

相关文章:

LangChain教程-、Langchain基础严

简介 AI Agent 不仅仅是一个能聊天的机器人(如普通的 ChatGPT),而是一个能够感知环境、进行推理、自主决策并调用工具来完成特定任务的智能系统,更够完成更为复杂的AI场景需求。 AI Agent 功能 根据查阅的资料,agent的…...

幻境·流金多场景应用:自媒体配图、游戏原画草稿、PPT视觉素材生成

幻境流金多场景应用:自媒体配图、游戏原画草稿、PPT视觉素材生成 1. 引言:当创意不再等待 你有没有过这样的经历?深夜赶稿,急需一张配图来点亮文章,翻遍图库却找不到合适的;游戏项目会上,想快…...

OBS多路推流插件:一键实现多平台同步直播的终极指南

OBS多路推流插件:一键实现多平台同步直播的终极指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经为需要在多个直播平台同时推流而烦恼?手动切换平台…...

Pixel Dream Workshop 企业级应用:基于 Agent 架构的自动化设计工作流

Pixel Dream Workshop 企业级应用:基于 Agent 架构的自动化设计工作流 1. 企业内容创作的痛点与机遇 在数字化营销时代,企业每天需要生产大量视觉内容——从社交媒体配图到产品详情页,从广告海报到活动宣传物料。传统设计流程面临三大核心挑…...

气温与制冷性能系数的关系

在计算机编程领域,数据处理和分析常常涉及到一些特定领域的应用,比如环境科学中的温度数据分析。在本文中,我们将探讨如何使用R语言处理气温数据,并计算制冷性能系数(Coefficient of Performance, COP)。 数据准备 首先,我们需要准备一组气温数据。我们假设已经有一个…...

granite-4.0-h-350m实战教程:Ollama本地大模型部署+韩语技术文档理解+代码补全

granite-4.0-h-350m实战教程:Ollama本地大模型部署韩语技术文档理解代码补全 想在自己电脑上跑一个能看懂韩语技术文档、还能帮你写代码的AI助手吗?今天我们就来聊聊怎么用Ollama部署一个轻量但功能强大的模型——granite-4.0-h-350m。 这个模型只有3.5亿…...

Phi-3 Forest Lab应用场景:技术布道师内容生成器——将复杂概念转化为森林隐喻文案

Phi-3 Forest Lab应用场景:技术布道师内容生成器——将复杂概念转化为森林隐喻文案 1. 项目背景与核心价值 在技术传播领域,如何将复杂的AI概念转化为大众易于理解的内容,一直是技术布道师面临的挑战。Phi-3 Forest Lab通过创新的自然隐喻系…...

WarcraftHelper:魔兽争霸III终极兼容性优化指南,让经典游戏在现代电脑上重生

WarcraftHelper:魔兽争霸III终极兼容性优化指南,让经典游戏在现代电脑上重生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还…...

造相Z-Image文生图模型v2快速上手:从部署到出图只需3步

造相Z-Image文生图模型v2快速上手:从部署到出图只需3步 1. 为什么选择Z-Image文生图模型 如果你正在寻找一款能在消费级显卡上运行的高质量文生图模型,Z-Image v2绝对值得考虑。作为阿里通义万相团队开源的最新作品,这个20亿参数的模型在24…...

如何快速抢到心仪演出票?大麦网智能抢票神器终极指南

如何快速抢到心仪演出票?大麦网智能抢票神器终极指南 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 你是否曾经因为手速不够快,眼睁睁看着心仪演唱会…...

Alibaba DASD-4B Thinking 在AI编程(AIGC for Code)中的应用:代码补全与Bug自动修复

Alibaba DASD-4B Thinking 在AI编程(AIGC for Code)中的应用:代码补全与Bug自动修复 你是不是也经历过这样的时刻?盯着屏幕上的函数名和寥寥几行注释,大脑一片空白,不知道从何下手写代码。或者&#xff0c…...

影视工业革命:SDXL 1.0在分镜设计中的应用

影视工业革命:SDXL 1.0在分镜设计中的应用 如果你在影视行业待过,或者哪怕只是参与过一个小视频的制作,你肯定知道前期筹备有多磨人。导演脑子里有画面,编剧笔下有故事,但怎么让整个剧组都“看见”同一个画面&#xf…...

Qwen3-ForcedAligner-0.6B中小企业应用:低成本构建自有字幕工厂全流程

Qwen3-ForcedAligner-0.6B中小企业应用:低成本构建自有字幕工厂全流程 1. 为什么中小企业需要自己的字幕工厂 在视频内容爆发的时代,字幕已经成为提升用户体验的关键要素。无论是企业宣传视频、在线课程、产品演示还是社交媒体内容,精准的字…...

Qwen3-14B私有AI平台搭建:WebUI界面定制+API接口二次开发指南

Qwen3-14B私有AI平台搭建:WebUI界面定制API接口二次开发指南 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是一款专为RTX 4090D 24GB显存环境优化的AI平台解决方案。这个镜像最大的特点就是"开箱即用"——所有环境依赖、模型权重、优化组件都已预装配置…...

CHORD-X代码生成能力展示:根据研报结论自动输出数据分析脚本

CHORD-X代码生成能力展示:根据研报结论自动输出数据分析脚本 最近在试用一个挺有意思的模型,叫CHORD-X。大家可能知道它在文本生成、对话方面挺强的,但我发现它还有个隐藏技能,或者说一个特别实用的能力延伸——它能看懂你写的分…...

小白也能搞定的语义搜索:Qwen3-Embedding-4B极简部署与使用全攻略

小白也能搞定的语义搜索:Qwen3-Embedding-4B极简部署与使用全攻略 1. 引言:为什么你需要语义搜索 想象一下,你在公司内部知识库搜索"如何提高客户满意度",传统搜索只能找到包含这几个关键词的文档。但如果有一份文档标…...

Display Driver Uninstaller (DDU) 终极指南:彻底解决显卡驱动残留问题的专业工具

Display Driver Uninstaller (DDU) 终极指南:彻底解决显卡驱动残留问题的专业工具 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/di…...

intv_ai_mk11参数详解教程:最大长度2048、Temperature 0.7、Top P 0.9调优逻辑

intv_ai_mk11参数详解教程:最大长度2048、Temperature 0.7、Top P 0.9调优逻辑 1. 认识intv_ai_mk11对话机器人 intv_ai_mk11是一款基于Llama架构的AI对话助手,拥有7B参数规模,运行在GPU服务器上。它能处理各种类型的对话需求,从…...

文墨共鸣效果展示:StructBERT在‘异曲同工’类表达中的98.7%识别准确率

文墨共鸣效果展示:StructBERT在异曲同工类表达中的98.7%识别准确率 1. 项目概述 文墨共鸣(Wen Mo Gong Ming)是一个将深度学习算法与中国传统水墨美学完美融合的创新项目。这个系统基于阿里达摩院开源的StructBERT大模型,专门设…...

绝区零自动化助手:解放双手,让游戏回归乐趣的智能伴侣

绝区零自动化助手:解放双手,让游戏回归乐趣的智能伴侣 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon …...

MT5 Zero-Shot中文增强效果可视化:原句vs改写句语义相似度与流畅度实测

MT5 Zero-Shot中文增强效果可视化:原句vs改写句语义相似度与流畅度实测 1. 项目介绍与核心价值 MT5 Zero-Shot Chinese Text Augmentation 是一个基于 Streamlit 和阿里达摩院 mT5 模型构建的本地化 NLP 工具。这个工具能够对输入的中文句子进行语义改写和数据增强…...

5步搞定Windows 11安装失败:MediaCreationTool.bat终极指南

5步搞定Windows 11安装失败:MediaCreationTool.bat终极指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

从BEV到时空融合:ST-P3论文精读,看纯视觉方案如何一步步搞定感知、预测与规划

ST-P3:纯视觉自动驾驶的时空特征革命与技术纵深解析 当特斯拉在2021年宣布取消毫米波雷达、全面转向纯视觉方案时,整个行业都在质疑:仅凭摄像头如何应对复杂时空维度的驾驶决策?上海交大与京东研究院联合团队提出的ST-P3框架&…...

【效率工具箱】构建你的强化学习Python实用工具库:可视化、存储与可复现性

1. 为什么你需要一个强化学习工具库 刚开始做强化学习实验那会儿,我经常遇到这样的场景:好不容易调通了一个算法,结果发现训练曲线画出来全是乱码;跑完实验想保存数据,结果文件散落在七八个不同目录;复现上…...

QMCDecode全解析:3步解锁QQ音乐加密音频的终极方案

QMCDecode全解析:3步解锁QQ音乐加密音频的终极方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…...

Rust的#[derive(Clone)]中的拷贝深

Rust语言中的#[derive(Clone)]是一个强大的派生宏,它允许开发者快速为自定义类型实现Clone trait,从而支持值的显式拷贝。在Rust中,拷贝分为浅拷贝和深拷贝,而#[derive(Clone)]默认生成的实现通常是浅拷贝。在某些场景下&#xff…...

别再死记硬背了!用Multisim仿真带你直观理解MOSFET放大电路的静态工作点

用Multisim仿真解锁MOSFET放大电路:静态工作点的可视化教学革命 学习模拟电子技术时,许多初学者都会在MOSFET放大电路的静态工作点分析上卡壳。那些抽象的曲线、复杂的公式和难以捉摸的"预夹断"概念,常常让人望而生畏。但今天&…...

为什么你的Mac鼠标和触控板总是对着干?Scroll Reverser教你让每个设备都乖乖听话

为什么你的Mac鼠标和触控板总是对着干?Scroll Reverser教你让每个设备都乖乖听话 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 早上8点,设计师小王打开…...

如何构建高效分布式大众点评数据采集系统:5大反爬策略实战指南

如何构建高效分布式大众点评数据采集系统:5大反爬策略实战指南 【免费下载链接】dianping_spider 大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新 项目地址: https://gitcode.com/gh_mirrors/di/dianping…...

Kandinsky-5.0-I2V-Lite-5s开源镜像实操:offload+sdpa显存优化部署指南

Kandinsky-5.0-I2V-Lite-5s开源镜像实操:offloadsdpa显存优化部署指南 1. 开篇介绍 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型,它能够将静态图片转化为动态视频。只需上传一张首帧图片,再补充一句运动或镜头描述,就能…...