生成式人工智能的完整过时指南(MEAP)(二)(2)

简介: 生成式人工智能的完整过时指南(MEAP)(二)

生成式人工智能的完整过时指南(MEAP)(二)(1)https://developer.aliyun.com/article/1516926

使用 LangChain 分析多个文档

另一个 LanChain 的热门用途是并行加载多个 PDF 文件,并要求 GPT 分析和比较它们的内容。正如您可以在 LangChain 文档中自行查看的那样,现有模块可以加载以允许 PDF 消费和自然语言解析。我将向您介绍一个松散基于该文档示例的用例示例。以下是开始的方式:

import os
os.environ['OPENAI_API_KEY'] = "sk-xxx"
from pydantic import BaseModel, Field
from langchain.chat_models import ChatOpenAI
from langchain.agents import Tool
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.document_loaders import PyPDFLoader
from langchain.chains import RetrievalQA

那段代码将构建您的环境并设置所需的工具以进行:

  • 启用 OpenAI Chat(ChatOpenAI)
  • 理解和处理文本(OpenAIEmbeddings、CharacterTextSplitter、FAISS、RetrievalQA)
  • 管理一个 AI 代理(工具)

接下来,您将创建并定义一个 DocumentInput 类和一个名为 llm 的值,该值设置了一些熟悉的 GPT 参数,稍后都会调用:

class DocumentInput(BaseModel):
    question: str = Field()
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")

接下来,您将创建一些数组。files 数组中的三个 path 变量包含了三家软件/IT 服务公司最近发布的财务报告的 URL:Alphabet(Google)、思科和 IBM。我们将让 GPT 为我们挖掘数据,就像我们之前为特斯拉所做的那样。但是这一次,我们将同时为三家公司进行操作,让 AI 比较结果,并且完全不必下载 PDF 到本地环境中。

通常可以在公司网站的投资者关系部分找到这类法律文件。

tools = []
files = [
    {
        "name": "alphabet-earnings",
        "path": "https://abc.xyz/investor/static/pdf/2023Q1\
           _alphabet_earnings_release.pdf",
    },
    {
        "name": "Cisco-earnings",
        "path": "https://d18rn0p25nwr6d.cloudfront.net/CIK-00\
           00858877/5b3c172d-f7a3-4ecb-b141-03ff7af7e068.pdf",
    },
    {
        "name": "IBM-earnings",
        "path": "https://www.ibm.com/investor/att/pdf/IBM_\
           Annual_Report_2022.pdf",
    },
]

这个 for 循环将遍历我刚刚向您展示的 files 数组的每个值。对于每次迭代,它将使用 PyPDFLoader 加载指定的 PDF 文件,loaderCharacterTextSplitter 来解析文本,并使用剩余的工具来组织数据并应用嵌入。然后,它将调用我们之前创建的 DocumentInput 类。

for file in files:
    loader = PyPDFLoader(file["path"])
    pages = loader.load_and_split()
    text_splitter = CharacterTextSplitter(chunk_size=1000, \
       chunk_overlap=0)
    docs = text_splitter.split_documents(pages)
    embeddings = OpenAIEmbeddings()
    retriever = FAISS.from_documents(docs, embeddings).as_retriever()
    # Wrap retrievers in a Tool
    tools.append(
        Tool(
            args_schema=DocumentInput,
            name=file["name"],
            func=RetrievalQA.from_chain_type(llm=llm, \
               retriever=retriever),
        )
    )

到了这一步,我们终于准备好创建一个代理并将我们的提示作为 input 输入。

llm = ChatOpenAI(
    temperature=0,
    model="gpt-3.5-turbo-0613",
)
agent = initialize_agent(
    agent=AgentType.OPENAI_FUNCTIONS,
    tools=tools,
    llm=llm,
    verbose=True,
)
agent({"input": "Based on these SEC filing documents, identify \
  which of these three companies - Alphabet, IBM, and Cisco \
  - has the greatest short-term debt levels and which has the \
  highest research and development costs."})

我得到的输出简短而简洁:

提示工程

‘output’: ‘根据 SEC 文件:\n\n- 短期债务水平最高的公司是 IBM,短期债务水平为 4,760 百万美元。\n- 研发成本最高的公司是 Alphabet,研发成本为 11,468 百万美元。’}

总结

LangChain 允许您将多个工具集成到生成 AI 操作中,实现对实时互联网的多层次编程访问,以及更复杂的 LLM 提示。

7.4 自学编程(或学习一种新语言…或其他任何事情)

我们过去一段时间一直在使用的所有专业工具都很棒。但是,当您退后一步思考我们所做的一切时,您会注意到连接它们所有的一个简单的事实:使用自然语言文本提示更好、更快地工作。所以,花一两分钟谈谈如何优化您的 GPT 体验可能是值得的。毕竟,LLM 的用处取决于您给出的提示。

以某种形式提示 ChatGPT“教我如何使用 Python 编程”可能不足以完成任务。以那种方式表达时,这个主题对于 ChatGPT 来说过于宽泛,无法在单次完成中得到妥善解决。而且,除此之外,我不确定你是否希望限制自己只使用 GPT。网络上已经有许多优秀的教学资源:为什么要忽视它们呢?

相反,你可能会更好地从一些适合初学者的在线教程(比如官方 Python 指南)和在自己的计算机上创建简单程序来玩耍的组合开始。一旦你熟悉了你的编程工作环境和所有基础知识,你就可以求助于 GPT 来帮助你克服肯定会遇到的问题和瓶颈。

例如,有时候你可能会遇到特定概念或代码片段,觉得挑战性或令人困惑。每当你遇到困难时,利用 GPT 来获得额外的清晰度。通过在面对特定问题的情境下提出你的问题,你更有可能得到你所需要的答案。

要具体。例如,不要问,“我如何在 Python 中写一个循环?”而是问一个更具针对性的问题,比如,“我如何使用 for 循环在 Python 中对列表进行迭代?”或者,你也可以再往后退一步,问“我如何让 Python 对长列表中的每个项应用一个操作?”

提示工程

准确而专注的提示很重要。而且,众所周知的“提示工程”的很多内容实际上只是花时间确保你的 ChatGPT 提示足够清晰,并提供足够的上下文,以使 AI 能够给出最佳的响应。然而,我怀疑所有这些“规则”随着 GAI 模型变得越来越好地理解你真正需要的内容,将变得越来越不重要。

不确定为什么你的 .NET 编译器失败了?首先与 GPT 分享错误消息。你的代码是否产生了明显错误的结果?分享似乎负责的代码片段,并询问 GPT 告诉你你做错了什么。正如我们已经看到的那样,要具体。要冗长。要坚持。一遍又一遍地向 GPT 提出相同问题(使用微妙的变化)可能会得到不同的结果。

还有:确保你耐心地读完从头到尾的完成响应。在接下来的示例中,ChatGPT 不仅给了我解决此提示中问题的代码:

你能给我一些 Python 代码吗?它可以导入一个 4k MP4 视频并将其转换为 1080p 分辨率吗?

当然可以!你可以使用 Python 中的 moviepy 库来导入一个 4K MP4 视频并将其转换为 1080p 分辨率。以下是一个示例代码片段,帮助你入门:

…但是,正如你从完整的响应中所看到的那样,它还预见了可能的问题(即,有限的磁盘空间和系统资源),并向我展示了如何确保我的环境包括所有必要的 Python 模块:

from moviepy.editor import VideoFileClip
# Define the input video file path
input_file = "4k-video.mp4"
# Define the output video file path
output_file = "1080p-video.mp4"
# Load the video clip
clip = VideoFileClip(input_file)
# Set the target resolution to 1080p
target_resolution = (1920, 1080)
# Resize the video clip to the target resolution
resized_clip = clip.resize(target_resolution)
# Write the resized clip to the output file
resized_clip.write_videofile(output_file, codec="libx264", \
  audio_codec="aac")

确保你已经安装了 moviepy 库。你可以使用 pip 安装它:

pip install moviepy

在上面的代码片段中,用你实际的 4K 视频文件的路径替换 "4k-video.mp4"。该代码打开视频文件,使用 resize 方法将其调整为 1080p 的目标分辨率,然后将调整大小后的视频写入指定的输出文件路径。

write_videofile 函数使用 H.264 编解码器(libx264)和 AAC 编解码器处理音频和视频。您可以根据您的需求自定义编解码器选项。

请注意,视频处理可能需要很大的计算量,特别是对于大型的 4K 视频。对于您的系统硬件规格,可能需要一些时间来处理和调整视频大小。

请确保您有足够的磁盘空间,并且您的系统符合处理视频任务的必要要求。

这些显然远不止编码。最近 ChatGPT 还成功地指导我完成了必要的故障排除过程,以便使我的车库门开启正常。拥有所有地球上所有头顶式车库门系统的用户手册确实很不错。

请记住:AI 并不是魔法,让它能为你做所有的事情。它是帮助你更快地、更好地创造更多的魔力工具。

让我再举个例子,我认为这会体现我的观点。因为我有些书是自己出版的,所以我必须从排版、编辑、封面设计和营销等方面全力以赴。我在一些任务上变得非常高效,但在其他任务上却变得非常无能。

拿字体家族的工作举例。当然,我可以分辨衬线和无衬线字体之间的区别,但请不要问我何时、何地使用哪种字体。毕竟,这么多年了,我仍然一头雾水。

因此,在为我最近要出版的一本书和在线课程设计封面图片时,我向 ChatGPT 求助。这是我的问题:

快速工程

我应该使用什么开源字体和字体颜色来制作图书封面(一本介绍开源技术的书)呢?顶部的 2/3 是主要是黑色和黄色图片,而底部(文本区域)是黑色。

这里是我得到的智慧建议:

快速工程

字体:Open Sans 或 Lato。这两种字体都是多用途易读的字体,适用于各种情况。它们也有现代感,非常适合介绍开源技术的书籍。

字体颜色:白色或浅灰色。为了与黑色背景形成对比,使用有冲击力的淡色字体非常重要。白色或浅灰色可以是良好的选择,可以创造出干净、现代的外观。

请注意,选择字体和颜色也可能取决于你的书的具体风格和语气。然而,这些建议应该为你选择可完美搭配书籍封面图像的字体和字体颜色提供一个良好的起点。

我敢说,我不可能从一个高价设计顾问那里得到更完整、个性化的建议。这个封面,带有其 DreamStudio.ai 图像和 GPT-insipred 字体,无疑是我创建过的最好的封面(尽管我承认这个标准相当低)。

结论

LLM 作为教学工具可能不是从零开始学习的理想选择,但对于突破学习障碍、强调特定基础细节和解决问题时非常有效。

7.5 将 LLM 集成到您的日常工作中

微软为 GPT 的发展投入了数十亿美元,积极寻求利用他们的投资。一个明显(也是聪明)的方法将包括将 GPT 功能直接集成到他们的商业产品中。大概不需要在 PowerBI 仪表板中编写完整的、可运行的公式,也不需要在 Excel 中弄懂电子表格公式的语法,你只需用自然语言描述你想要的即可。

这是一个革命性的突破。但从我对事物的了解来看,它还有一些未来的发展(嗯,从我的角度来看,它还有一些未来的发展)。显然,它也仅限于微软产品。

好消息是,即使没有直接集成 GPT,GPT 和其他 LLM 已经具备几乎可以解决任何问题的答案。以下是一些示例来说明。

7.5.1 电子表格集成

LLM 可以帮助生成复杂的电子表格公式进行计算(你能向我展示一个能在单元格中生成随机数并将其乘以前一单元格的平方根的 Excel 公式吗?)或数据分析(你能告诉我标准普尔 500 指数基于 CSV 文件取得最高值的日期吗?),无论你使用的是哪个电子表格品牌。你最喜欢的 LLM 可以使你成为电子表格的高级用户,并在创建时提供帮助:

  • 动态公式进行数据操作和分析
  • 根据具体条件进行条件格式设置突出显示数据
  • 使用函数进行重复任务的自动化处理
  • 用数据生成视觉上令人愉悦的图表和图形

7.5.2 看板集成

LLM 可以提供优化任务管理和组织看板、列表和卡片的建议,适用于Trello或其他看板系统。可以依赖它来:

  • 自动化操作和创建定制工作流程
  • 生成报告
  • 从使用数据中获取见解

7.5.3 集成到 Slack

LLM 可以通过 Slack 的集成工具帮助设置自动化工作流程。这可以包括:

  • 创建自定义机器人
  • 创建和管理频道、群组和权限
  • 建议使用应用和集成

7.5.4 集成到 Salesforce

LLM 可以通过协助创建定制的报表和仪表盘来简化复杂的管理任务,在Salesforce中实现:

  • 对数据进行可视化和分析
  • 设置工作流程和自动化规则
  • 生成公式和函数

7.5.5 代码版本控制

LLM 可以帮助设置版本控制工作流程,并使用 GitHub 进行代码协作。例如,如果您无法记住所需的精确语法或过程,可以向自己最喜欢的 LLM 咨询:

  • 创建分支和拉取请求
  • 管理代码审查
  • 问题追踪
  • 项目管理

7.5.6 Photoshop 集成

新的 Adobe 艺术生成工具,Firefly,现在集成到了 Photoshop 应用程序中,允许您使用文本提示来:

  • 使用生成填充来修改现有图像
  • 在 Photoshop 环境中生成全新的图像

简而言之,如果有一个重要的过程,你并不经常执行,以至于无法可靠地记住,或者有一些新的东西,你知道可能有可能,但你不确定怎么做,GPT 及其朋友们就是你的朋友。

7.6 总结

  • 我们了解到 LLMs 如何有效地吸收和生成可以提供有价值的投资指导的见解。更重要的是,它们可以快速地摄取任何类别的大量数据,并生成有价值的见解。
  • 我们看到了 LangChain 集成如何创建代理,使其能够访问实时互联网并参与复杂的、多层次的数据收集和分析。
  • 我们了解到 LLMs 可以增强和加速您执行几乎任何任务的能力 - 特别是通过在流行的生产力软件包内集成。

7.7 亲自试试

通过与 LangChain 工具的替代用途进行实验。例如,您可以尝试使用实验性的 LLMBashChain 创建自定义 Bash 脚本。将由专门设计的工具得到的结果与 ChatGPT 给出的结果进行比较。

生成式人工智能的完整过时指南(MEAP)(二)(3)https://developer.aliyun.com/article/1516929

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(AIGC,Generative AI)
生成式人工智能(AIGC,Generative AI)
22 3
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(Generative AI)
生成式人工智能(Generative AI)
19 0
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(AIGC,Generative AI)
生成式人工智能(AIGC,Generative AI)
11 0
|
24天前
|
机器学习/深度学习 算法 TensorFlow
无监督学习与生成式人工智能(MEAP)(三)(5)
无监督学习与生成式人工智能(MEAP)(三)
19 0
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
无监督学习与生成式人工智能(MEAP)(三)(4)
无监督学习与生成式人工智能(MEAP)(三)
10 0
|
24天前
|
机器学习/深度学习 人工智能 数据挖掘
无监督学习与生成式人工智能(MEAP)(三)(3)
无监督学习与生成式人工智能(MEAP)(三)
9 0
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
无监督学习与生成式人工智能(MEAP)(三)(2)
无监督学习与生成式人工智能(MEAP)(三)
18 0
|
24天前
|
机器学习/深度学习 自然语言处理 测试技术
无监督学习与生成式人工智能(MEAP)(三)(1)
无监督学习与生成式人工智能(MEAP)(三)
20 0
|
3天前
|
人工智能 前端开发 搜索推荐
人工智能(AI)在前端设计中的创新应用
人工智能(AI)在前端设计中的创新应用
19 4
|
5天前
|
传感器 人工智能 搜索推荐
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势

热门文章

最新文章