LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations

LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations

  • 本篇摘要
  • 14. LangChain组件Tools/Toolkits详解
    • 14.6 特殊类型注解Annotations
      • 14.6.1 特殊类型注解分类
      • 14.6.1 InjectedToolArg构建运行时绑定值工具
      • 14.6.3 查看并传入参数
      • 14.6.4 在运行时注入参数
      • 14.6.5 其它特殊类型注解
    • 参考文献

本章目录如下:

  1. 《LangChain组件Tools/Toolkits详解(1)——Tools接口与创建工具概述》
  2. 《LangChain组件Tools/Toolkits详解(2)——装饰器@tool》
  3. 《LangChain组件Tools/Toolkits详解(3)——结构化工具StructuredTool》
  4. 《LangChain组件Tools/Toolkits详解(4)——处理Error》
  5. 《LangChain组件Tools/Toolkits详解(5)——返回产物artifact》
  6. 《LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations》
  7. 《LangChain组件Tools/Toolkits详解(7)——工具调用与Toolkits》

本篇摘要

本章介绍LangChain组件Tools/Toolkits。

14. LangChain组件Tools/Toolkits详解

工具(Tools)是一种封装函数及其模式schema的方法,可以传递给聊天模型,使模型能够请求执行带有特定输入的工具函数,例如从数据库获取数据、发出API请求或运行自定义代码。LangChain中的tool抽象类将Python函数与定义函数名称、描述和预期参数的模式schema关联起来,以明确创建工具的作用及调用方式。本节将从Tools接口与创建工具概述、装饰器@tool、结构化工具StructuredTool、处理Error、返回产物artifact、特殊类型注解、工具调用和Toolkits等方面详细介绍工具。

14.6 特殊类型注解Annotations

在工具的函数签名中,可以使用一些特殊的类型注解(Special Type Annotations)来配置工具的运行时行为。本节将讲述其分类及使用方法。

14.6.1 特殊类型注解分类

常用的特殊类型注解有以下几种,下面注解将从工具的模式schema中移除相应的参数,这对于不应暴露给模型且模型不应控制的参数非常有用:

  • InjectedToolArg:值应在运行时使用.invoke或.ainvoke手动注入;
  • RunnableConfig:将RunnableConfig对象传递给工具;
  • InjectedState:将LangGraph图的整体状态传递给工具;
  • InjectedStore:将LangGraph存储对象传递给工具。

我们还可以使用Annotated类型与上面参数的字符串字面量(string literal)结合,为工具模式中暴露的相关参数提供描述,其调用格式为:

  • Annotated[type, “string literal”]:为参数添加描述,该描述将暴露在工具的模式中。

14.6.1 InjectedToolArg构建运行时绑定值工具

运行时绑定值:我们有时可能需要将仅在运行时已知的值绑定到工具,例如工具逻辑可能需要使用发起请求的用户ID。在大多数情况下,这些值不应由LLM(大语言模型)控制,因为允许LLM控制用户ID可能会导致安全风险,它们应由应用程序逻辑固定。为此我们使用InjectedToolArg注解来标记工具的某些参数,它允许从工具的模式中隐藏某些参数。下面将展示如何防止模型生成某些工具参数,并在运行时直接注入这些参数。

关于兼容性,本部分代码需要langchain-core >= 0.2.21,请确保已安装正确版本的包。另外对于LangGraph,请参考How to pass runtime values to tools,它讲述如何创建一个代理来跟踪给定用户最喜欢的宠物。

例如当工具需要在运行时动态注入user_id,首先以Anthropic为例创建LLM:

# !pip install -qU "langchain[anthropic]"
import getpass
import osif not os.environ.get("ANTHROPIC_API_KEY"):os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Enter API key for Anthropic: ")from langchain.chat_models import init_chat_modelllm = init_chat_model("claude-3-5-sonnet-latest", model_provider="anthropic")

然后通过使用InjectedToolArg注解user_id参数,告诉LangChain该参数不应作为工具模式的一部分暴露:

from typing import List
from langchain_core.tools import InjectedToolArg, tool
from typing_extensions import Annotateduser_to_pets = {}
@tool(parse_docstring=True)
def update_favorite_pets(pets: List[str], user_id: Annotated[str, InjectedToolArg]
) -> None:"""Add the

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36881.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主流加固方案深度剖析(梆梆/腾讯/阿里)

1. 加固技术演进与核心原理 1.1 移动端加固技术图谱 graph TD A[代码防护] --> A1[混淆] A --> A2[虚拟化] A --> A3[动态加载] B[数据防护] --> B1[资源加密] B --> B2[协议加密] C[运行时防护] --> C1[反调试] C --> C2[环境检测] C --> C…

大模型之蒸馏模型

蒸馏模型(Distilled Model)是一种通过知识蒸馏(Knowledge Distillation)技术训练得到的轻量级模型,其核心思想是将一个复杂的大模型(称为教师模型)的知识“迁移”到一个更小、更高效的模型&…

iPaaS集成平台中的API可视化编排能给企业带来什么作用

随着企业数字化转型的加速,API(应用程序接口)作为企业数字化资产的核心组成部分,其数量和复杂性不断增加。为了满足业务敏捷化交付的要求,API可视化编排平台应运而生。谷云科技作为这一领域的领先者,其API可…

演员马晓琳正式加入创星演员出道计划,开启演艺事业新篇章

3月19日,演员马晓琳正式加入“创星演员出道计划”,不仅得到参演都市爱情喜剧《和我结婚吧》角色的机会,还获得文旅精品网剧《醉梦灵州》的出演机会,自此开启全新影视之路。对表演抱有极大热情的马晓琳,相信未来可以凭借…

绿盟科技春招面试

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

双碳战略下的电能质量革命:解码电力系统的健康密码

安科瑞顾强 在能源结构转型的深水区,电能质量正成为制约产业升级的隐形门槛。国家能源局数据显示,我国工业企业每年因电能质量问题造成的经济损失高达3000亿元,而新能源项目因并网质量问题导致的发电效率损失超过15%。在这场关乎能源安全的攻…

Microsoft Edge浏览器的取证分析(基于Chromium)

概述 早在2019年,微软就用Chromium替换了EdgeHTML浏览器引擎,这是微软支持谷歌Chrome浏览器的一个开源项目。通过切换到Chromium,Edge与Chrome浏览器共享一个共同的架构,这意味着用于Chrome浏览器调查的取证技术也适用于Edge。 …

python学智能算法(八)|决策树

【1】引言 前序学习进程中,已经对KNN邻近算法有了探索,相关文章链接为: python学智能算法(七)|KNN邻近算法-CSDN博客 但KNN邻近算法有一个特点是:它在分类的时候,不能知晓每个类别内事物的具…

RTSP/Onvif安防监控系统EasyNVR级联视频上云系统EasyNVS报错“Login error”的原因排查与解决

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

通信网络安全防护定级备案需要材料汇总

通信网络安全防护定级备案工作需要到指定的系统上先写基本信息,然后上传对应的材料,提交后会流转到地方通管局或部里审核。对于第一次使用该系统的朋友来说,通信网络安全防护定级备案需要什么材料是目前比较关注的问题。下面calm13就结合以往…

15:00面试,15:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

ORACLE 19.8版本数据库环境EXPDP导数据的报错处理

近期用户在做EXPDP导出时,报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的,到底是什么原因导致了这个问题呢? 导出脚本报错: 分析导出日志,当时系统资源充足但是进程启动失败,…

【Editor】动态添加/移除宏定义

ProjectSetting中OtherSettings页签 执行工具指令 using UnityEditor; using UnityEngine; using System.Linq;public class Tools : Editor {//在菜单栏中点击自动添加[MenuItem("Tools/AddScriptingSymbols")]private static void AddScriptingSymbols(){//获取当…

Web-Machine-N7靶机实战攻略

1.安装并开启靶机 下载VirtualBox:https://www.virtualbox.org 导入虚拟机 设置为桥接模式 2.获取靶机IP Kali设为桥接模式 3.访问靶机 4.获取敏感目录文件和端口 gobuster dir -u http://172.16.2.68 -w /usr/share/wordlists/dirbuster/directory-list-2.3-me…

C语言实验:数组,指针实现问题求解

实验目的:掌握数组,指针的使用 实验内容: 1直接选择排序 2字符串运算 3交换数字 流程图: 1直接选择排序 2字符串运算 3交换数字 程序调试 1直接选择排序 1-1出现问题(贴图并说明) 错误原因&#xf…

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解 (图1-1) 一、鸿蒙中App、HAP、HAR、HSP是什么? (1)App Pack(Application Package) 是应用发布的形态,上架应用市场是以App Pa…

LiteIDE中配置golang编译生成无CMD窗口EXE的步骤

LiteIDE中配置golang编译生成无CMD窗口EXE的步骤 一、环境配置1、设置GOROOT‌2、配置GOPATH‌ 二、项目编译参数设置1、新建/打开项目‌2、修改编译配置‌3、其他优化选项(可选)‌ 三、构建与验证1、编译生成EXE‌2、验证无窗口效果‌ 四、注意事项 一、…

暗光增强技术研究进展与产品落地综合分析(2023-2025)

一、引言 暗光增强技术作为计算机视觉与移动影像领域的核心研究方向之一,近年来在算法创新、硬件适配及产品落地方面取得了显著进展。本文从技术研究与产业应用两个维度,系统梳理近三年(2023-2025)该领域的关键突破,并对比分析主流手机厂商的影像技术优劣势。 二、暗光增…

理解 RAG 第四部分:RAGA 和其他评估框架

检索增强生成(RAG) 在扩展独立大型语言模型(LLM)的限制和克服其诸多局限性方面发挥了关键作用。通过整合检索器,RAG 提高了响应相关性和事实准确性:它只需实时利用外部知识源(如矢量文档库),并在原始用户查询或提示中添…

基于视觉的核桃分级与套膜装置研究(大纲)

基于视觉的核桃分级与套膜装置研究:从设计到实现的完整指南 (SolidWorks、OpenCV、STM32开发实践) 🌟 项目背景与目标 1.1 为什么选择视觉分级与套膜? 产业痛点: 中国核桃年产量全球第一,但…