01LangChain工具调用概述
LangChain,这一智能组装工程师般的存在,能够灵活地将各类AI能力进行模块化组合,如同搭建积木般简单而高效。
> 工具定义
首先,我们需要导入必要的模块。这里,我们导入了17036类,它来自17035,以及17034和17033类型提示,它们来自17032模块。接下来,我们定义了一个简单的计算器工具,它继承自17031类。这个工具被命名为"calculator",旨在执行数学计算。它包含一个同步运行的函数17030,该函数尝试使用eval函数计算提供的表达式,并返回计算结果或错误信息。此外,还定义了一个异步运行的函数async def_arun(self, 表达式: str) -> str,该函数通过调用同步函数self._run(表达式)来实现异步计算。
> 工具集成
为了进一步探索AI能力的可能性,我们可以将这个计算器工具与其他工具和语言模型进行集成。这里,我们使用了langchain.agents模块中的initialize_agent函数和AgentType枚举来创建代理,以及langchain.llms模块中的OpenAI类来创建语言模型。通过这些集成,我们可以实现更复杂、更智能的功能,从而进一步拓展AI的应用范围。
> 实用功能
在上述代码中,我们展示了如何使用一个计算器工具来执行数学运算。通过初始化一个agent并调用其run方法,我们可以轻松地获取到"(23 46 - 12)"的计算结果。这种实用功能使得我们的代码更加简洁高效,无需复杂的数学运算步骤即可得到准确答案。
02自定义工具开发
> 自定义API工具
创建HTTP请求工具
```python
from langchain.tools import Tool
import requests
def query_weather(地点: str) -> str:
try:
url = f"..."
response = requests.get(url)
data = response.json()
return f"{地点}的天气是: {data['condition']}, 温度{data['temperature']}°C"
except Exception as e:
return f"获取天气信息失败: {str(e)}"
weather_tool = Tool.from_function(
func=query_weather,
name="weather_api",
description="查询指定地点的实时天气信息",
return_direct=True,
)
```
> 工具组合链式调用
构建多工具协作的场景
```python
from langchain.tools import Tool
from datetime import datetime
def get_current_time() -> str:
now = datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
time_tool = Tool.from_function(
func=get_current_time,
name="current_time",
description="获取当前的系统时间和日期",
)
multi_functional_agent = initialize_agent(
tools=[time_tool, weather_tool],
llm=None,
agent=None,
verbose=True,
)
result = multi_functional_agent.run("现在几点了?天气怎么样?顺便计算一下明天距离周末还有几天。")
```
03工具增强功能
> 工具记忆功能
为工具添加上下文感知的记忆功能
```python
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory_module = ConversationBufferMemory()
smart_assistant = initialize_agent(
tools=[calculator_tool, weather_tool],
llm=llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory_module,
verbose=True,
)
```
> 信息检索助手
构建可搜索文档的工具
```python
from langchain.tools import Tool
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.document_loaders import TextLoader
def 创建知识库(文档列表):
loader = TextLoader(文档列表)
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(loader.load(), embeddings)
return vectorstore
knowledge_base = 创建知识库(文档列表)
文档集 = ['关于LangChain的第一篇文档', '关于LangChain的第二篇文档', ...]
搜索函数 = lambda 查询: 知识库.search(查询)
知识库搜索的实现
print(搜索结果)
```
> 连接外部数据库
将数据库查询与LangChain工具结合
```python
import sqlite3
from langchain.tools import.Tool
def 查询产品(查询条件):
try:
cursor.execute(f'SELECT FROM 产品 WHERE {查询条件}')
结果 = cursor.fetchall()
if not 结果:
return '没有找到匹配的产品'
else:
return '
'.join([f'产品17037">}的详细信息如下:' for r in 结果])
except Exception as e:
return f"查询失败: {str(e)}"
数据库工具 = Tool.from_function(
func=查询产品,
name="数据库查询",
description="连接外部数据库以获取产品信息",
)
```
04总结
LangChain工具调用框架是扩展AI能力的重要工具,它能帮助我们封装外部功能、组合多种能力、构建复杂工作流,并创建专业智能体。通过灵活的组合和调用,AI能力的边界得以不断扩展,帮助我们处理日益复杂的实际任务。
举报/反馈
相关知识
创造力的探索之旅:开启无限可能
探索瑜伽体式,解锁身心的无限可能
零度大板砖:探索无限可能的清凉口感世界
虚拟现实的无限可能:探索VR技术在教育与医疗中的应用
未来驾驶新纪元:探索智能电动汽车的无限可能
魔域最新开服表,探索虚拟世界的无限可能,魔域最新开服表,虚拟世界的无限探索之旅
走进HEYJULIE黑醋栗,探索新西兰黑醋栗的无限可能
健身,让生活更美好:探索健身带来的无限可能
云南360全景漫游:探索与互动的无限可能
天天综合,探索多元生活的无限可能天天综合征
网址: 深入探索LangChain工具调用的无限可能 https://m.trfsz.com/newsview1823565.html