Langchain 自定義工具和內置工具

使用介紹

自定義工具時的元素概念介紹

在Langchain中,工具(Tool)是與語言模型交互的基本單元。以下是自定義工具時的關鍵元素:

name
  • 定義:工具的名稱,用于唯一標識該工具。
  • 作用:當工具被集成到Agent中時,Agent會根據工具名稱來調用它。
description
  • 定義:工具的功能描述,通常是一個字符串。
  • 作用:幫助語言模型理解工具的作用。例如,在ReAct模式下,模型會根據工具的描述選擇合適的工具來完成任務。
args_schema
  • 定義:工具的輸入參數結構,通常使用Pydantic模型定義。
  • 如何使用
    • 定義一個繼承自pydantic.BaseModel的類,指定工具的輸入參數。
    • 將該類賦值給args_schema屬性。
  • 示例
    from pydantic import BaseModel, Fieldclass SearchInput(BaseModel):query: str = Field(description="The search query")tool = StructuredTool(name="search",description="Searches the web for information.",args_schema=SearchInput,func=search_function
    )
    
return_direct
  • 定義:是否直接返回工具的結果,而不經過后續處理。
  • 作用:如果設置為True,工具的結果將直接返回給用戶或Agent,而不會被進一步解析。

@tool/BaseTool/StructuredTool 的新建方式及參數介紹

@tool 裝飾器
  • 同步工具
    from langchain.tools import tool@tool
    def search(query: str) -> str:return f"Search results for '{query}'"
    
  • 異步工具
    from langchain.tools import tool@tool
    async def async_search(query: str) -> str:return f"Async search results for '{query}'"
    
BaseTool 類
  • 同步工具
    from langchain.tools.base import BaseToolclass MyTool(BaseTool):name = "my_tool"description = "A custom tool"def _run(self, input_str: str) -> str:return f"Processed input: {input_str}"async def _arun(self, input_str: str) -> str:return f"Async processed input: {input_str}"
    
  • 參數
    • name:工具名稱。
    • description:工具描述。
    • _run:同步執行函數。
    • _arun:異步執行函數(可選)。
StructuredTool 類
  • 同步工具
    from langchain.tools.base import StructuredTooldef search_function(query: str) -> str:return f"Search results for '{query}'"tool = StructuredTool(name="search",description="Searches the web for information.",args_schema=SearchInput,func=search_function
    )
    
  • 異步工具
    async def async_search_function(query: str) -> str:return f"Async search results for '{query}'"tool = StructuredTool(name="async_search",description="Performs an asynchronous web search.",args_schema=SearchInput,func=async_search_function
    )
    
使用場景
  • @tool:適合快速定義簡單的工具。
  • BaseTool:適合需要更多自定義邏輯的工具。
  • StructuredTool:適合需要嚴格輸入驗證的工具。

工具異常處理方案 (ToolException)

如何使用函數進行異常處理
  • 在工具函數中捕獲異常并返回友好的錯誤信息。
  • 示例:
    from langchain.tools.base import ToolExceptiondef error_handling_tool(input_str: str) -> str:try:# 模擬可能出錯的操作if not input_str:raise ValueError("Input cannot be empty")return f"Processed input: {input_str}"except Exception as e:raise ToolException(f"Error in tool: {e}")
    
集成到工具中
  • 使用StructuredTool時,可以在func中添加異常處理邏輯。
  • 示例:
    def safe_search_function(query: str) -> str:try:if not query:raise ValueError("Query cannot be empty")return f"Search results for '{query}'"except Exception as e:raise ToolException(f"Search failed: {e}")tool = StructuredTool(name="safe_search",description="Safe search with error handling.",args_schema=SearchInput,func=safe_search_function
    )
    

普通調用和Agent調用

普通調用
  • 直接調用工具函數。
  • 示例:
    result = search("Langchain")
    print(result)  # 輸出: Search results for 'Langchain'
    
Agent調用
  • 將工具集成到Agent中,通過Agent調用工具。
  • 示例:
    from langchain.agents import initialize_agent
    from langchain.llms import OpenAIllm = OpenAI()
    tools = [search]agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
    response = agent.run("What is Langchain?")
    print(response)
    

5. 最佳實踐

@tool 裝飾器
  • 參數
    • 確保description清晰準確。
    • 如果工具需要復雜輸入,考慮使用StructuredTool
  • 異常處理
    • 在工具函數中捕獲所有可能的異常,并拋出ToolException
BaseTool
  • 參數
    • 明確定義_run_arun方法。
    • 使用args_schema確保輸入格式正確。
  • 異常處理
    • _run_arun中捕獲異常并拋出ToolException
StructuredTool
  • 參數
    • 使用args_schema定義輸入參數。
    • 確保func函數邏輯清晰。
  • 異常處理
    • func中捕獲異常并拋出ToolException
綜合建議
  • 輸入驗證:始終驗證輸入數據,避免非法輸入導致工具失敗。
  • 日志記錄:在工具中添加日志記錄,便于調試和監控。
  • 文檔化:為每個工具提供詳細的description,幫助模型更好地理解和使用工具。

最佳實踐

文字轉SQL

1. 安裝必要的庫

首先,確保你已經安裝了所需的庫:

pip install langchain sqlalchemy openai
2. 創建 SQL 查詢工具

我們將創建一個自定義的 SQL 查詢工具,該工具可以執行 SQL 查詢并返回結果。這里我們使用 SQLite 數據庫作為示例。

2.1 定義工具類
from langchain.tools import BaseTool
from sqlalchemy import create_engine, textclass SQLQueryTool(BaseTool):name = "sql_query_tool"description = "A tool that executes SQL queries and returns the results."def __init__(self, db_url: str):self.engine = create_engine(db_url)def run(self, query: str) -> str:with self.engine.connect() as connection:result = connection.execute(text(query))rows = result.fetchall()columns = result.keys()return [dict(zip(columns, row)) for row in rows]
2.2 初始化工具
db_url = "sqlite:///example.db"  # 替換為你的數據庫 URL
sql_query_tool = SQLQueryTool(db_url)
3. 創建自然語言到 SQL 的轉換工具

我們將使用一個簡單的自然語言處理庫(如 sqlglot)來將自然語言文本轉換為 SQL 查詢。

3.1 安裝 sqlglot
pip install sqlglot
3.2 定義轉換工具類
import sqlglot
from langchain.tools import BaseToolclass NLtoSQLTool(BaseTool):name = "nl_to_sql_tool"description = "A tool that converts natural language to SQL queries."def run(self, nl_query: str) -> str:try:sql_query = sqlglot.transpile(nl_query, read="english", write="sql")[0]return sql_queryexcept Exception as e:return f"Error converting natural language to SQL: {e}"
3.3 初始化轉換工具
nl_to_sql_tool = NLtoSQLTool()
4. 創建 LangChain 環境

我們將創建一個 LangChain 環境,并將兩個工具添加到其中。

4.1 創建 Agent

我們將使用 OpenAILLMReAct 策略來創建一個 Agent。

from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool# 初始化 OpenAI LLM
llm = OpenAI(api_key="your_openai_api_key")  # 替換為你的 OpenAI API 密鑰# 創建工具列表
tools = [Tool(name=sql_query_tool.name,func=sql_query_tool.run,description=sql_query_tool.description),Tool(name=nl_to_sql_tool.name,func=nl_to_sql_tool.run,description=nl_to_sql_tool.description)
]# 初始化 Agent
agent = initialize_agent(tools, llm, agent="react-docstore", verbose=True)
5. 使用 Agent 執行自然語言查詢

現在我們可以使用這個 Agent 來執行自然語言查詢。

nl_query = "查詢年齡大于25歲的用戶"
response = agent.run(nl_query)
print(response)
6. 完整代碼示例

以下是完整的代碼示例,包含了上述所有步驟。

from langchain.tools import BaseTool
from sqlalchemy import create_engine, text
import sqlglot
from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool# 定義 SQL 查詢工具類
class SQLQueryTool(BaseTool):name = "sql_query_tool"description = "A tool that executes SQL queries and returns the results."def __init__(self, db_url: str):self.engine = create_engine(db_url)def run(self, query: str) -> str:with self.engine.connect() as connection:result = connection.execute(text(query))rows = result.fetchall()columns = result.keys()return [dict(zip(columns, row)) for row in rows]# 初始化 SQL 查詢工具
db_url = "sqlite:///example.db"  # 替換為你的數據庫 URL
sql_query_tool = SQLQueryTool(db_url)# 定義自然語言到 SQL 的轉換工具類
class NLtoSQLTool(BaseTool):name = "nl_to_sql_tool"description = "A tool that converts natural language to SQL queries."def run(self, nl_query: str) -> str:try:sql_query = sqlglot.transpile(nl_query, read="english", write="sql")[0]return sql_queryexcept Exception as e:return f"Error converting natural language to SQL: {e}"# 初始化自然語言到 SQL 的轉換工具
nl_to_sql_tool = NLtoSQLTool()# 初始化 OpenAI LLM
llm = OpenAI(api_key="your_openai_api_key")  # 替換為你的 OpenAI API 密鑰# 創建工具列表
tools = [Tool(name=sql_query_tool.name,func=sql_query_tool.run,description=sql_query_tool.description),Tool(name=nl_to_sql_tool.name,func=nl_to_sql_tool.run,description=nl_to_sql_tool.description)
]# 初始化 Agent
agent = initialize_agent(tools, llm, agent="react-docstore", verbose=True)# 使用 Agent 執行自然語言查詢
nl_query = "查詢年齡大于25歲的用戶"
response = agent.run(nl_query)
print(response)

調用API

1. 自定義插件的基本概念

LangChain 的插件機制允許你通過 Python 類來封裝特定的功能。一個插件通常包含以下幾個部分:

  • 初始化 (__init__):用于設置插件所需的配置或依賴。
  • 核心功能方法:實現插件的核心邏輯。
  • 與 LangChain 的集成:通過 LangChain 提供的接口(如 ToolRunnable)將插件注冊到系統中。
2. 創建一個調用外部 API 的插件

假設我們有一個場景:需要調用一個天氣 API 來獲取某個城市的實時天氣信息。我們將創建一個自定義插件來實現這一功能。

步驟 1: 定義插件類

首先,我們需要定義一個 Python 類來封裝調用天氣 API 的邏輯。

import requestsclass WeatherAPIPlugin:def __init__(self, api_key):"""初始化插件,設置 API 密鑰。:param api_key: 天氣 API 的密鑰"""self.api_key = api_keyself.base_url = "https://api.weatherapi.com/v1/current.json"def get_weather(self, city):"""獲取指定城市的實時天氣信息。:param city: 城市名稱:return: 天氣信息的字符串描述"""params = {"key": self.api_key,"q": city}try:response = requests.get(self.base_url, params=params)response.raise_for_status()  # 檢查請求是否成功data = response.json()weather_info = (f"當前 {city} 的天氣情況:\n"f"溫度: {data['current']['temp_c']}°C\n"f"濕度: {data['current']['humidity']}%\n"f"天氣狀況: {data['current']['condition']['text']}")return weather_infoexcept requests.exceptions.RequestException as e:return f"無法獲取天氣信息: {str(e)}"
步驟 2: 將插件封裝為 LangChain 的 Tool

LangChain 提供了 Tool 類,用于將自定義功能集成到鏈式邏輯中。我們需要將 WeatherAPIPlugin 的功能封裝為一個 Tool

from langchain.tools import Tool# 假設你的 API 密鑰如下
API_KEY = "your_weather_api_key_here"# 實例化插件
weather_plugin = WeatherAPIPlugin(api_key=API_KEY)# 將插件封裝為 LangChain 的 Tool
weather_tool = Tool(name="Weather API Tool",func=weather_plugin.get_weather,description="獲取指定城市的實時天氣信息。輸入應為城市名稱,例如 '北京'。"
)
步驟 3: 使用插件

現在我們可以將這個插件集成到 LangChain 的工作流中。以下是一個簡單的示例,展示如何調用插件并獲取天氣信息。

from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI# 初始化 LLM(這里使用 OpenAI 的 GPT 模型)
llm = OpenAI(temperature=0, openai_api_key="your_openai_api_key_here")# 初始化代理(Agent),并將插件添加到工具列表中
agent = initialize_agent(tools=[weather_tool],llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True
)# 調用插件
response = agent.run("請告訴我北京的天氣情況。")
print(response)
3. 示例運行結果

假設天氣 API 返回的數據如下:

{"current": {"temp_c": 15,"humidity": 60,"condition": {"text": "晴朗"}}
}

運行上述代碼后,輸出可能如下:

當前 北京 的天氣情況:
溫度: 15°C
濕度: 60%
天氣狀況: 晴朗

智能家居插件

1. 背景知識:LangChain 的 Agent 和 Tool

LangChain 提供了一個靈活的架構,允許我們定義 Tool(工具)和 Agent(代理)。Tool 是封裝特定功能的模塊,而 Agent 則負責根據用戶輸入選擇合適的 Tool 并執行任務。

對于家庭硬件的控制,我們可以將硬件接口封裝為一個 Tool,然后通過 LangChain 的 Agent 來調用它。

2. 家庭硬件的典型場景

假設你有一個家庭自動化系統,其中包含以下硬件:

  • 燈光控制器:可以打開或關閉燈光。
  • 溫度傳感器:可以讀取當前室內溫度。
  • 窗簾控制器:可以打開或關閉窗簾。

我們將這些硬件的功能封裝為 LangChain 的 Tool,并通過自然語言交互來控制它們。

3. 創建自定義插件
3.1 硬件接口模擬

為了演示方便,我們假設有一個 Python API 可以與家庭硬件通信。以下是一個簡單的模擬接口:

class HomeHardwareAPI:def __init__(self):self.light_status = "off"self.temperature = 22.5  # 模擬當前溫度self.curtain_status = "closed"def toggle_light(self, action):if action.lower() == "on":self.light_status = "on"return "Light turned on."elif action.lower() == "off":self.light_status = "off"return "Light turned off."else:return "Invalid action."def get_temperature(self):return f"Current temperature is {self.temperature}°C."def control_curtains(self, action):if action.lower() == "open":self.curtain_status = "open"return "Curtains opened."elif action.lower() == "close":self.curtain_status = "closed"return "Curtains closed."else:return "Invalid action."
3.2 封裝為 LangChain 工具

接下來,我們將上述硬件接口封裝為 LangChain 的 Tool

from langchain.agents import Tool
from langchain.chains.conversation.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent# 假設我們已經有一個硬件 API 實例
home_hardware_api = HomeHardwareAPI()# 定義工具函數
def toggle_light(action):return home_hardware_api.toggle_light(action)def get_temperature():return home_hardware_api.get_temperature()def control_curtains(action):return home_hardware_api.control_curtains(action)# 將工具封裝為 LangChain 的 Tool
tools = [Tool(name="Toggle Light",func=lambda action: toggle_light(action),description="Use this tool to turn the light on or off. Input should be 'on' or 'off'."),Tool(name="Get Temperature",func=get_temperature,description="Use this tool to get the current room temperature."),Tool(name="Control Curtains",func=lambda action: control_curtains(action),description="Use this tool to open or close the curtains. Input should be 'open' or 'close'.")
]
4. 初始化 Agent

LangChain 的 Agent 負責解析用戶的自然語言輸入并調用相應的 Tool。以下是初始化 Agent 的代碼:

# 初始化對話記憶
memory = ConversationBufferMemory(memory_key="chat_history")# 使用 OpenAI 的 GPT-3.5-turbo 模型
llm = ChatOpenAI(temperature=0)# 初始化 Agent
agent_chain = initialize_agent(tools, llm, agent="chat-conversational-react-description", verbose=True, memory=memory
)
5. 實際場景調用
5.1 用戶輸入示例

假設用戶通過自然語言與系統交互,以下是一些可能的輸入及其響應:

# 示例 1: 打開燈光
response = agent_chain.run("Please turn the light on.")
print(response)  # 輸出: Light turned on.# 示例 2: 獲取當前溫度
response = agent_chain.run("What is the current temperature?")
print(response)  # 輸出: Current temperature is 22.5°C.# 示例 3: 打開窗簾
response = agent_chain.run("Can you open the curtains?")
print(response)  # 輸出: Curtains opened.# 示例 4: 關閉燈光
response = agent_chain.run("Turn the light off.")
print(response)  # 輸出: Light turned off.
6. 運行結果分析
  • 當用戶輸入“Please turn the light on.”時,Agent 會識別出這是對燈光的操作請求,并調用 toggle_light 工具。
  • 當用戶輸入“What is the current temperature?”時,Agent 會調用 get_temperature 工具返回當前溫度。
  • 類似地,其他命令也會被正確解析并執行。
7. 擴展功能
7.1 添加更多硬件支持

如果需要支持更多的硬件(例如空調、音響等),只需擴展 HomeHardwareAPI 類并添加相應的 Tool

7.2 集成真實硬件

在實際應用中,你可以通過 MQTT、HTTP API 或其他協議與真實硬件通信。例如:

  • 使用 MQTT 訂閱/發布消息來控制燈光和窗簾。
  • 通過 HTTP 請求獲取傳感器數據。
7.3 自然語言優化

為了讓 Agent 更好地理解復雜的用戶輸入,可以訓練一個定制化的語言模型,或者使用更高級的提示工程技巧。

8. 總結

通過 LangChain 的 ToolAgent,我們可以輕松實現家庭硬件的智能化控制。本文展示了如何將硬件接口封裝為 LangChain 的工具,并通過自然語言交互調用這些工具。希望這個示例能幫助你更好地理解和應用 LangChain!

內置Tools

Langchain 內置工具介紹

Langchain 提供了豐富的內置工具,這些工具分為兩類:

  1. langchain.tools:核心庫中的工具。
  2. langchain_community.tools:社區擴展的工具。

1. AI 工具 (生成文本)

簡介
  • 使用 LLM 生成文本。
  • 常用于回答問題、生成內容等。
代碼示例
from langchain.tools import AI
from langchain.llms import OpenAIllm = OpenAI(temperature=0)
ai_tool = AI(name="ai", llm=llm, description="Generates text using an LLM.")response = ai_tool.run("Write a short story about a cat.")
print(response)

2. Wikipedia 工具 (搜索維基百科)

簡介
  • 搜索維基百科以獲取信息。
  • 適合需要權威知識的任務。
代碼示例
from langchain.tools import WikipediaQueryRun
from langchain.utilities import WikipediaAPIWrapperwiki = WikipediaAPIWrapper()
wikipedia_tool = WikipediaQueryRun(api_wrapper=wiki, name="wikipedia")response = wikipedia_tool.run("Python programming language")
print(response)

3. Arxiv 工具 (搜索學術論文)

簡介
  • 搜索 Arxiv 上的學術論文。
  • 適合科研場景。
代碼示例
from langchain.tools import ArxivQueryRun
from langchain.utilities import ArxivAPIWrapperarxiv = ArxivAPIWrapper()
arxiv_tool = ArxivQueryRun(api_wrapper=arxiv, name="arxiv")response = arxiv_tool.run("machine learning")
print(response)

4. SerpAPI 工具 (搜索引擎)

簡介
  • 使用 SerpAPI 搜索網絡信息。
  • 需要 API 密鑰。
代碼示例
from langchain.tools import SerpAPIWrapperserp_api_key = "your_serp_api_key"
search = SerpAPIWrapper(serpapi_api_key=serp_api_key)response = search.run("LangChain tutorial")
print(response)

5. GoogleSearch 工具 (谷歌搜索)

簡介
  • 使用 Google Custom Search API 搜索信息。
  • 需要 API 密鑰和搜索引擎 ID。
代碼示例
from langchain.tools import GoogleSearchResultsgoogle_api_key = "your_google_api_key"
search_engine_id = "your_search_engine_id"search = GoogleSearchResults(api_key=google_api_key, k=3, cx=search_engine_id)
response = search.run("LangChain examples")
print(response)

6. DuckDuckGoSearch 工具 (DuckDuckGo 搜索)

簡介
  • 使用 DuckDuckGo 搜索信息。
  • 不需要 API 密鑰。
代碼示例
from langchain.tools import DuckDuckGoSearchRunduckduckgo_tool = DuckDuckGoSearchRun()response = duckduckgo_tool.run("LangChain documentation")
print(response)

7. SQLDatabase 工具 (數據庫查詢)

簡介
  • 查詢 SQL 數據庫。
  • 需要連接到數據庫。
代碼示例
from langchain.tools import SQLDatabaseTool
from langchain.utilities import SQLDatabasedb = SQLDatabase.from_uri("sqlite:///example.db")
sql_tool = SQLDatabaseTool(db=db, name="sql_database")response = sql_tool.run("SELECT * FROM users LIMIT 5;")
print(response)

8. YouTubeSearch 巐具 (YouTube 搜索)

簡介
  • 搜索 YouTube 視頻。
  • 需要 API 密鑰。
代碼示例
from langchain.tools import YouTubeSearchToolyoutube_tool = YouTubeSearchTool()response = youtube_tool.run("LangChain tutorial")
print(response)

9. FileManagement 工具 (文件管理)

簡介
  • 管理本地或遠程文件。
  • 支持讀取、寫入和刪除文件。
代碼示例
from langchain.tools.file_management import ReadFileTool, WriteFileTool# 寫入文件
write_tool = WriteFileTool()
write_tool.run("example.txt", "Hello, LangChain!")# 讀取文件
read_tool = ReadFileTool()
content = read_tool.run("example.txt")
print(content)

10. HumanInput 工具 (人工輸入)

簡介
  • 請求人工輸入。
  • 適用于需要用戶干預的場景。
代碼示例
from langchain.tools import HumanInputRunhuman_tool = HumanInputRun()response = human_tool.run("What is your opinion on this?")
print(response)

總結

工具名稱主要用途
AI生成文本
Wikipedia搜索維基百科
Arxiv搜索學術論文
SerpAPI使用 SerpAPI 搜索網絡信息
GoogleSearch使用 Google 搜索信息
DuckDuckGoSearch使用 DuckDuckGo 搜索信息
SQLDatabase查詢 SQL 數據庫
YouTubeSearch搜索 YouTube 視頻
FileManagement文件管理
HumanInput請求人工輸入

內置工具包

內置工具包的使用 (langchain_community.agent_toolkits)

langchain_community.agent_toolkits 提供了一系列預定義的工具包(toolkits),這些工具包將多個相關工具組合在一起,方便快速構建特定領域的 Agent

1. Zapier Toolkit (集成 Zapier 自動化工具)

簡介
  • 使用 Zapier API 調用各種自動化任務。
  • 需要 Zapier 的 API 密鑰。
代碼示例
from langchain_community.agents.agent_toolkits import ZapierToolkit
from langchain_community.utilities.zapier import ZapierNLAWrapper# 初始化 Zapier NLA Wrapper
zapier = ZapierNLAWrapper()# 創建 Zapier Toolkit
toolkit = ZapierToolkit.from_zapier_nla_wrapper(zapier)# 查看工具包中的工具
print(toolkit.get_tools())

2. Conversational Agent Toolkit (對話型 Agent 工具包)

簡介
  • 專為對話型 Agent 設計。
  • 包含問答、搜索、生成等工具。
代碼示例
from langchain_community.agents.agent_toolkits import create_conversational_react_agent
from langchain_community.tools import AI, WikipediaQueryRun
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
from langchain.llms import OpenAI# 初始化 LLM 和工具
llm = OpenAI(temperature=0)
wiki = WikipediaAPIWrapper()
tools = [AI(name="ai", llm=llm, description="Generates text using an LLM."),WikipediaQueryRun(api_wrapper=wiki, name="wikipedia")]# 創建對話型 Agent
agent = create_conversational_react_agent(llm, tools)# 運行 Agent
response = agent.run("What is the capital of France?")
print(response)

3. SQL Database Toolkit (SQL 數據庫工具包)

簡介
  • 用于查詢 SQL 數據庫。
  • 支持 SQLite、PostgreSQL 等數據庫。
代碼示例
from langchain_community.agents.agent_toolkits import SQLDatabaseToolkit
from langchain_community.utilities.sql_database import SQLDatabase
from langchain_community.agents.agent_toolkits import create_sql_agent
from langchain.llms import OpenAI# 連接數據庫
db = SQLDatabase.from_uri("sqlite:///example.db")# 創建 SQL Toolkit
toolkit = SQLDatabaseToolkit(db=db)# 創建 SQL Agent
agent = create_sql_agent(llm=OpenAI(temperature=0),toolkit=toolkit,verbose=True
)# 查詢數據庫
response = agent.run("How many users are in the database?")
print(response)

4. GitHub Toolkit (GitHub 工具包)

簡介
  • 用于與 GitHub 交互。
  • 支持查詢倉庫、提交、Issues 等。
代碼示例
from langchain_community.agents.agent_toolkits import GitHubToolkit
from langchain_community.utilities.github import GitHubAPIWrapper# 初始化 GitHub API Wrapper
github = GitHubAPIWrapper()# 創建 GitHub Toolkit
toolkit = GitHubToolkit(github_api_wrapper=github)# 查看工具包中的工具
print(toolkit.get_tools())

5. VectorStore Toolkit (向量存儲工具包)

簡介
  • 用于與向量數據庫交互。
  • 常用于語義搜索和知識庫管理。
代碼示例
from langchain_community.agents.agent_toolkits import VectorStoreToolkit
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_community.agents.agent_toolkits import create_vectorstore_agent
from langchain.llms import OpenAI# 初始化向量存儲
vectorstore = Chroma(embedding_function=OpenAIEmbeddings())# 創建 VectorStore Toolkit
toolkit = VectorStoreToolkit(vectorstore=vectorstore)# 創建 VectorStore Agent
agent = create_vectorstore_agent(llm=OpenAI(temperature=0),toolkit=toolkit,verbose=True
)# 搜索向量數據庫
response = agent.run("What is the most relevant document to 'LangChain'?")
print(response)

6. YouTube Toolkit (YouTube 工具包)

簡介
  • 用于與 YouTube 交互。
  • 支持搜索視頻、獲取視頻信息等。
代碼示例
from langchain_community.agents.agent_toolkits import YouTubeToolkit
from langchain_community.utilities.youtube import YouTubeAPIWrapper# 初始化 YouTube API Wrapper
youtube = YouTubeAPIWrapper()# 創建 YouTube Toolkit
toolkit = YouTubeToolkit(youtube=youtube)# 查看工具包中的工具
print(toolkit.get_tools())

7. SerpAPI Toolkit (搜索引擎工具包)

簡介
  • 用于搜索網絡信息。
  • 支持 Google、Bing 等搜索引擎。
代碼示例
from langchain_community.agents.agent_toolkits import SerpAPIToolkit
from langchain_community.utilities.serpapi import SerpAPIWrapper# 初始化 SerpAPI Wrapper
serpapi = SerpAPIWrapper(serpapi_api_key="your_serp_api_key")# 創建 SerpAPI Toolkit
toolkit = SerpAPIToolkit(serpapi_wrapper=serpapi)# 查看工具包中的工具
print(toolkit.get_tools())

8. File Management Toolkit (文件管理工具包)

簡介
  • 用于管理本地或遠程文件。
  • 支持讀取、寫入和刪除文件。
代碼示例
from langchain_community.agents.agent_toolkits import FileManagementToolkit# 創建 File Management Toolkit
toolkit = FileManagementToolkit(root_dir="./files")# 查看工具包中的工具
print(toolkit.get_tools())

總結

工具包名稱主要用途
Zapier Toolkit集成 Zapier 自動化任務
Conversational Agent Toolkit對話型 Agent 工具包
SQL Database Toolkit查詢 SQL 數據庫
GitHub Toolkit與 GitHub 交互
VectorStore Toolkit向量數據庫交互
YouTube Toolkit與 YouTube 交互
SerpAPI Toolkit搜索引擎工具包
File Management Toolkit文件管理

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74441.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74441.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74441.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gitee上庫常用git命令

Gitee上庫常用git命令 1、Fork 項目2、個人倉庫修改3、追加提交4、創建PR5、多筆commit合一 1、Fork 項目 2、個人倉庫修改 git add . // -s 表示自動添加郵箱簽名信息,-m表示其后跟隨commit描述 git commit -sm “add transition freeze” git push origin [目標…

Java 大視界 -- Java 大數據在智慧農業精準灌溉與施肥決策中的應用(144)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

Redux,React-redux。基礎

狀態管理庫,集中式存儲狀態,管理狀態 ? redux //簡單實現 redux源碼 export function createStore(reducer) {// reducer由用戶編寫, 必須是一個函數,dispatch的時候,reducer要執行if (typeof reducer ! function) t…

5.2 位運算專題:LeetCode 268. 丟失的數字

1. 題目鏈接 LeetCode 268. 丟失的數字 2. 題目描述 給定一個包含 [0, n] 范圍內 n 個不同整數的數組 nums(實際長度為 n),找出數組中缺失的那個數字。 示例: 輸入:nums [3,0,1] → 輸出:2(…

基于第三方庫的人臉識別系統的設計與實現

標題:基于第三方庫的人臉識別系統的設計與實現 內容:1.摘要 本文針對傳統人臉識別系統開發復雜、效率低的問題,旨在設計并實現基于第三方庫的人臉識別系統。通過選用合適的第三方人臉識別庫,利用其成熟的算法和接口,簡化系統開發流程。對收集…

【Android】VehiclePropertyAccess引起CarService崩潰

VehiclePropertyAccess引起CarService崩潰 VehiclePropertyAccess VehiclePropertyAccess屬性,用于定義車輛屬性的訪問權限。權限包括 讀:READ,只可以讀取,不能寫入。 VehiclePropertyAccess:READ寫:WRITE&#xf…

【Go】Go語言并發模型:MPG

Go 語言并發模型:MPG Go 的并發模型主要由三個部分構成: M (Machine) 系統線程,用于實際執行任務。 P (Processor) 邏輯處理器,負責管理和調度 goroutine。每個 P 擁有一個本地隊列和關聯的全局 G 隊列。 G (Goroutine) Go 語言…

SpringCloud配置中心:Config Server與配置刷新機制

文章目錄 引言一、Config Server基礎架構1.1 Server端配置1.2 配置文件命名規則 二、Config Client配置2.1 Client端配置2.2 配置注入與使用 三、配置刷新機制3.1 手動刷新配置3.2 使用Spring Cloud Bus實現自動刷新3.3 配置倉庫Webhook自動觸發刷新 四、高級配置管理策略4.1 配…

PyTorch生成式人工智能實戰:從零打造創意引擎

PyTorch生成式人工智能實戰:從零打造創意引擎 0. 前言1. 生成式人工智能1.1 生成式人工智能簡介1.2 生成式人工智能技術 2. Python 與 PyTorch2.1 Python 編程語言2.2 PyTorch 深度學習庫 3. 生成對抗網絡3.1 生成對抗網絡概述3.2 生成對抗網絡應用 4. Transformer4…

allure結合pytest生成測試報告

結合 pytest 和 Allure 可以生成詳細而美觀的測試報告,幫助測試人員和開發者更好地理解測試結果。這包括測試的執行情況、步驟、附件(如截圖)、分類以及優先級標記。下面是如何在 pytest 中使用 Allure 生成測試報告的步驟: 安裝…

STM32標準庫開發中斷流程

在STM32標準外設庫(SPL)開發中,外設中斷的處理流程通常如下: 一、標準庫外設中斷處理流程 (1)使能外設時鐘 在使用任何外設之前,都必須打開外設的時鐘。例如,使用USART1的中斷&…

【計算機網絡】-計算機網絡期末復習題復習資料

一、計算機網絡體系結構(800字) 1. OSI參考模型 七層結構:物理層→數據鏈路層→網絡層→傳輸層→會話層→表示層→應用層 各層核心功能: 物理層:比特流傳輸(如RJ45、光纖接口) 數據鏈路層&…

31天Python入門——第9天:再學函數

你好,我是安然無虞。 文章目錄 再學函數1. 變量在函數中的作用域2. 函數的參數傳遞.補充學習: 不定長參數*args和**kwargs 3. 值傳遞和引用傳遞補充學習: 把函數作為參數傳遞 4. 匿名函數5. python中內置的常用函數zip()map()filter()all()any() 6. 函數練習 再學函…

EasyUI數據表格中嵌入下拉框

效果 代碼 $(function () {// 標記當前正在編輯的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …

【C語言】多進程/多線程

【C語言】多進程/多線程 參考鏈接多進程/多線程服務器1. 多進程服務器2. 多線程服務器 結語參考鏈接 參考鏈接 c 中文網 菜鳥 c 多進程/多線程服務器 多進程和多線程是常用的并發編程技術。它們都允許程序同時執行多個任務,提高了系統的資源利用率和程序的運行效率…

mysql 磐維(opengauss)tidb誤刪數據之高級恢復

Mysql參考: Mysql 8.0 XtraBackupMysqlbinlog 完全恢復 - 墨天輪 Mysql 8.0 XtraBackupMysqlbinlog 完全恢復[TOC]# 一、安裝mysql 8.0.19## 1.1https://www.modb.pro/db/509223MySQL 的全量備份、增量備份與 Binlog 時間點恢復_mysqlbinlog自動備份嗎-CSDN博客文章…

3. 軸指令(omron 機器自動化控制器)——>MC_SetPosition

機器自動化控制器——第三章 軸指令 11 MC_SetPosition變量?輸入變量?輸出變量?輸入輸出變量 功能說明?時序圖?重啟動運動指令?多重啟運動指令?異常 MC_SetPosition 將軸的指令當前位置和反饋當前位置變更為任意值。 指令名稱FB/FUN圖形表現ST表現MC_SetPosition當前位…

從 @SpringBootApplication 出發,深度剖析 Spring Boot 自動裝配原理

在 Spring Boot 的開發旅程中,SpringBootApplication 注解堪稱開啟便捷開發之門的鑰匙。它不僅是一個簡單的注解,更是理解 Spring Boot 自動裝配原理的重要入口。接下來,我們將以SpringBootApplication 為切入點,深入探究 Spring …

MySQL面試專題

1.什么是BufferPool? Buffer Pool基本概念 Buffer Pool:緩沖池,簡稱BP。其作用是用來緩存表數據與索引數據,減少磁盤IO操作,提升效率。 Buffer Pool由緩存數據頁(Page) 和 對緩存數據頁進行描述的控制塊 組成, 控制…

調用百度api實現語音識別(python)

該代碼實現了一個企業級的語音識別解決方案,通過調用百度語音識別API,實現實時錄音識別和對已有音頻語音識別功能。 百度智能云:請自行訪問百度智能云,開通免費的語音識別功能,獲取API_KEY和SECRET_KEY。操作按照百度流程即可,可免費申請。 首先,配置下百度API和描述下錯…