首页 > 其他分享 >大模型agent开发之langchain内置的几种agent

大模型agent开发之langchain内置的几种agent

时间:2024-12-31 20:55:06浏览次数:1  
标签:内置 DESCRIPTION self langchain REACT agent AgentType

人工智能代理(agent)不仅会改变每个人与计算机交互的方式,还会颠覆整个软件行业。不需要任何不同的单独软件,使用日常语言命令设备,代理是人工智能的高级形式,本质上Agents是一个LLM的编排与执行系统。

在langchain中Agents的实现主要分为以下八个步骤,1. 提出需求/问题,2. 问题+Prompt组合, 3. ReAct Loop ,4. 查找Memory,5. 查找可用工具, 6.执行工具并观察结果, 7. 不断重复3-6, 8. 得到最终结果。

langchain内置的agent类型主要分为一下几种。

零样本生成式agent

 ZERO_SHOT_REACT_DESCRIPTION是langchain中内置的预定义代理类型,是一种零样本学习类型,在没有任何特定任务训练学习下依赖底层语言模型的通用能力来处理任务。使用ReAct框架,推理(Reasoning):代理会先对问题进行分析和理解,可能会逐步分解任务。行动(Acting):基于推理的结果,选择合适的工具(如搜索、计算器、数据库查询等)并执行具体操作。

零样本增强生成型(对话)

ZERO_SHOT_REACT_DESCRIPTION是 LangChain 中一个基于聊天模式的智能代理类型,专为对话型任务设计。在ZERO_SHOT_REACT_DESCRIPTION基础上,增强了语言模型的对话能力。可以基于用户输入从多种数据源中快速检索并提取信息。

对话增强生成型

CONVERSATION_REACT_DESCRIPTION是langchain中一个基于记忆的智能代理类型,该类型利用momery处理上下文对话,每轮对话都能携带记忆,更好的回答用户问题。

结构化对话生成增强型 

CHAT_CONVERSATIONAL_REACT_DESCRIPTION是 LangChain 中一种结合了 ReAct 框架(Reasoning + Acting)多轮对话能力的代理类型,专注于处理复杂的对话任务,并支持在对话过程中调用外部工具解决问题。它的主要特点是能够动态理解用户输入,保持上下文的一致性,适用于需要长期交互、上下文跟踪和灵活工具调用的场景。

 

代码示例

from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import PyPDFLoader
from langchain_community.agent_toolkits.load_tools import load_tools
from langchain.agents import initialize_agent, AgentType
import os
from langchain.memory import ConversationBufferMemory

# serppai的token
os.environ["SERPAPI_API_KEY"] = ""
class AgentsTemplate:

    def __init__(self,**kwargs):
        self.prompt = kwargs.get("base_prompt")
        self.llm = kwargs.get("llm")
        self.tools = load_tools(["serpapi","llm-math"],llm=self.llm)
        # 记忆组件
        self.memory = ConversationBufferMemory(
            memory_key="chat_history",
            return_messages=True,
        )
        self.agentType = [AgentType.ZERO_SHOT_REACT_DESCRIPTION,
                          AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
                          AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
                          AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
                          AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION]

    #零样本增强式生成ZERO_SHOT_REACT_DESCRIPTION,
    #使用chatModel的零样本增强式生成CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    def zero_agent(self,question,agentType):
        if agentType not in self.agentType:
            raise ValueError("无效的 AgentType,请选择有效的类型!")
        # 动态构建初始化参数
        agent_params = {
            "tools": self.tools,
            "llm": self.llm,
            "agent": agentType,
            "verbose": True,
            "handle_parsing_errors": True
        }
        if agentType in [
            AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
            AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
            AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION
        ]:
            agent_params["memory"] = self.memory
        #初始化代理
        agent = initialize_agent(**agent_params)
        print("-------------------")
        try:
            response = agent.run(question)
            print(f"运行的代理类型: {agentType}, 提问内容: {question}")
            print(f"agent回答: {response}")
            #self.memory.save_context(question,response)
        except Exception as e:
            print(f"代理运行时出错: {e}")
    #使用chatModel的零样本增强式生成

  

标签:内置,DESCRIPTION,self,langchain,REACT,agent,AgentType
From: https://www.cnblogs.com/Ethereal-hzc/p/18639165

相关文章

  • Type c系列接口驱动电路·Type c系列接口驱动电路详解内置供电驱动电路使用USB2.0驱动
    目录Typec常见封装Typec不同系列Typec驱动电路Typec数据手册                                 编写不易,仅供学习,请勿搬运,感谢理解常见元器件驱动电路文章专栏连接LM7805系列降压芯片驱动电路·降压芯片驱动电路详解-CSDN博客ME......
  • QT程序监控不到拖拽事件如dragEnterEvent - Windows权限问题的解决方案
    问题:当客户端已高完整性启动(例如启动客户端的进程是BypassUAC启动的高完整性的进程,导致客户端继承了其高完整性),由于explorer.exe资源管理器是以中等Medium权限启动,客户端的权限较高,导致设置了qt编写的客户端设置了的setAcceptDrops(true)后依然无法触发dropEvent,导致无法接受其它......
  • Agent:大模型落地的新前沿,你可以不懂大模型,但一定要知道agent
    大家好!今天我要为大家详细介绍一个在大模型应用中逐渐崭露头角的重要领域——Agent。尽管很多人对Agent还不是很了解,但事实上,Agent已经在各行各业中得到了广泛应用,例如数据分析助手和自然语言转关系型数据库(Text-to-SQL)等场景。什么是Agent?Agent是一种能够自主感知环境、......
  • 关于AI Agent的机器人设计构思
    AIAgent的理解分析-CSDN博客针对以上内容,有朋友跟着问道AIAgent能否与机器人结合,准确来说我并没有想的太清楚,沿着相关的想法简单的描述了一些想法和内容。其实可以理解他们为什么会提出这样的问题,因为随着大模型热度不断攀升,AIAgent被认为是大模型最重要的落地方向之一,无......
  • 内置2个引擎,好用到爆!
    今天给大家推荐一个批量图片处理的软件,不但小巧,而且功能非常强大。QuestionPicture图片批量处理软件软件基于rimage的图片批量压缩软件,尤其是比较优秀的图片算法,能够带来高效的图片处理能力。把需要处理的图片直接拖入到软件里,然后设置好输出目录图片格式,就可以......
  • Langchain快速入门
    Langchain快速入门Django/Flask/Fastapi当我们想要实现一个web后端服务时,我们可以选择手动使用Python来编写所有的功能,但这样做通常会非常耗时且容易出错。为了提高效率和稳定性,我们通常会选择使用像Django或Flask这样的web框架。1.因为它们提供了许多内置功能,比如路由、中间......
  • vue3.0新增了哪些内置组件和方法?
    Vue3.0在前端开发中新增了一些内置组件和方法,它们为开发者提供了更多的功能和灵活性。以下是对这些新增内容的清晰归纳:一、新增内置组件:Fragment:在Vue2中,组件必须有一个根标签。然而,在Vue3中,这一限制被取消,组件可以没有根标签。Vue3会将多个标签包含在一个名为Fragm......
  • 利用 ChatFriendli 和 LangChain 打造高性能对话 AI 应用
    老铁们,今天我们一起来看看如何快速上手GoogleAI的聊天模型,尤其是如何通过langchain-google-genai这个包来充分利用Google的强大AI能力。说白了,这个技术点其实不难,咱们一步一步来。技术背景介绍随着AI技术的飞速发展,Google推出了一系列强大的聊天模型(如Gemini),它们可以通......
  • 《动手学 AI Agent 》学习笔记day3
    学习链接:Datawhale-AI活动实操平台:百宝箱专业版今日收获:完成一个好用的agent百宝箱专业版见识增长:一个好看的agent结构图 支付宝的百宝箱可以接入夸克搜索! 一段象征性的页面介绍(防止忘记) 工作流设计流程思路: 我的提示词(代码框右上角一键复制):#AI编程助手提示......
  • 内置纹理资源
    内置纹理资源框架内置了一些纹理资源。普通纹理资源id描述white白色transparent白色透明black黑色red红色green绿色blue蓝色yellow黄色babyblue淡蓝色babygreen淡绿色babyred淡红色brdf-lutuv-debug立方体纹理......