首頁 資訊 深入探索LangChain工具調(diào)用的無限可能

深入探索LangChain工具調(diào)用的無限可能

來源:泰然健康網(wǎng) 時間:2025年09月24日 15:34

01LangChain工具調(diào)用概述

LangChain,這一智能組裝工程師般的存在,能夠靈活地將各類AI能力進行模塊化組合,如同搭建積木般簡單而高效。

> 工具定義

首先,我們需要導入必要的模塊。這里,我們導入了17036類,它來自17035,以及17034和17033類型提示,它們來自17032模塊。接下來,我們定義了一個簡單的計算器工具,它繼承自17031類。這個工具被命名為"calculator",旨在執(zhí)行數(shù)學計算。它包含一個同步運行的函數(shù)17030,該函數(shù)嘗試使用eval函數(shù)計算提供的表達式,并返回計算結(jié)果或錯誤信息。此外,還定義了一個異步運行的函數(shù)async def_arun(self, 表達式: str) -> str,該函數(shù)通過調(diào)用同步函數(shù)self._run(表達式)來實現(xiàn)異步計算。

> 工具集成

為了進一步探索AI能力的可能性,我們可以將這個計算器工具與其他工具和語言模型進行集成。這里,我們使用了langchain.agents模塊中的initialize_agent函數(shù)和AgentType枚舉來創(chuàng)建代理,以及l(fā)angchain.llms模塊中的OpenAI類來創(chuàng)建語言模型。通過這些集成,我們可以實現(xiàn)更復雜、更智能的功能,從而進一步拓展AI的應(yīng)用范圍。

> 實用功能

在上述代碼中,我們展示了如何使用一個計算器工具來執(zhí)行數(shù)學運算。通過初始化一個agent并調(diào)用其run方法,我們可以輕松地獲取到"(23 46 - 12)"的計算結(jié)果。這種實用功能使得我們的代碼更加簡潔高效,無需復雜的數(shù)學運算步驟即可得到準確答案。

02自定義工具開發(fā)

> 自定義API工具

創(chuàng)建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,

)

```

> 工具組合鏈式調(diào)用

構(gòu)建多工具協(xié)作的場景

```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="獲取當前的系統(tǒng)時間和日期",

)

multi_functional_agent = initialize_agent(

tools=[time_tool, weather_tool],

llm=None,

agent=None,

verbose=True,

)

result = multi_functional_agent.run("現(xiàn)在幾點了?天氣怎么樣?順便計算一下明天距離周末還有幾天。")

```

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,

)

```

> 信息檢索助手

構(gòu)建可搜索文檔的工具

```python

from langchain.tools import Tool

from langchain.embeddings import OpenAIEmbeddings

from langchain.vectorstores import FAISS

from langchain.document_loaders import TextLoader

def 創(chuàng)建知識庫(文檔列表):

loader = TextLoader(文檔列表)

embeddings = OpenAIEmbeddings()

vectorstore = FAISS.from_documents(loader.load(), embeddings)

return vectorstore

knowledge_base = 創(chuàng)建知識庫(文檔列表)

文檔集 = ['關(guān)于LangChain的第一篇文檔', '關(guān)于LangChain的第二篇文檔', ...]

搜索函數(shù) = lambda 查詢: 知識庫.search(查詢)

知識庫搜索的實現(xiàn)

print(搜索結(jié)果)

```

> 連接外部數(shù)據(jù)庫

將數(shù)據(jù)庫查詢與LangChain工具結(jié)合

```python

import sqlite3

from langchain.tools import.Tool

def 查詢產(chǎn)品(查詢條件):

try:

cursor.execute(f'SELECT FROM 產(chǎn)品 WHERE {查詢條件}')

結(jié)果 = cursor.fetchall()

if not 結(jié)果:

return '沒有找到匹配的產(chǎn)品'

else:

return '

'.join([f'產(chǎn)品17037">}的詳細信息如下:' for r in 結(jié)果])

except Exception as e:

return f"查詢失敗: {str(e)}"

數(shù)據(jù)庫工具 = Tool.from_function(

func=查詢產(chǎn)品,

name="數(shù)據(jù)庫查詢",

description="連接外部數(shù)據(jù)庫以獲取產(chǎn)品信息",

)

```

04總結(jié)

LangChain工具調(diào)用框架是擴展AI能力的重要工具,它能幫助我們封裝外部功能、組合多種能力、構(gòu)建復雜工作流,并創(chuàng)建專業(yè)智能體。通過靈活的組合和調(diào)用,AI能力的邊界得以不斷擴展,幫助我們處理日益復雜的實際任務(wù)。

舉報/反饋

相關(guān)知識

創(chuàng)造力的探索之旅:開啟無限可能
探索瑜伽體式,解鎖身心的無限可能
零度大板磚:探索無限可能的清涼口感世界
虛擬現(xiàn)實的無限可能:探索VR技術(shù)在教育與醫(yī)療中的應(yīng)用
未來駕駛新紀元:探索智能電動汽車的無限可能
魔域最新開服表,探索虛擬世界的無限可能,魔域最新開服表,虛擬世界的無限探索之旅
走進HEYJULIE黑醋栗,探索新西蘭黑醋栗的無限可能
健身,讓生活更美好:探索健身帶來的無限可能
云南360全景漫游:探索與互動的無限可能
天天綜合,探索多元生活的無限可能天天綜合征

網(wǎng)址: 深入探索LangChain工具調(diào)用的無限可能 http://www.u1s5d6.cn/newsview1823565.html

推薦資訊