【大语言模型】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
相关推荐
VI8664956I2617 分钟前
AEO:从搜索引擎到答案引擎,AI时代搜索优化的新战场
人工智能·搜索引擎
国际云,接待31 分钟前
从CentOS迁移到TencentOS:9%成功率的一键替换实操
服务器·网络·人工智能·腾讯云
CSTechEi1 小时前
【IEEE/EI/Scopus检索】2025年第五届机器学习与大数据管理国际会议 (MLBDM 2025)
大数据·人工智能·机器学习·大数据管理·ei学术会议
要努力啊啊啊2 小时前
YOLOv5 模型结构详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪
来自于狂人2 小时前
[特殊字符] 一键搭建AI语音助理:基于DashScope+GRadio的智能聊天机器人技术全解
人工智能·机器人
heyheyhey_2 小时前
大模型之深度学习PyTorch篇——导学、创建、运算
人工智能·pytorch·深度学习
大囚长2 小时前
未来的随身AI IDC--AI手机
人工智能·智能手机
UQI-LIUWJ2 小时前
论文略读:Large Language Models Assume People are More Rational than We Really are
人工智能·语言模型·自然语言处理
nancy_princess2 小时前
4. 时间序列预测的自回归和自动方法
人工智能·数据挖掘·回归
机器之心2 小时前
谢赛宁团队新基准让LLM集体自闭,DeepSeek R1、Gemini 2.5 Pro都是零分
人工智能·llm