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

LangChain组件Tools/Toolkits详解(5)——返回产出artifact

LangChain组件Tools/Toolkits详解(5)——返回产出artifact

  • 本篇摘要
  • 14. LangChain组件Tools/Toolkits详解
    • 14.5 返回产出artifact
      • 14.5.1 定义工具
      • 14.5.2 使用ToolCall调用工具
      • 14.5.3 与模型一起使用
      • 14.5.4 从子例化BaseTool返回
    • 参考文献

本章目录如下:

  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.5 返回产出artifact

工具是模型可以调用的实用程序,其输出被设计为反馈给模型。然而,有时我们希望将工具执行的一些产出(artifacts)提供给链或代理中的下游组件,但不希望将这些结果暴露给模型本身。例如,如果工具返回一个自定义对象(如文档)、数据帧或图像,我们可能希望将有关此输出的一些元数据metadata传递给模型,而不是将原始输出传递给模型;同时我们可能希望在其他地方访问完整的输出,例如在下游工具中。

Tool和ToolMessage接口使我们可以区分工具输出中用于模型的部分(即 ToolMessage.content)和用于模型外部的部分(ToolMessage.artifact)。
此功能在langchain-core == 0.2.19中添加,因此请确保langchain-core >= 0.2.19。

14.5.1 定义工具

如果我们希望工具能够区分消息内容和其他产出,需要在定义工具时指定 response_format=“content_and_artifact”,并确保返回一个 (content, artifact) 元组。示例如下:

# !pip install -qU "langchain-core>=0.2.19"
import random
from typing import List, Tuple

from langchain_core.tools import tool

@tool(response_format="content_and_artifact")
def generate_random_ints(min: int, max: int, size: int) -> Tuple[str, List[int]]:
    """Generate size random ints in the range [min, max]."""
    array = [random.randint(min, max) for _ in range(size)]
    content = f"Successfully generated array of {
     size} random ints in [{
     min}

http://www.kler.cn/a/597156.html

相关文章:

  • k8s调度的过程,各组件之间的配合解析
  • Ubuntu实时读取音乐软件的音频流
  • Flutter中常用命令
  • 矩阵篇---矩阵的应用
  • 常考计算机操作系统面试习题(三上)
  • 【Go】map数据类型
  • React 中的错误边界(Error Boundaries),如何使用它们捕获组件错误
  • Java 之「单调栈」:从入门到实战
  • 专访成都昭音科技Jackal:AI内容营销助力中企走向全球
  • AndroidFramework 生成 ota_update.zipadb验证OTA
  • JAVA学习*内部类
  • 通过webrtc+canvas+css实现简单的电脑滤镜拍照效果
  • 告别 ResultSet 的烦恼:使用 Apache DBUtils 和 ArrayList 优化数据管理
  • 机器学习knnlearn1
  • 嵌入式硬件工程师从小白到入门-原理图(三)
  • YOLO编程:开启计算机视觉的神奇之门
  • 我被AI骗了—关于CAN总线填充机制的回答
  • AWS中通过Endpoint Security(如Amazon GuardDuty)与安全组、网络ACL联动实现协同防御
  • 【大语言模型_8】vllm启动的模型通过fastapi封装增加api-key验证
  • ci如何做才能做到每秒rps 为3000+