赞
踩
大家好,今天我们将探讨如何使用LangChain库来自定义一个Agent。这个Agent将包括搜索、数学计算功能,并能获取当前日期。我们将使用Plan and Execute的Agent框架,并讲解自定义Tool的用法,最终实现一个根据提示语进行自动检索资料、数学计算和获取当前日期的Agent应用。
在开始之前,我们需要安装LangChain库和其他相关的依赖包:
pip install langchain transformers torch requests datetime
我们将按照以下步骤实现这个项目:
首先,我们使用流程图展示整个系统集成流程:
我们首先定义三个自定义Tool,分别用于搜索、数学计算和获取当前日期。
import requests class SearchTool: def __init__(self): self.search_url = "https://api.example.com/search" # 示例API,请使用真实的搜索API def search(self, query): """ 根据查询进行搜索 :param query: 查询字符串 :return: 搜索结果 """ response = requests.get(self.search_url, params={"q": query}) if response.status_code == 200: return response.json()["results"] else: return f"搜索失败,状态码:{response.status_code}" # 使用示例 search_tool = SearchTool() results = search_tool.search("LangChain库") print(results)
class MathTool: def evaluate(self, expression): """ 计算数学表达式 :param expression: 数学表达式字符串 :return: 计算结果 """ try: result = eval(expression) return result except Exception as e: return f"计算错误:{str(e)}" # 使用示例 math_tool = MathTool() result = math_tool.evaluate("2 + 3 * 4") print(result)
from datetime import datetime
class DateTool:
def get_current_date(self):
"""
获取当前日期
:return: 当前日期字符串
"""
return datetime.now().strftime("%Y-%m-%d")
# 使用示例
date_tool = DateTool()
current_date = date_tool.get_current_date()
print(current_date)
我们将这些工具集成到一个Plan and Execute Agent中。这个Agent将根据输入的提示语自动选择合适的工具执行任务。
from langchain.agents import AgentExecutor class CustomAgent: def __init__(self, tools): self.tools = tools self.executor = AgentExecutor() def execute(self, prompt): """ 执行Agent任务 :param prompt: 输入提示语 :return: 执行结果 """ plan = self.executor.plan(prompt, self.tools) result = self.executor.execute(plan) return result # 创建自定义工具列表 tools = { "search": search_tool.search, "math": math_tool.evaluate, "date": date_tool.get_current_date } # 使用示例 agent = CustomAgent(tools) prompt = "搜索LangChain库的介绍,计算2 + 3,并获取当前日期。" output = agent.execute(prompt) print(output)
搜索功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。
# 搜索功能的Agent示例
search_prompt = "搜索LangChain库的介绍"
search_output = agent.execute(search_prompt)
print(f"搜索结果:{search_output}")
数学计算功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。
# 数学计算功能的Agent示例
math_prompt = "计算2 + 3 * 4"
math_output = agent.execute(math_prompt)
print(f"数学计算结果:{math_output}")
获取当前日期功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。
# 获取当前日期功能的Agent示例
date_prompt = "获取当前日期"
date_output = agent.execute(date_prompt)
print(f"当前日期:{date_output}")
我们将所有功能集成到一个Agent中,并进行测试。
# 组合功能的Agent示例
combined_prompt = "搜索LangChain库的介绍,计算2 + 3,并获取当前日期。"
combined_output = agent.execute(combined_prompt)
print(f"综合结果:{combined_output}")
为了方便展示,我们将所有代码集成到一个完整的系统中。
import requests from datetime import datetime from langchain.agents import AgentExecutor class SearchTool: def __init__(self): self.search_url = "https://api.example.com/search" # 示例API,请使用真实的搜索API def search(self, query): response = requests.get(self.search_url, params={"q": query}) if response.status_code == 200: return response.json()["results"] else: return f"搜索失败,状态码:{response.status_code}" class MathTool: def evaluate(self, expression): try: result = eval(expression) return result except Exception as e: return f"计算错误:{str(e)}" class DateTool: def get_current_date(self): return datetime.now().strftime("%Y-%m-%d") class CustomAgent: def __init__(self, tools): self.tools = tools self.executor = AgentExecutor() def execute(self, prompt): plan = self.executor.plan(prompt, self.tools) result = self.executor.execute(plan) return result # 创建自定义工具列表 search_tool = SearchTool() math_tool = MathTool() date_tool = DateTool() tools = { "search": search_tool.search, "math": math_tool.evaluate, "date": date_tool.get_current_date } # 使用示例 agent = CustomAgent(tools) # 测试搜索功能 search_prompt = "搜索LangChain库的介绍" search_output = agent.execute(search_prompt) print(f"搜索结果:{search_output}") # 测试数学计算功能 math_prompt = "计算2 + 3 * 4" math_output = agent.execute(math_prompt) print(f"数学计算结果:{math_output}") # 测试获取当前日期功能 date_prompt = "获取当前日期" date_output = agent.execute(date_prompt) print(f"当前日期:{date_output}") # 测试组合功能 combined_prompt = "搜索LangChain库的介绍,计算2 + 3,并获取当前日期。" combined_output = agent.execute(combined_prompt) print(f"综合结果:{combined_output}")
通过这篇博客,我们详细介绍了如何使用LangChain库创建自定义Agent,集成搜索、数学计算和获取当前日期的功能。以下是我们所讲解的关键步骤:
无论你是初学者还是有经验的开发者,掌握这些自定义Agent的技巧都能帮助你更好地构建和优化NLP项目。
如果你喜欢这篇文章,别忘了收藏文章、关注作者、订阅专栏,感激不尽。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。