LangChain简明教程(6)

《LangChain简明教程》系列文章目录

  1. LangChain简明教程(1)
  2. LangChain简明教程(2)
  3. LangChain简明教程(3)
  4. LangChain简明教程(4)
  5. LangChain简明教程(5)

模块 III:Agent(3)

各种类型的 Agent

LangChain 提供了多种类型的 agent,每种类型都适用于特定的使用场景。以下是一些可用的 agents:

  • Zero-shot ReAct:此 agent 使用 ReAct 框架,仅根据工具的描述来选择工具。它需要为每个工具提供描述,并且具有很高的通用性。
  • Structured input ReAct:此 agent 能够处理多输入工具,适合复杂的任务,例如导航网页浏览器。它使用工具的参数模式来进行结构化输入。
  • OpenAI Functions:专门为经过函数调用微调的模型设计,此 agent 与 gpt-3.5-turbo-0613 和 gpt-4-0613 等模型兼容。
  • Conversational:专为对话场景设计,此 agent 使用 ReAct 进行工具选择,并利用记忆功能记住之前的交互内容。
  • Self-ask with search:此 agent 依赖于一个工具,“Intermediate Answer”,用于查找问题的事实答案。它等同于最初的 self-ask with search 论文中的描述。
  • ReAct document store:此 agent 使用 ReAct 框架与文档存储进行交互。它需要“Search”和“Lookup”工具,并类似于 ReAct 论文中提到的 Wikipedia 示例。

应该认真研究一下这些 agent,从而能够找到适合业务需要的一个。这些 agents 允许绑定一组工具来处理操作并生成响应。

SQL 数据库 Agent

这里介绍一个专为与 SQL 数据库(特别是 Chinook 数据库)交互而设计的 agent。该 agent 可以回答有关数据库的一般问题,并能够从错误中恢复。请注意,它仍在开发中,并非所有答案都一定正确。在敏感数据上运行时请务必小心,因为它可能会对您的数据库执行 DML 语句(Data Manipulation Language)。

要使用此 agent,可以按如下方式初始化:

from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain.llms.openai import OpenAI
from langchain.agents import AgentExecutor
from langchain.agents.agent_types import AgentType
from langchain.chat_models import ChatOpenAI

db = SQLDatabase.from_uri("sqlite:///../../../../../notebooks/Chinook.db")
toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))

agent_executor = create_sql_agent(
    llm=OpenAI(temperature=0),
    toolkit=toolkit,
    verbose=True,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)

在上述 agent 中使用 ZERO_SHOT_REACT_DESCRIPTION 类型进行初始化,它旨在回答问题并提供描述。或者,也可以使用 OPENAI_FUNCTIONS 类型通过 OpenAI 的 GPT-3.5-turbo 模型来初始化该 agent,这与我们之前在客户端中使用的模型一致。

免责声明

查询链可能会生成插入/更新/删除(insert/update/delete)查询。请务必小心,如有需要,可以使用自定义提示或创建一个没有写权限的 SQL 用户。

请注意,运行某些查询(例如“运行可能的最大查询”)可能会使您的 SQL 数据库过载,尤其是当数据库包含数百万行数据时。

面向数据仓库的数据库通常支持用户级别的配额以限制资源使用。

可以要求该 agent 描述某个表,例如“playlisttrack”表。以下是一个如何实现此操作的示例:

agent_executor.run("Describe the playlisttrack table")

该 agent 将提供有关表结构以及示例行的信息。

如果你错误地询问了一个不存在的表,该 agent 能够自动恢复并提供与之最接近的匹配表的信息。例如:

agent_executor.run("Describe the playlistsong table")

agent 将找到最接近的匹配表,并提供有关它的信息。

还可以要求该 agent 在数据库上运行查询。例如:

agent_executor.run("List the total sales per country. Which country's customers spent the most?")

agent 将执行查询并提供结果,例如总销售额最高的国家。

要获取每个播放列表中的曲目总数,可以使用以下查询:

agent_executor.run("Show the total number of tracks in each playlist. The Playlist name should be included in the result.")

agent 将返回播放列表名称以及相应的曲目总数。

在 agent 遇到错误的情况下,它能够自动恢复并提供准确的响应。例如:

agent_executor.run("Who are the top 3 best selling artists?")

即使在遇到初始错误后,agent 也会进行调整并提供正确答案,在本例中,答案是销量最高的前三名艺术家。

Pandas DataFrame Agent

这里介绍一个专为与 Pandas DataFrames 交互以回答问题而设计的 agent。请注意,该 agent 在底层使用了 Python agent 来执行由语言模型(LLM)生成的 Python 代码。在使用此 agent 时,请务必小心,以防止 LLM 生成的恶意 Python 代码可能带来的潜在危害。

可以按如下方式初始化 Pandas DataFrame agent:

from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain.chat_models import ChatOpenAI
from langchain.agents.agent_types import AgentType

from langchain.llms import OpenAI
import pandas as pd

df = pd.read_csv("titanic.csv")

# Using ZERO_SHOT_REACT_DESCRIPTION agent type
agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)

# Alternatively, using OPENAI_FUNCTIONS agent type
# agent = create_pandas_dataframe_agent(
#     ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613"),
#     df,
#     verbose=True,
#     agent_type=AgentType.OPENAI_FUNCTIONS,
# )

要求 agent 输出 DataFrame 中的行数:

agent.run("how many rows are there?")

该 agent 将执行代码 df.shape[0] 并提供答案,例如 “dataframe 中有 891 行。”

还可以要求 agent 根据特定条件过滤行,例如找出有多少人的兄弟姐妹超过 3 个:

agent.run("how many people have more than 3 siblings")

该 agent 将执行代码 df[df['SibSp'] > 3].shape[0] 并给出答案,例如 “有 30 人的兄弟姐妹超过 3 个。”

如果想要计算平均年龄的平方根,可以这样问 agent:

agent.run("whats the square root of the average age?")

该 agent 将使用 df['Age'].mean() 来计算平均年龄,然后使用 math.sqrt() 计算平方根。它会提供答案,例如 “平均年龄的平方根是 5.449689683556195。”

接下来,我们创建 DataFrame 的副本,并用平均年龄填充缺失的年龄值:

df1 = df.copy()
df1["Age"] = df1["Age"].fillna(df1["Age"].mean())

然后,可以使用两个 DataFrame 初始化 agent 并询问问题:

agent = create_pandas_dataframe_agent(OpenAI(temperature=0), [df, df1], verbose=True)
agent.run("how many rows in the age column are different?")

该 agent 将比较两个 DataFrame 中的年龄列并提供答案,例如 “年龄列中有 177 行是不同的。”

Jira 工具包

这里介绍如何使用 Jira 工具包,该工具包允许 agent 与 Jira 实例进行交互。你可以执行各种操作,如搜索问题和创建问题。它使用 atlassian-python-api 库。要使用此工具包,需要为 Jira 实例设置环境变量,包括 JIRA_API_TOKEN、JIRA_USERNAME 和 JIRA_INSTANCE_URL。此外,还需要将 OpenAI API 密钥设置为环境变量。

首先,安装 atlassian-python-api 库并设置所需的环境变量:

%pip install atlassian-python-api
import os
from langchain.agents import AgentType
from langchain.agents import initialize_agent
from langchain.agents.agent_toolkits.jira.toolkit import JiraToolkit
from langchain.llms import OpenAI
from langchain.utilities.jira import JiraAPIWrapper

os.environ["JIRA_API_TOKEN"] = "abc"
os.environ["JIRA_USERNAME"] = "123"
os.environ["JIRA_INSTANCE_URL"] = "https://jira.atlassian.com"
os.environ["OPENAI_API_KEY"] = "xyz"

llm = OpenAI(temperature=0)
jira = JiraAPIWrapper()
toolkit = JiraToolkit.from_jira_api_wrapper(jira)
agent = initialize_agent(
    toolkit.get_tools(), llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)

指示 agent 在特定项目中创建具有摘要和描述的新问题:

agent.run("make a new issue in project PW to remind me to make more fried rice")

该 agent 将执行必要的操作来创建问题,并提供响应,例如 “已在项目 PW 中创建了新问题,摘要为‘制作更多炒饭’,描述为‘提醒自己制作更多炒饭’。”

这使你可以使用自然语言指令和 Jira 工具包与 Jira 实例进行交互。

<think>好的,用户想了解阿里云提供的机器学习服务或解决方案,特别是平台文档和示例。我需要根据提供的引用内容来整理回答。首先,我应该先概述阿里云机器学习平台PAI的基本情况,包括它的主要功能和优势,比如数据处理、建模、预测等,可能引用[1]和[2]。接下来,需要分点介绍核心功能,比如数据处理、模型训练、部署等,每个部分结合引用中的信息。然后,可以提到具体的应用案例或模型,比如PAI-Diffusion模型,引用[4],以及Whale框架,引用[5]。此外,文档和示例部分需要指出如何找到这些资源,可能引用[3]中的代码示例,或者PAI的官方文档。用户可能还关心如何快速上手,所以需要提供操作流程,引用[1]中的流程指导。最后,生成相关问题,帮助用户进一步探索。需要确保所有数学公式正确使用LaTeX格式,比如如果有提到算法中的公式,要用$$...$$。同时,检查引用标识是否正确对应,例如PAI EAS在引用[2],Whale在引用[5]。需要确保回答结构清晰,分步骤说明,并且真实可靠,引用相关的内容。最后生成的问题要覆盖用户可能想了解的更多方面,比如平台优势、应用场景、集成方法等。</think>阿里云机器学习平台(PAI)为企业与开发者提供全流程的AI解决方案,涵盖数据处理、模型训练、部署优化等环节。以下是其核心功能及文档示例的梳理: --- ### 一、PAI核心功能 1. **数据处理与准备** - 基于MaxCompute(原ODPS)构建,支持大规模数据清洗、特征工程,例如时序数据存储(如InfluxDB)与实时分析[^3]。 - **示例代码**(数据存储与调用): ```python # 调用阿里云SDK传输数据至PAI from aliyunsdkcore.client import AcsClient client = AcsClient(access_key_id, access_key_secret, region_id) # 将传感器数据存储至InfluxDB,并传输至PAI分析[^3] ``` 2. **模型开发与训练** - 支持主流框架(TensorFlow、PyTorch),提供预训练模型如PAI-Diffusion(中文艺术图像生成)[^4]。 - **高效训练框架**:Whale支持自动分布式优化,简化大模型训练流程[^5]。 3. **模型部署与调用** - **EAS(弹性算法服务)**:支持一键部署模型为RESTful API,集成Langchain等工具提升开发效率[^2]。 - **示例代码**(在线预测): ```python # 调用EAS部署的模型API import requests endpoint = "your_eas_endpoint" response = requests.post(endpoint, json={"input": "sample_data"}) ``` --- ### 二、文档与示例资源 1. **官方教程** - [PAI使用简明教程](引用[1]):详细指导数据准备、模型训练到部署的全流程。 2. **场景化案例** - **图像生成**:体验PAI-Diffusion生成高清艺术图[^4]。 - **物联网分析**:结合IoT平台与PAI实现传感器数据预测。 3. **开源项目** - Whale框架:GitHub开源仓库提供分布式训练代码示例[^5]。 --- ### 三、快速入门流程 1. **数据准备**:上传数据至MaxCompute,完成预处理。 2. **模型构建**:通过PAI Studio拖拽式建模或代码开发。 3. **部署与调用**:通过EAS发布API,集成至业务系统。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CS创新实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值