赞
踩
agent和chains模块的一样,都是使用大预言模型(LLM)选择一系列的动作来执行,达到完整特定任务的目的在chains模块中,其系列要执行的动作是写死在代码中的饿,灵活性不够。在agents模块中,使用大预言模型来推理要执决定要执行的动作及以何种顺序执行。 agents先引入一批的tools,这些tools是langchain自带的,比如谷歌搜索、python排序等。agents流程会通过大预言模型决定调用哪个工具执行。调用工具的方式不同,可以将agents分为不同到类型。 agents的模块包含了多个类型的agent, 在整个创建流程中是通过AgentType进行实例化的,主要的类型包括:
分析agent模块的源码,从需要从实际的例子出发,捋清楚其流程和每一步执行的功能,尤其是agent模块独有的tools工具的使用逻辑等。
- from langchain.agents.agent_toolkits import create_python_agent
- from langchain.agents import load_tools, initialize_agent
- from langchain.agents import AgentType
- from langchain.tools.python.tool import PythonREPLTool
- from langchain.python import PythonREPL
- from langchain.chat_models import ChatOpenAI
-
- # 1.实例化LLM
- llm_model = "gpt-3.5-turbo-0301"
- llm = ChatOpenAI(temperature=0, model=llm_model)
-
- # 2.通过工具名称加载tools
- tools = load_tools(["llm-math","wikipedia"], llm=llm)
-
- # 3. 初始化agent, 具体agent类型通过AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION指定
- agent= initialize_agent(
- tools,
- llm,
- agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
- handle_parsing_errors=True,
- verbose = True)
-
- # 4. agent调用
- agent("What is the 25% of 300?")
通过上面的例子,以chatAgent为例,设计到主要的两个类是chatAgent和AgentExecutor。两个类的关系中如下:
chatAgent类关系图
chatAgent类中,继承了Agent和SingleActionAgent,其中最重要的函数为plan(异步为aplan)。
agentExecutor类关系图
AgentExecutor类中,继承了Chain类,该类是所有chains模块中的父类。其执行入口均是Chain的call(),不同的点在于子类实现的_call()方法的逻辑。
重点关注:promot_config文件。已经内置了一些agent逻辑。
针对不同的场景,可以设计不同的agent。然后从非结构化数据提取结构化数据,然后可以查询mysql相关业务逻辑,输出最终答案。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。