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

【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例

目录

示例代码

运行结果


功能:根据用户输入自动选择数学计算/天气查询工具处理
 ​​"用户输入 → 意图分析 → 工具调用 → 结果返回"​​ 

库名解析:【langchain库名解析】-CSDN博客

示例代码

# ============================== 模块1:依赖导入 ==============================
from langchain_core.prompts import ChatPromptTemplate  # 对话模板构建器
from langchain_core.tools import tool  # 工具装饰器
from langchain.tools.render import render_text_description  # 工具描述渲染器
from langchain_core.output_parsers.json import JsonOutputParser  # JSON输出解析器
import os  # 系统路径/环境变量操作
from dotenv import load_dotenv  # 环境变量加载器
from langchain_openai import ChatOpenAI  # 大模型接口# ====================== 模块2:环境配置与模型初始化 ======================
load_dotenv()  # 从.env文件加载环境变量(需确保文件存在)# 千问大模型客户端配置
qwen = ChatOpenAI(model="qwen-max",  # 指定模型版本api_key=os.getenv("DASHSCOPE_API_KEY"),  # 从环境变量读取API密钥openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1"  # 阿里云适配接口
)# ======================== 模块3:工具定义与注册 ========================
# 使用@tool装饰器定义可调用工具@tool
def multiply(first_int: int, second_int: int) -> int:"""对两个整数执行乘法运算"""return first_int * second_int@tool
def add(first_int: int, second_int: int) -> int:"""对两个整数执行加法运算"""return first_int + second_int@tool
def get_current_weather(location: str, unit: str) -> str:"""获取指定位置的天气信息"""return f"It's 20 {unit} in {location}"# 工具注册列表(后续可扩展新工具)
tools = [multiply, add, get_current_weather]# ======================= 模块4:提示模板构建 =======================
# 生成工具描述文本(注意:此处转义可能导致变量误识别)
rendered_tools = render_text_description(tools).replace("{", "{{").replace("}", "}}")# 系统提示词模板(含可能的问题点)
system_prompt = f"""你是一个可以访问以下工具的助手。可用工具:
{rendered_tools}响应时必须使用严格JSON格式:
{{{{"tool": <工具名称>,"tool_input": <参数对象>,"message": <附加消息>
}}}}"""  # 注意:此处四层括号可能导致转义问题# 构建完整对话模板
prompt = ChatPromptTemplate.from_messages([("system", system_prompt),  # 系统角色消息(定义规则)("user", "{input}")         # 用户输入占位符
])# ======================== 模块5:执行链定义 ========================
# 构建处理流水线:模板 → 模型 → JSON解析
chain = prompt | qwen | JsonOutputParser()# ====================== 模块6:示例请求处理 ======================
# 处理天气查询请求
res = chain.invoke({"input": "内蒙古今天的天气"})# 手动解析演示(实际代码中可删除)
JsonOutputParser().parse('''{"tool": "get_current_weather","tool_input": {"location": "南京", "unit": "Celsius"},"message": ""
}''')# ===================== 模块7:工具调用执行器 =====================
# 创建工具名称到对象的映射字典
tool_map = {tool.name: tool for tool in tools}def tools_call(model_output):"""执行工具调用的统一入口参数:model_output - 模型输出的结构化字典"""# 根据工具名称获取工具对象chosen_tool = tool_map[model_output["tool"]]# 执行工具调用(建议添加异常处理)return chosen_tool.invoke(model_output["tool_input"])# 执行并打印结果
print(tools_call(res))  # 示例输出:It's 20 Celsius in 内蒙古

运行结果

It's 20 c in 内蒙古

相关文章:

【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例

目录 示例代码 运行结果 功能&#xff1a;根据用户输入自动选择数学计算/天气查询工具处理 ​​"用户输入 → 意图分析 → 工具调用 → 结果返回"​​ 库名解析&#xff1a;【langchain库名解析】-CSDN博客 示例代码 # 模块1&#xff1a;依赖导入 from langc…...

银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙

Hey小伙伴们~&#x1f44b; 今天来聊聊怎么在银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙&#xff01;&#x1f6e1;️ 这个强大的工具能帮你动态管理防火墙规则&#xff0c;还支持区域概念&#xff0c;让你的网络流量控制更灵活&#xff01;&#x1f389; &#x…...

信创服务器网络更稳了!链路聚合Bonding实战

原文链接&#xff1a;信创服务器网络更稳了&#xff01;链路聚合Bonding实战 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇信创服务器操作系统上链路聚合&#xff08;Bonding&#xff09;配置实战的文章。链路聚合可以让两块网卡协同工作&#xff0c;提高服务器网…...

沐渥科技详解氮气柜操作指南

氮气柜是一种通过持续注入高纯度氮气&#xff0c;维持柜内惰性气体环境的设备&#xff0c;用于存储半导体晶圆或其他敏感元件&#xff0c;防止氧化、吸湿和污染。氮气柜操作指南是怎样的&#xff1f;下面沐渥小编给大家介绍一下。 一、操作前准备 &#xff08;1&#xff09;安全…...

Netty之ChannelOutboundBuffer详解与实战

深入理解Netty的高低水位线机制及其应用实践 在高性能网络编程中&#xff0c;Netty作为一个广泛使用的异步事件驱动的Java框架&#xff0c;其高效的流量控制机制对于系统的稳定性和性能至关重要。本文将深入探讨Netty中的高低水位线&#xff08;High/Low Water Mark&#xff0…...

学习Python的优势体现在哪些方面?

文章目录 前言易于学习和使用应用领域广泛丰富的开源库和社区支持跨平台兼容性职业发展前景好 前言 学习 Python 具有多方面的优势&#xff0c;这使得它成为当今最受欢迎的编程语言之一&#xff0c;以下为你详细介绍。 易于学习和使用 语法简洁易懂&#xff1a;Python 的语法…...

每天五分钟玩转深度学习PyTorch:搭建LSTM算法模型完成词性标注

本文重点 本文通过LSTM算法模型来解决一个实际问题,也就是如何使用LSTM完成词性预测,下面我们搭建两个模型,一个是单词级别的,另外一个是字母级别的,大概的步骤就是,字母级别的LSTM将每个单词的字母作为输入,然后取最后一个时刻作为整个单词的表示,然后将文本中所有的…...

ANP协议深度解析:智能体网络协议的演进与革新

引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;多智能体系统&#xff08;Multi-Agent Systems, MAS&#xff09;逐渐成为解决复杂问题的核心范式。然而&#xff0c;智能体之间的高效协作一直面临通信标准不统一、资源分配冲突、动态环境适应能力不足等…...

如何降低论文的AIGC检测率,减少“AI味”

要降低论文的AIGC&#xff08;AI生成内容&#xff09;检测率&#xff0c;减少“AI味”&#xff0c;关键在于让论文更自然、个性化&#xff0c;并符合学术规范。以下是具体方法&#xff1a; 1. 避免直接复制AI生成内容 ❌ 错误做法&#xff1a;直接使用DeepSeek等工具生成的整段…...

安装npm install element-plus --save报错

今天安装npm install element-plus --save报的错&#xff0c;豆包提示说是项目里使用的 eslint 版本是 7.32.0&#xff0c;而 vue/eslint-config-standard9.0.1 要求的 eslint 版本是 ^9.10.0。总之就是说版本不兼容 报错&#xff1a; While resolving: vue3_project0.1.0 np…...

Python代码缩进统一规范

一、Python缩进的重要性:逻辑与可读性的桥梁 1. 语法规则的核心 Python与其他编程语言显著不同之处在于,它使用缩进来表示代码块的层次结构。不像C、Java等语言依靠大括号{}来明确函数体、循环体和条件语句的范围,Python完全依赖缩进来界定这些逻辑单元。例如,在一个if条…...

蓝桥杯基础数论入门

一.试除法 首先我们要了解&#xff0c;所有大于1的自然数都能进行质因数分解。试除法作用如下&#xff1a; ​质数判断 试除法通过验证一个数是否能被小于它的数&#xff08;一般是用2到用根号x&#xff09;整除来判断其是否为质数。根据定义&#xff0c;质数只能被1和自身整除…...

一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于浏览器侧边栏的AI对话工具&#xff0c;可免费使用所有顶级大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1满血版等 以极简交互与超快的响应速度&#xff0c;完成AI搜索、实时问答、内容创作、翻译、…...

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在&#xff0c;并且能够直接展示的一些文件&#xff0c;比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat&#xff0c;Nginx处理…...

微信小程序中使用ECharts 并且动态设置数据

项目下载地址 GitHub 地址 https://github.com/ecomfe/echarts-for-weixin 将当前文件夹里的内容拷贝到项目中 目录&#xff1a; json: {"usingComponents": {"ec-canvas": "../components/ec-canvas/ec-canvas"} }wxml&#xff1a; <ec…...

【愚公系列】《高效使用DeepSeek》064-跨文化谈判

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

云原生环境Jvm内存占用持续高位问题排查

生产内存占用过高问题排查 1、问题描述 一个tomcat应用&#xff0c;部署在云原生集群上&#xff0c;云原生监控显示内存占用率持续偏高&#xff0c;最大占用率、平均占用率都在90%多&#xff0c;但是倒没有OOM什么的。 2、问题复现 凭借对此应用的了解&#xff0c;很快就在测…...

linux下io操作详细解析

在 Linux 系统下&#xff0c;IO&#xff08;输入/输出&#xff09;操作是程序与外部设备&#xff08;如文件、网络等&#xff09;交互的重要方式。Linux 提供了丰富的系统调用和库函数来支持各种 IO 操作。以下是对 Linux 下 IO 操作的详细解析&#xff0c;包括文件 IO、网络 I…...

【在校课堂笔记】Python 第 9 节课 总结

- 第 91 篇 - Date: 2025 - 04 - 10 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 文章目录 南山-第 9 节课字符串的各种操作一 string二 string 的索引1 索引介绍2 示例 - 索引使用 三 切片1 **结构**2 示例 四 回文数 – 切片的应用五 对手机号进行脱敏处理六 注意七 读取字…...

AcWing 6099. 座位

原题目链接 问题描述 有 n 头奶牛&#xff08;n ≥ 5&#xff09;&#xff0c;编号为 1 ∼ n&#xff0c;按照某种顺序围着一张圆桌坐成一圈。 奶牛之间存在如下的朋友关系&#xff1a; 如果两头奶牛相邻&#xff0c;则它们是朋友&#xff1b;如果两头奶牛之间只隔着一头奶…...

MySQL SQL Mode

SQL Mode 是 MySQL 中一个重要的系统变量&#xff0c;它决定了 MySQL 应遵循的 SQL 语法规则和数据验证规则。 什么是 SQL Mode SQL Mode 定义了 MySQL 应该支持的 SQL 语法以及执行数据验证的方式。通过设置不同的 SQL Mode&#xff0c;可以让 MySQL 在不同程度上兼容其他数据…...

linux不同用户共享同一anaconda

这里写目录标题 1、anaconda安装2、所有账号可以访问conda 按一下步骤顺序执行&#xff0c;可使linux上不同权限隔离的用户可以同时访问anaconda。 1、anaconda安装 step1&#xff1a;anaconda是通过root账号安装在某个自定义目录下&#xff08;如&#xff1a;/data/software/…...

Langflow 远程命令执行漏洞复现(CVE-2025-3248)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…...

如何在 Excel 中处理并拆分你提供的这种混合单位的库存数据。

使用 Power Query (获取与转换数据) - 最推荐 这是处理这类复杂、不规范数据的最强大、最灵活的方法&#xff0c;尤其适合数据量大或需要重复处理的情况。 加载数据到 Power Query&#xff1a; 选中你的数据区域。 在 Excel 菜单栏点击 数据 选项卡。 在 获取和转换数据 功能…...

OpenHarmony荷兰研习会回顾 | 仓颉语言赋能原生应用开发实践

近日&#xff0c;由全球顶级学术峰会EuroSys/ASPLOS和OpenHarmony社区在荷兰鹿特丹合办的操作系统深度研习会圆满收官&#xff0c;本次研习会以"架构探秘-开发实践-创新实验"三位一体的进阶模式&#xff0c;为全球开发者构建了沉浸式技术探索平台。其中&#xff0c;由…...

广州华锐视点考试考核系统:引领智能考核新时代​

在当今数字化飞速发展的时代&#xff0c;考试考核作为教育与培训成果检验的重要环节&#xff0c;也在不断寻求创新与突破。广州华锐视点凭借其先进的技术实力&#xff0c;打造出了一套功能强大、高效便捷的考试考核系统&#xff0c;为各类教育机构、企业培训等提供了全面且优质…...

Harmony鸿蒙应用开发-录音保存并播放音频

功能介绍&#xff1a; 录音并保存为m4a格式的音频&#xff0c;然后播放该音频&#xff0c;参考文档使用AVRecorder开发音频录制功能(ArkTS)&#xff0c;更详细接口信息请查看接口文档&#xff1a;ohos.multimedia.media (媒体服务)。 知识点&#xff1a; 熟悉使用AVRecorder…...

室分系统(室内分布系统)详解

室分系统&#xff08;室内分布系统&#xff0c;Indoor Distribution System&#xff09;是用于解决建筑物内部信号弱、覆盖差、容量不足的专用通信网络&#xff0c;广泛应用于商场、写字楼、地铁、机场等场景。 1. 室分系统的作用 解决信号覆盖问题&#xff1a;消除室内盲区&am…...

基于 Qt4 的图片处理工具开发(二):增加对比度调节、界面布局优化、多线程操作

废话不多说&#xff0c;先来看一下最终的界面效果 一、引言 在上一篇博客中&#xff0c;我们完成了图片处理工具的基础框架&#xff0c;实现了拖拽加载、亮度调节和角度旋转功能。本文将聚焦界面布局重构、对比度调节功能扩展以及多线程性能优化&#xff0c;进一步提升工具的实…...

禁止页面滚动的方法-微信小程序

在微信小程序中&#xff0c;有几种方法可以禁止页面滚动&#xff1a; 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置&#xff0c;此方法完全禁止页面的滚动行为&#xff1a; {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…...

基于landsat与Modis影像的遥感技术的生态环境质量评价

本次将结合ArcGIS与ENVI&#xff0c;发布 landsat与Modis影像的遥感技术的生态环境质量评价技术专题&#xff0c;专题课程学习&#xff01; 在反映生态质量的诸多自然因素中&#xff0c;绿度、湿度、热度、干度可谓是与人类生存息息相关的4个重要指标&#xff0c;也是人类直观…...

蓝桥杯刷题--宝石组合

在一个神秘的森林里&#xff0c;住着一个小精灵名叫小蓝。有一天&#xff0c;他偶然发现了一个隐藏在树洞里的宝藏&#xff0c;里面装满了闪烁着美丽光芒的宝石。这些宝石都有着不同的颜色和形状&#xff0c;但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗宝石都有一个…...

记录一下学习docker的命令(不断补充中)

#2025-04-10,22:12############### 在wsl2中安装了ubuntu24.04.1后有部署了docker&#xff0c; 如果没有启动docker可以通过下列命令启动docker&#xff1a; sudo systemctl start docker 执行下列命令可以看到docker状态&#xff0c;并不占用控制台的命令&#xff1a; su…...

沃伦森电机状态传感器RS-MTS01:智能运维的解决方案

行业工况背景 一、方案背景 在现代工业生产中&#xff0c;电机发挥着至关重要的作用&#xff0c;其运行状况直接关联到生产效率、产品质量以及成本控制。传统的电机维护主要依赖于定期的巡检和事后维修&#xff0c;这种方式难以提前发现潜在的故障隐患&#xff0c;容易导致意外…...

设计模式:单例模式

复习一下&#xff1a; 单例模式&#xff08;Singleton Pattern&#xff09; 原理&#xff1a; 单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有&#xff0c;防止外部代码直接实例化该类。同时&#xff0c;提供…...

电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化

本文 去除水印实操视频展示电商图片水印处理的困境​影刀 RPA 魔法指令 3.0 强势登场​利用魔法指令3.0两步实现去除水印操作关于影刀RPA 去除水印实操视频展示 我们这里选择了4张小红书里面比较帅气的图片&#xff0c;但凡用过小红书的都知道&#xff0c;小红书右下角是会有小…...

解析 WebSocket 协议的基本原理

随着互联网的快速发展&#xff0c;Web 应用对实时通信的需求越来越高。传统的 HTTP 协议无法满足实时性的要求&#xff0c;而 WebSocket 协议则应运而生。WebSocket 是一种新型的协议&#xff0c;允许在一个单独的持久连接上进行全双工的通信&#xff0c;提供了更高效、实时的数…...

学生管理系统(Python)

运行结果&#xff1a; 源代码&#xff1a; """ 项目&#xff1a;类似于学生管理系统---增删改查 """ #封装一个学生类 import random class Student: def __init__(self,stuid,name,score): self.stuid stuid self.name name self.score …...

Java抽象类:深入理解与应用

一、引言 在Java的面向对象编程中&#xff0c;抽象类&#xff08;Abstract Class&#xff09;是一个非常重要的概念。它允许我们定义一个类&#xff0c;该类中包含一些抽象方法和非抽象方法&#xff0c;但自己不能被实例化。抽象类主要用于创建类的层次结构&#xff0c;并为子…...

下垂控制的定义与应用解析

下垂控制&#xff08;Droop Control&#xff09;是一种广泛应用于微电网、逆变器及分布式电源系统的控制策略&#xff0c;其核心思想是通过模拟传统同步发电机的下垂特性&#xff0c;实现电力系统中电压、频率的稳定以及功率的合理分配。以下是其关键解释及参考依据&#xff1a…...

oracle 并行度(Parallel Degree)

在Oracle数据库中&#xff0c;并行度&#xff08;Parallel Degree&#xff09; 是用于控制并行处理任务的关键配置&#xff0c;旨在通过多进程协作加速大规模数据处 一、并行度的核心概念 并行度&#xff08;DOP, Degree of Parallelism&#xff09; 表示一个操作同时使用的并…...

轻量级碎片化笔记memos本地NAS部署与跨平台跨网络同步笔记实战

文章目录 前言1. 使用Docker部署memos2. 注册账号与简单操作演示3. 安装cpolar内网穿透4. 创建公网地址5. 创建固定公网地址 推荐 ​ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站 前言…...

心有猛虎,细嗅蔷薇

2025年4月10日&#xff0c;13~28℃&#xff0c;还好 待办&#xff1a; 融智云考平台《物理》《物理2》《地理》《地理1》重修试卷 冶金《物理》课程标准 教学技能大赛PPT教案 遇见&#xff1a;网友过得挺好的。 感受&#xff1a;和网友说话还是不错的。 反思&#xff1a;无。 …...

借助DeepSeek开启学术写作高效通道

摘要 在学术研究领域&#xff0c;撰写高质量论文是研究者成果展示与学术交流的关键环节。然而&#xff0c;传统论文写作过程复杂&#xff0c;常使研究者面临诸多挑战。随着人工智能技术的发展&#xff0c;DeepSeek等工具为论文写作带来新契机。本文深入剖析利用DeepSeek进行论文…...

interrupt子系统中的数据结构

我们接着上一篇&#xff0c;开始真正的interrupt子系统&#xff1a; 现在有一个共享的中断&#xff0c;网卡跟开关共享同一个gpio中断&#xff0c;然后当触发中断的时候&#xff0c;GIC会发信号给CPU&#xff0c;告诉他已经发生了中断了&#xff0c;然后CPU会去读取GIC里面的寄…...

本地浏览器运行服务器jupyter文件

之前不知道要设置密码 一直登不上 远程linux服务器中安装jupyter通过本地浏览器访问使用_服务器jupyter 本地浏览器访问-CSDN博客...

P1331 洛谷 海战

题目描述 思路 这个题需要读懂题意&#xff0c;即“什么样的形式表示两只船相撞&#xff1f;” ----> 上下相邻或左右相邻 如果图是不和法的&#xff0c;一定存在如下结构&#xff1a; # # . # 或 # # # . 或 # . # # 或 . # # #即四个格子里有三个#&#xff0c;一个"…...

如何开发iOS辅助工具?iOS按键精灵帮你实现

强大的辅助工具可以支持自动化操作&#xff0c;轻松实现一键点击、滑动、输入等操作&#xff0c;无论是游戏挂机、日常任务还是批量处理&#xff0c;都能高效完成。 在按键精灵中针对新手用户和资深开发作者都有路径实现游戏的任务点击。 新手用户推荐使用录制功能以及连点器…...

数据可视化 —— 柱形图应用(大全)

一、案例一&#xff1a;单柱形图 1.导入库 import matplotlib.pyplot as plt import pandas as pd import numpy as np 2.给窗口名称和画布大小 plt.figure(num单柱形图, figsize(6, 4), facecolorw) 3.定义x、y轴的数据 # range(0-4) x np.arange(5) # 创建数组 y1 np.a…...

NLP高频面试题(三十九)——什么是大模型的涌现能力?

在人工智能领域,随着模型规模的扩大,研究人员观察到大型语言模型会展现出一些在小型模型中未曾出现的全新能力,这种现象被称为涌现能力。这些能力并非通过特定编程或训练目标直接获得,而是在模型参数和训练数据达到一定规模后自发出现的。 为什么会产生涌现能力? 涌现能…...