wordpress搬站流程,wordpress主题添加字体设置,网页制作与网站建设实战大全 视频,企业网站怎么注册官网目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Agent模块详解2-0、Agent核心思想——React介绍2-0-1、React的介绍以及由来2-0-2、伪代码介绍React的执行顺序 2-1、Agent介绍2-1、Self ask with se… 目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Agent模块详解2-0、Agent核心思想——React介绍2-0-1、React的介绍以及由来2-0-2、伪代码介绍React的执行顺序 2-1、Agent介绍2-1、Self ask with search2-3、OpenAI Function2-4、ReAct 总结 前言 LangChain给自身的定位是用于开发由大语言模型支持的应用程序的框架。它的做法是通过提供标准化且丰富的模块抽象构建大语言模型的输入输出规范利用其核心概念chains灵活地连接整个应用开发流程。 这里是LangChain系列的第六篇主要介绍LangChain的Agent模块。 一、LangChain
1-1、介绍
LangChain是一个框架用于开发由大型语言模型LLM驱动的应用程序。
LangChain 简化了 LLM 应用程序生命周期的每个阶段
开发使用LangChain的开源构建块和组件构建应用程序。使用第三方集成和模板开始运行。生产化使用 LangSmith 检查、监控和评估您的链条以便您可以自信地持续优化和部署。部署使用 LangServe 将任何链转换为 API。
总结 LangChain是一个用于开发由LLM支持的应用程序的框架通过提供标准化且丰富的模块抽象构建LLM的输入输出规范主要是利用其核心概念chains可以灵活地链接整个应用开发流程。即其中的每个模块抽象都是源于对大模型的深入理解和实践经验由许多开发者提供出来的标准化流程和解决方案的抽象再通过灵活的模块化组合才得到了langchain 1-2、LangChain抽象出来的核心模块
想象一下如果要组织一个AI应用开发者一般需要
提示词模板的构建不仅仅只包含用户输入模型调用与返回参数设置返回内容的格式化输出。知识库查询这里会包含文档加载切割以及转化为词嵌入Embedding向量。其他第三方工具调用一般包含天气查询、Google搜索、一些自定义的接口能力调用。记忆获取每一个对话都有上下文在开启对话之前总得获取到之前的上下文吧 由上边的内容引出LangChain抽象的一些核心模块 LangChain通过模块化的方式去高级抽象LLM在不同场景下的能力其中LangChain抽象出的最重要的核心模块如下‘
Model I/O 标准化各个大模型的输入和输出包含输入模版模型本身和格式化输出Retrieval 检索外部数据然后在执行生成步骤时将其传递到 LLM包括文档加载、切割、Embedding等Chains 链条LangChain框架中最重要的模块链接多个模块协同构建应用是实际运作很多功能的高级抽象Memory 记忆模块以各种方式构建历史信息维护有关实体及其关系的信息Agents 目前最热门的Agents开发实践未来能够真正实现通用人工智能的落地方案Callbacks 回调系统允许连接到 LLM 应用程序的各个阶段。用于日志记录、监控、流传输和其他任务
1-3、特点
LangChain的特点如下 大语言模型(llm): LangChain为自然语言处理提供了不同类型的模型这些模型可用于处理非结构化文本数据并且可以基于用户的查询检索信息 PromptTemplates: 这个特征使开发人员能够使用多个组件为他们的模型构造输入提示。在查询时开发人员可以使用PromptTemplates为用户查询构造提示模板之后模板会传递到大模型进行进一步的处理。 链:在LangChain中链是一系列模型它们被连接在一起以完成一个特定的目标。聊天机器人应用程序的链实例可能涉及使用LLM来理解用户输入使用内存组件来存储过去的交互以及使用决策组件来创建相关响应。 agent: LangChain中的agent与用户输入进行交互并使用不同的模型进行处理。Agent决定采取何种行动以及以何种顺序来执行行动。例如CSV Agent可用于从CSV文件加载数据并执行查询而Pandas Agent可用于从Pandas数据帧加载数据并处理用户查询。可以将代理链接在一起以构建更复杂的应用程序。 1-4、langchain解决的一些行业痛点
在使用大模型的过程中一些行业痛点
大模型的使用规范以及基于大模型的开发范式不尽相同当使用一个新模型时我们往往需要学习新的模型规范。大模型知识更新的滞后性大模型的外部API调用能力大模型输出的不稳定问题如何稳定输出大模型与私有化数据的连接方式
1-5、安装
pip install langchain二、Agent模块详解
2-0、Agent核心思想——React介绍
2-0-1、React的介绍以及由来 Agent核心思想React的由来: 在React思想之前,Reason和Act是割裂的即推理和行动。如上图所示
Reason Only (仅推理)这种方式中模型主要关注于生成推理过程而不是直接采取行动。即模型主要聚焦于思考过程。Act Only (仅行动)在这种方式中模型直接与环境Env交互根据观察Observations采取行动Actions。即模型聚焦于根据直接采取行动而不会去思考行动是否正确接下来该做什么等问题。ReAct (推理行动)这种方式结合了推理和行动模型在采取行动之前会进行推理。即思考行动循环这个过程直到完成目标。
2-0-2、伪代码介绍React的执行顺序
伪代码介绍执行顺序
next_action agent.get_action(...)
while next_action ! AgentFinish:observation run(next_action)next_action agent.get_action(..., next_action, observation)
return next_action过程介绍
判断next_action下一次操作是否为AgentFinish标记如果是的话则结束循环。如果next_action下一次操作不是AgentFinish标记则执行并且得到结果作为模型的观察数据。模型通过观察执行的操作以及该操作得到的结果决定下一次执行的操作。如果为AgentFinish则结束循环否则重复以上步骤。
解决的问题
处理Agent选择不存在的工具的情况处理工具出错的情况处理Agent生成的输出无法解析为工具调用的情况所有级别Agent决策、工具调用的日志记录和可观察性到 stdout 和/或 LangSmith。
2-1、Agent介绍 Agent的核心思想是使用LLM来选择一系列要执行的动作图示相关内容介绍如下。 1、左侧内容
用户输入User Input用户提供输入这可以是一个问题、一个请求或任何需要代理处理的信息。补全Completion补全是指根据用户输入生成标准响应的过程。这可能涉及到生成文本、回答问题或执行特定的任务。上下文Context上下文是指代理在生成响应时需要考虑的额外信息。这可以包括历史对话、用户偏好或其他相关数据。
2、右侧内容
AgentAgent主要的组成是大模型一系列提示策略提示策略Prompting Strategies 主要包含Agent的核心执行思想React推理行动OpenAI Functions使用OpenAI提供的函数来执行特定任务这些函数可以是预定义的或用户自定义的Self ask with searchAgent自我提问并使用搜索来获取信息然后基于这些信息生成响应工具包ToolkitsAgent可以调用的一组工具或者是API这些工具可以帮助Agent执行各种任务。可以是Langchain已有的也可以是自定义的。
2-1、Self ask with search
Self-ask with search 指的是Agent通过搜索自我批判来解决复杂问题。这里我们使用tavily 搜索。 tavily 搜索引擎API获取地址 别看了没别的介绍我也是第一次用不是不用Google搜索是捣鼓了很久获取不到验证码。 ♂️
tavily 安装
pip install -U langchain-community tavily-pythonTavilySearchResults参数介绍
max_results最大返回搜索数量include_answer是否包含答案include_images 是否包含图片
Demo测试
import os os.environ[TAVILY_API_KEY] from langchain_community.tools import TavilySearchResultstool TavilySearchResults(max_results5,include_answerTrue,include_raw_contentTrue,include_imagesTrue,# search_depthadvanced,# include_domains []# exclude_domains []
)tool.invoke({query: 谁是世界上最美丽的女人})输出 Agent构建 from langchain.agents import load_tools, get_all_tool_names
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
from langchain.agents import tool
from langchain.schema import SystemMessage
from langchain.agents import OpenAIFunctionsAgent
from langchain.agents import AgentExecutor
from langchain_community.chat_models import ChatZhipuAI
from langchain.agents import initialize_agent, AgentType, Tool
import os
os.environ[TAVILY_API_KEY] from langchain_community.tools import TavilySearchResultstools [TavilySearchResults(name Intermediate Answer, max_results5)]os.environ[ZHIPUAI_API_KEY]
llm ChatZhipuAI(modelglm-4,temperature0,
)# 实例化 SELF_ASK_WITH_SEARCH Agent
self_ask_with_search initialize_agent(tools, llm, agentAgentType.SELF_ASK_WITH_SEARCH, verboseTrue
)
# 实际运行 Agent查询问题正确
self_ask_with_search.invoke(成都举办的大运会是第几届大运会
)输出 2-3、OpenAI Function OpenAIFunctionsAgent 是一个特定的代理Agent它被设计用来与 OpenAI 提供的函数调用功能进行交互。这个代理允许用户定义和执行自定义的函数这些函数可以被语言模型调用以执行特定的任务或操作。 以下是 OpenAIFunctionsAgent 的一些关键特性
函数定义用户可以定义自己的函数这些函数可以接收输入、执行计算或调用外部API并将结果返回给语言模型。与语言模型集成OpenAIFunctionsAgent 允许语言模型调用这些自定义函数就像调用内置函数一样。这使得模型能够执行更复杂的任务如数据检索、文件处理等。
from langchain.agents import load_tools, get_all_tool_names
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
from langchain.agents import tool
from langchain.schema import SystemMessage
from langchain.agents import OpenAIFunctionsAgent
from langchain.agents import AgentExecutoros.environ[ZHIPUAI_API_KEY]
llm ChatZhipuAI(modelglm-4,temperature0,
)# 自定义函数
# tool
# def get_word_length(word: str) - int:
# Returns the length of a word.
# return len(word)# tools [get_word_length]# 调用自带的函数
tools load_tools([llm-math], llmllm)system_message SystemMessage(content你是一个非常强大的AI助手)
prompt OpenAIFunctionsAgent.create_prompt(system_messagesystem_message)
agent OpenAIFunctionsAgent(llmllm, toolstools, promptprompt)# 实例化 OpenAIFunctionsAgent
agent_executor AgentExecutor(agentagent, toolstools, verboseTrue)
agent_executor.invoke(单词“educaasdfasdf”中有多少个字母? 字母次数的3次方是多少? 结果再开方,最终结果是什么?)
输出: 获取所有工具列表 2-4、ReAct
1、获取提示词模板
from langchain import hub
# Get the prompt to use - you can modify this!
prompt hub.pull(hwchase17/react)
prompt输出 React的提示词模板如下所示。
2、构建React智能体
from langchain_community.chat_models import ChatZhipuAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain.agents import AgentExecutor, create_react_agent
import osos.environ[ZHIPUAI_API_KEY]
llm ChatZhipuAI(modelglm-4,temperature0,
)os.environ[TAVILY_API_KEY]
tools [TavilySearchResults(max_results1)]# 构建React智能体
agent create_react_agent(llm, tools, prompt)
# 解析错误解决方案添加参数handle_parsing_errorsTrue
agent_executor AgentExecutor(agentagent, toolstools, verboseTrue)
agent_executor.invoke({input: 2024年有什么重大事件})输出
3、与聊天记录一起使用
# Get the prompt to use - you can modify this!
prompt hub.pull(hwchase17/react-chat)# Construct the ReAct agent
agent create_react_agent(llm, tools, prompt)
agent_executor AgentExecutor(agentagent, toolstools, verboseTrue)from langchain_core.messages import AIMessage, HumanMessageagent_executor.invoke({input: whats my name? Only use a tool if needed, otherwise respond with Final Answer,# Notice that chat_history is a string, since this prompt is aimed at LLMs, not chat modelschat_history: Human: Hi! My name is Bob\nAI: Hello Bob! Nice to meet you,}
)输出 Prompt
参考文章
langchain_community.utilities.sql_database.SQLDatabase LangChain ️ 中文网跟着LangChain一起学LLM/GPT开发 LangChain官网 Rebuff: 防止提示词注入检测器
未完成 Build a Question/Answering system over SQL data langchain101 AI应用开发指南 Langchain官方文档tavily_search搜索工具
总结 Agent也没有那么完美老是会报些奇奇怪怪的错误❌。