LangChain中的工具与工具包

01. LangChain 内置工具

函数调用 是可靠地从大语言模型中获取结构化数据的一个功能,要想使用 函数调用 就必须定义好特定的函数或工具,并将工具的相关信息传递给大语言模型,在 LangChain 中封装了大量的 预设工具,开箱即用,涵盖了:搜索、图像生成、百科、视频信息提取、代码执行、数据分析等。

并且在 LangChain 中,所有工具都是 BaseTool 的子类,并且工具也是 Runnable可运行组件,支持通过 invoke、batch 和 stream 等方法进行调用,使用起来也非常简单,实例化工具后直接调用 invoke 函数即可,除此之外,可以通过 name、description、args、return_direct 属性来获取到工具的相关信息。

例如以 DuckDuckGo搜索 为例,首先安装特定的依赖库

pip install -U duckduckgo-search

示例代码如下

from langchain_community.tools import DuckDuckGoSearchRun

search = DuckDuckGoSearchRun()

print("工具名字: ", search.name)

print("工具描述: ", search.description)

print("工具参数:", search.args)

print("是否直接返回: ", search.return_direct)

print(search.run("LangChain目前最新版本是什么?"))

输出内容

工具名字: duckduckgo_search

工具描述: A wrapper around DuckDuckGo Search. Useful for when you need to answer questions about current events. Input should be a search query.

工具参数: {'query': {'title': 'Query', 'description': 'search query to look up', 'type': 'string'}}

是否直接返回: False

LangChain 基准是一个 python 包和相关数据集,用于促进不同认知架构的实验和基准测试。. 每个基准任务都针对常见 LLM 应用程序中的关键功能,例如基于检索的问答、提取、代理工具使用等。. 对于我们的第一个基准,我们发布了一个关于 LangChain python 文档的问答 ... 它建立在 LCEL 的基础之上,添加了两个重要的组件:轻松定义循环的能力(这对代理很重要,但对链来说不需要)和内置内存。. 在 langchain v0.3 中,我们保留了旧的 AgentExecutor------但 LangGraph 正在成为构建代理的推荐方式。. 我们添加了一个预构建的 LangGraph 对象 ... 奋战一年,LangChain首个稳定版本终于发布,LangGraph把智能体构建为图. 著名的大模型智能体工具,现在有大版本更新了。不知不觉,LangChain 已经问世2年了。. 作为一个开源框架,LangChain 提供了构建基于大模型的 AI 应用所需的模块和工具,大大降低了 AI 应用 ... LangChain 承诺「让开发人员一个下午就能从一个想法变成可运行的代码」,但随着我们的需求变得越来越复杂,问题也开始浮出水面。. LangChain 变成了阻力的根源,而不是生产力的根源。. 随着 LangChain 的不灵活性开始显现,我们开始深入研究 LangChain 的内部结构 ... LangChain 随时间推移的变化. 我们文档中新增的"LangChain 随时间推移的变化"部分可帮助您及时了解变化。其中提供了有关 LangChain 如何变化、如何升级以及如何将旧版本中的先前概念映射到新版本中的指南。这是社区强烈要求的功能,我们也认为它非常必要!

如果需要将工具转换成 openai 工具形式参数,可以使用 convert_to_openai_tool() 辅助函数,示例如下:

from langchain_community.tools import DuckDuckGoSearchRun

from langchain_core.utils.function_calling import convert_to_openai_tool

search = DuckDuckGoSearchRun()

print(convert_to_openai_tool(search))

输出内容:

{'type': 'function', 'function': {'name': 'duckduckgo_search', 'description': 'A wrapper around DuckDuckGo Search. Useful for when you need to answer questions about current events. Input should be a search query.', 'parameters': {'type': 'object', 'properties': {'query': {'description': 'search query to look up', 'type': 'string'}}, 'required': ['query']}}}

02. LangChain 内置工具包

在 LangChain 中,工具包是一组设计用于一起执行特定任务的工具集,它们具有便捷加载的方法------get_tools(),并且所有工具包都公开了一个 get_tools() 方法,该方法返回一个工具列表,这样就无需一个一个加载特定的工具了。

工具包 一般是同一个服务提供商提供的一系列工具,例如在 LangChain 中封装了 Azure AI 的对应工具包,该工具包提供了 5 个工具:

  1. AzureAiServicesImageAnalysisTool:用于从图像中提取标题、对象、标签和文本。
  2. AzureAiServicesDocumentIntelligenceTool:用于从文档中提取文本、表格和键值对。
  3. AzureAiServicesSpeechToTextTool:用于将语音转录为文本。
  4. AzureAiServicesTextToSpeechTool:用于将文本合成语音。
  5. AzureAiServicesTextAnalyticsForHealthTool:用于提取医疗实体。

使用起来也非常简单,首先安装特定的依赖包

pip install -U azure-ai-formrecognizer azure-cognitiveservices-speech azure-ai-textanalytics azure-ai-vision-imageanalysis

然后配置 Azure 的相关环境变量

import os

os.environ["OPENAI_API_KEY"] = "sk-"

os.environ["AZURE_AI_SERVICES_KEY"] = ""

os.environ["AZURE_AI_SERVICES_ENDPOINT"] = ""

os.environ["AZURE_AI_SERVICES_REGION"] = ""

接下来就可以创建工具包,示例如下:

from langchain_community.agent_toolkits import AzureAiServicesToolkit

toolkit = AzureAiServicesToolkit()

print([tool.name for tool in toolkit.get_tools()])

输出内容如下:

'azure_ai_services_document_intelligence', 'azure_ai_services_image_analysis', 'azure_ai_services_speech_to_text', 'azure_ai_services_text_to_speech', 'azure_ai_services_text_analytics_for_health'

不过由于 工具包 包含了多组工具,一般很少单独拆分出来使用,通常用在 Agent 或者 函数调用 中,这样无需一次性实例化多个工具,在实际开发中,往往更多的是手动实例化工具进行组装

相关推荐
晚霞的不甘1 天前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
愚公搬代码1 天前
【愚公系列】《AI短视频创作一本通》016-AI短视频的生成(AI短视频运镜方法)
人工智能·音视频
哈__1 天前
CANN内存管理与资源优化
人工智能·pytorch
极新1 天前
智启新篇,智创未来,“2026智造新IP:AI驱动品牌增长新周期”峰会暨北京电子商务协会第五届第三次会员代表大会成功举办
人工智能·网络协议·tcp/ip
island13141 天前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构任务的 Stream 调度机制
开发语言·人工智能·深度学习·神经网络
艾莉丝努力练剑1 天前
深度学习视觉任务:如何基于ops-cv定制图像预处理流程
人工智能·深度学习
禁默1 天前
大模型推理的“氮气加速系统”:全景解读 Ascend Transformer Boost (ATB)
人工智能·深度学习·transformer·cann
User_芊芊君子1 天前
CANN大模型加速核心ops-transformer全面解析:Transformer架构算子的高性能实现与优化
人工智能·深度学习·transformer
摘星编程1 天前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
格林威1 天前
Baumer相机玻璃制品裂纹自动检测:提高透明材质检测精度的 6 个关键步骤,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·材质·工业相机·sdk开发·堡盟相机