当前位置:   article > 正文

第27篇:深入剖析:LangChain的自定义Agent实践_langchain agents自定义获取图片工具

langchain agents自定义获取图片工具

大家好,今天我们将探讨如何使用LangChain库来自定义一个Agent。这个Agent将包括搜索、数学计算功能,并能获取当前日期。我们将使用Plan and Execute的Agent框架,并讲解自定义Tool的用法,最终实现一个根据提示语进行自动检索资料、数学计算和获取当前日期的Agent应用。

安装依赖包

在开始之前,我们需要安装LangChain库和其他相关的依赖包:

pip install langchain transformers torch requests datetime
  • 1

项目的流程

我们将按照以下步骤实现这个项目:

  1. 定义自定义Tool
  2. 创建Plan and Execute Agent
  3. 集成搜索功能
  4. 集成数学计算功能
  5. 集成获取当前日期功能
  6. 测试Agent

流程图

首先,我们使用流程图展示整个系统集成流程:

定义自定义Tool
创建Plan and Execute Agent
集成搜索功能
集成数学计算功能
集成获取当前日期功能
测试Agent

实现步骤

1. 定义自定义Tool

我们首先定义三个自定义Tool,分别用于搜索、数学计算和获取当前日期

搜索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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
数学计算Tool
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
获取当前日期Tool
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2. 创建Plan and Execute Agent

我们将这些工具集成到一个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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

3. 集成搜索功能

搜索功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。

# 搜索功能的Agent示例
search_prompt = "搜索LangChain库的介绍"
search_output = agent.execute(search_prompt)
print(f"搜索结果:{search_output}")
  • 1
  • 2
  • 3
  • 4

4. 集成数学计算功能

数学计算功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。

# 数学计算功能的Agent示例
math_prompt = "计算2 + 3 * 4"
math_output = agent.execute(math_prompt)
print(f"数学计算结果:{math_output}")
  • 1
  • 2
  • 3
  • 4

5. 集成获取当前日期功能

获取当前日期功能已经在自定义Tool中实现,下面展示如何在Agent中使用这个功能。

# 获取当前日期功能的Agent示例
date_prompt = "获取当前日期"
date_output = agent.execute(date_prompt)
print(f"当前日期:{date_output}")
  • 1
  • 2
  • 3
  • 4

6. 测试Agent

我们将所有功能集成到一个Agent中,并进行测试。

# 组合功能的Agent示例
combined_prompt = "搜索LangChain库的介绍,计算2 + 3,并获取当前日期。"
combined_output = agent.execute(combined_prompt)
print(f"综合结果:{combined_output}")
  • 1
  • 2
  • 3
  • 4

详细代码实现

为了方便展示,我们将所有代码集成到一个完整的系统中。

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}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

总结

通过这篇博客,我们详细介绍了如何使用LangChain库创建自定义Agent,集成搜索、数学计算和获取当前日期的功能。以下是我们所讲解的关键步骤:

  1. 定义自定义Tool:创建用于搜索、数学计算和获取当前日期的工具。
  2. 创建Plan and Execute Agent:将工具集成到Agent中,并实现任务的自动执行。
  3. 集成功能:分别实现搜索、数学计算和获取当前日期功能的Agent应用。
  4. 测试Agent:通过不同的提示语测试Agent的综合能力。

无论你是初学者还是有经验的开发者,掌握这些自定义Agent的技巧都能帮助你更好地构建和优化NLP项目。

如果你喜欢这篇文章,别忘了收藏文章、关注作者、订阅专栏,感激不尽。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/929294
推荐阅读
相关标签
  

闽ICP备14008679号