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)——特殊類型注解》
  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[

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74304.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

openharmony中hilog實證記錄說明(3.1和5.0版本)

每次用這個工具hilog都有一些小用法記不清,需要花一些時間去查去分析使用方法,為了給豐富多彩的生活留出更多的時間,所以匯總整理共享來了,它來了它來了~~~~~~~~~ 開始是想通過3.1來匯總的,但實際測試發現openharmony…

NVIDIA nvmath-python:高性能數學庫的Python接口

NVIDIA nvmath-python:高性能數學庫的Python接口 NVIDIA nvmath-python是一個高性能數學庫的Python綁定,它為Python開發者提供了訪問NVIDIA優化數學算法的能力。這個庫特別適合需要高性能計算的科學計算、機器學習和數據分析應用。 文章目錄 NVIDIA nv…

【euclid】20 2D包圍盒模塊(box2d.rs)

box2d.rs文件定義了一個二維軸對齊矩形(Box2D),使用最小和最大坐標來表示。矩形在坐標類型(T)和單位(U)上是泛型的。代碼提供了多種方法來操作和查詢矩形,包括求交集、并集、平移、縮…

ChatTTS 開源文本轉語音模型本地部署 API 使用和搭建 WebUI 界面

ChatTTS(Chat Text To Speech),專為對話場景設計的文本生成語音(TTS)模型,適用于大型語言模型(LLM)助手的對話任務,以及諸如對話式音頻和視頻介紹等應用。支持中文和英文,還可以穿插笑聲、說話間的停頓、以…

鏈表相關知識總結

1、數據結構 基本概念: 數據項:一個數據元素可以由若干個數據項組成數據對象:有相同性質的數據元素的集合,是數據的子集數據結構:是相互之間存在一種或多種特定關系的數據元素的集合 邏輯結構和物理結構&#xff1a…

藍橋杯備考-》單詞接龍

很明顯,這道題是可以用DFS來做的,我們直接暴力搜索,但是這里有很多點是我們需要注意的。 1.我們如何確定兩個單詞能接上? 比如touch和choose 應該合成為touchoose 就是這樣兩個單詞,我們讓一個指針指著第一個字符串…

C語言-訪問者模式詳解與實踐

C語言訪問者模式詳解與實踐 - 傳感器數據處理系統 1. 什么是訪問者模式? 在嵌入式系統中,我們經常需要對不同傳感器的數據進行多種處理,如數據校準、過濾、存儲等。訪問者模式允許我們在不修改傳感器代碼的情況下,添加新的數據處…

(UI自動化測試web端)第二篇:元素定位的方法_xpath路徑定位

1、第一種xpath路徑定位: 絕對路徑:表達式是以 /html開頭,元素的層級之間是以 / 分隔相同層級的元素可以使用下標,下標是從1開始的需要列出元素所經過的所有層級元素,工作當中一般不使用絕對路徑 例:/html/…

設置GeoJSONVectorTileLayer中的line填充圖片

設置GeoJSONVectorTileLayer中的line填充圖片 關鍵:linePatternFile const style [{filter: true,renderPlugin: {dataConfig: {type: "line",},type: "line",},symbol: {linePatternFile: "http://examples.maptalks.com/resources/pat…

electron框架(4.0)electron-builde和electron Forge的打包方式

----使用electron-builder打包(需要魔法) --安裝electron-builder: npm install electron-builder -D--package.json中進行相關配置: {"name": "video-tools","version": "1.0.0","main&quo…

讓 MGR 不從 Primary 的節點克隆數據?

問題 MGR 中,新節點在加入時,為了與組內其它節點的數據保持一致,它會首先經歷一個分布式恢復階段。在這個階段,新節點會隨機選擇組內一個節點(Donor)來同步差異數據。 在 MySQL 8.0.17 之前,同…

第三十二篇 深入解析Kimball維度建模:構建企業級數據倉庫的完整框架

目錄 一、維度建模設計原則深度剖析1.1 業務過程驅動設計1.2 星型模式VS雪花模式 二、維度建模五步法實戰(附完整案例)2.1 業務需求映射2.2 模型詳細設計2.3 緩慢變化維處理 三、高級建模技術解析3.1 漸變維度橋接表3.2 快照事實表設計 四、性能優化體系…

IntelliJ IDEA 中 Maven 的 `pom.xml` 變灰帶橫線?一文詳解解決方法

前言 在使用 IntelliJ IDEA 進行 Java 開發時,如果你發現項目的 pom.xml 文件突然變成灰色并帶有刪除線,這可能是 Maven 的配置或項目結構出現了問題。 一、問題現象與原因分析 現象描述 文件變灰:pom.xml 在項目資源管理器中顯示為灰色。…

緩存過期時間之邏輯過期

1. 物理不過期(Physical Non-Expiration) 定義:在Redis中不設置EXPIRE時間,緩存鍵永久存在(除非主動刪除或內存淘汰)。目的:徹底規避因緩存自動過期導致的擊穿(單熱點失效&#xff…

基于WebAssembly的瀏覽器密碼套件

目錄 一、前言二、WebAssembly與瀏覽器密碼套件2.1 WebAssembly技術概述2.2 瀏覽器密碼套件的需求三、系統設計思路與架構3.1 核心模塊3.2 系統整體架構圖四、核心數學公式與算法證明4.1 AES-GCM加解密公式4.2 SHA-256哈希函數五、異步任務調度與GPU加速設計5.1 異步任務調度5.…

Qt的內存管理機制

在Qt中,顯式使用new創建的對象通常不需要顯式調用delete來釋放內存,這是因為Qt提供了一種基于對象樹(Object Tree)和父子關系(Parent-Child Relationship)的內存管理機制。這種機制可以自動管理對象的生命周期,確保在適當的時候釋放內存&…

數據結構之雙向鏈表-初始化鏈表-頭插法-遍歷鏈表-獲取尾部結點-尾插法-指定位置插入-刪除節點-釋放鏈表——完整代碼

數據結構之雙向鏈表-初始化鏈表-頭插法-遍歷鏈表-獲取尾部結點-尾插法-指定位置插入-刪除節點-釋放鏈表——完整代碼 #include <stdio.h> #include <stdlib.h>typedef int ElemType;typedef struct node{ElemType data;struct node *next, *prev; }Node;//初化鏈表…

【Linux網絡-五種IO模型與阻塞IO】

一、引入 網絡通信的本質就是進程間的通信&#xff0c;進程間通信的本質就是IO&#xff08;Input&#xff0c;Output&#xff09; I/O&#xff08;input/output&#xff09;也就是輸入和輸出&#xff0c;在馮諾依曼體系結構當中&#xff0c;將數據從輸入設備拷貝到內存就叫作…

算法-最大公約數

1、約數&#xff1a; 1.1 試除法求約數 原理&#xff1a;只需要遍歷最小的約數即可&#xff0c;較大的那個可以直接算出來。 import java.util.*; public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {int t sc.nextIn…

湖北楚大夫

品牌出海已成為眾多企業拓展業務、提升競爭力的關鍵戰略。楚大夫(chudafu.com)作為一家專注于品牌出海、海外網絡營銷推廣以及外貿獨立站搭建的公司&#xff0c;憑借其專業、高效、創新的服務模式&#xff0c;致力于成為中國企業走向國際市場的堅實后盾與得力伙伴。楚大夫通過綜…