【大语言模型】LangChain 核心模块介绍(Agents)

【大语言模型】LangChain 核心模块介绍(Agents)

一、简介

我们都知道四肢的绝大部分动作都是由大脑决定的,大脑通过中枢神经下发自己的操作指令,四肢就可以按照我们的需求进行动作。

而大语言模型其实就相当于一个大脑的角色,其本身是无法直接进行任何操作的。那么就需要一个"中枢神经",帮助它下发指令,传递反馈信息,这个中枢神经就是 Agent。

在官方文档中,有这样的一句说明,讲出了 Agents 的核心。

The core idea of agents is to use a language model to choose a sequence of actions to take.

代理的核心思想是使用语言模型来选择要采取的一系列行动。

如果在前面学习的过程中,通过 LangChain 让大模型了解的是"怎么思考"。那 Agents 的作用就是让大模型自己去决定"怎么做"。其实就是基于ReaAct理念的一种实践方式。

二、Agents 的核心概念

Agents 的核心思想是使用语言模型来选择要采取的一系列操作。语言模型所起到的作用为,被用作推理引擎来确定要采取哪些操作以及按什么顺序。在这个过程里面主要包含以下核心组件:

  • Schema
    • AgentAction
    • AgentFinish
    • Intermediate Steps
  • Agent
    • Agent Inputs
    • Agent Outputs
  • AgentExecutor
  • Tools
    • Considerations
  • Toolkits

三、实战案例

3.1、需求说明

通过 Agent 实现调用 Selenium 打开、退出浏览器、获取当前 URL 等操作。

3.2、实现思路

  • 实现工具包。
  • 初始化 Agent

3.3、完整源码

封装 Selenium 工具: 将会使用到的行为操作,提前封装起来

python 复制代码
from selenium import webdriver


class WebAutoFramework:
    def __init__(self):
        self.driver = None
        if self.driver is None:
            # self.driver = webdriver.Firefox()
            option = webdriver.FirefoxOptions()
            option.binary_location = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
            self.driver = webdriver.Firefox(options=option)  # 这里添加的是driver的绝对路径
            self.driver.implicitly_wait(5)

    def open(self, url):
        self.driver.get(url)

    def quit(self):
        self.driver.quit()

    def get_title(self):
        return self.driver.title

定义工具池:将所有的行为操作,按照要求的tools规范定义清楚。

python 复制代码
from langchain_core.tools import tool

from Artificial_intelligence.大语言模型应用开发框架L2.核心模块Agents.web_auto_selenium import WebAutoFramework

web = WebAutoFramework()


@tool
def open_web(url):
    """
    打开一个网页
    """
    web.open(url)


# if __name__ == '__main__':
#     print(open.name)
#     print(open.args)
#     print(open.description)


@tool
def quit_web():
    """
    退出浏览器
    """
    web.quit()


@tool
def get_title():
    """
    获取网页标题
    :return:
    """
    print(web.get_title())


tools = [open_web, quit_web, get_title]

初始化 Agent 并执行, 将封装好的 tools 传入 agent 中:

python 复制代码
from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain_openai import ChatOpenAI

from Artificial_intelligence.大语言模型应用开发框架L2.核心模块Agents.create_selenium_tools import tools
import os

os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxxxxx"  # 将个人token替换到这个位置
os.environ["OPENAI_API_BASE"] = "xxxxxxxxxxxxxxx"

prompt = hub.pull("hwchase17/openai-functions-agent")

llm = ChatOpenAI(model="gpt-3.5-turbo")

# 初始化 Agent
agent = create_openai_functions_agent(llm, tools, prompt)
# 初始化 Agent 的配置
agent_executor = AgentExecutor(agent=agent,
                               tools=tools, verbose=True,
                               return_intermediate_steps=True
                               , handle_parsing_errors=True)
if __name__ == '__main__':
    agent_executor.invoke({"input": """
                        请打开 https://www.baidu.com/ 网站
                     返回当前的网页的标题,再退出浏览器。"""})

执行结果:

python 复制代码
> Entering new AgentExecutor chain...

Invoking: `open_web` with `{'url': 'https://www.baidu.com/'}`


None
Invoking: `get_title` with `{}`


百度一下,你就知道
None
Invoking: `quit_web` with `{}`


None我已经打开了 https://www.baidu.com/ 网站,并获取了当前网页的标题为 "百度一下,你就知道"。现在已经退出了浏览器。如果您有任何其他问题或需要进一步帮助,请随时告诉我。

> Finished chain.

进程已结束,退出代码为 0
相关推荐
珠海西格电力8 小时前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
启途AI9 小时前
2026免费好用的AIPPT工具榜:智能演示文稿制作新纪元
人工智能·powerpoint·ppt
TH_19 小时前
35、AI自动化技术与职业变革探讨
运维·人工智能·自动化
楚来客9 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
风送雨9 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
效率客栈老秦9 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
小和尚同志9 小时前
虽然 V0 很强大,但是ScreenshotToCode 依旧有市场
人工智能·aigc
HyperAI超神经9 小时前
【vLLM 学习】Rlhf
人工智能·深度学习·学习·机器学习·vllm
芯盾时代9 小时前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
线束线缆组件品替网9 小时前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程