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

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 = 

相关文章:

  • 蓝桥杯真题 2109.统计子矩阵
  • 蓝桥杯备考-》单词接龙
  • bug:uni-file-picker上传图片报错,文件选择器对话框只能在由用户激活时显示,跨域cors
  • 用PostgreSQL玩转俄罗斯方块:当SQL成为游戏引擎
  • SpringBoot中安全的设置阿里云日志SLS的accessKey
  • RAG优化:python从零实现长上下文压缩技术
  • MySQL中DDL、DML、DQL、DCL四种语言详细介绍
  • SpringBoot-3-JWT令牌
  • Js 垃圾回收 与 内存泄漏
  • java当中的list集合
  • 第十四天- 排序
  • 轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁
  • 基于springboot的校园资料分享平台(048)
  • 307 Temporary Redirect 解决办法 httpx
  • 如何安全解除PDF文件密码?实测免费工具操作指南
  • Live555+Windows+MSys2 编译Androidso库和运行使用
  • scrapy_yield详解
  • JSON 简介
  • COBOL语言的安全开发
  • Spring Boot(十六):拦截器Interceptor
  • 在笔墨金石间,看胡问遂与梅舒适的艺术对话
  • 专访|导演刘江:给谍战题材注入现实主义的魂
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问
  • 中美经贸高层会谈在瑞士日内瓦举行
  • 金科股份重整方案通过,正式进入重整计划执行环节
  • 巴基斯坦全面恢复领空开放