Type something to search...
构建惊艳的文本分析管道!LangGraph的奇妙能力揭秘!

构建惊艳的文本分析管道!LangGraph的奇妙能力揭秘!

在本文中,我将向您介绍 LangGraph,这是一个用于构建基于图的工作流的应用程序的令人难以置信的框架,这些工作流在其他情况下将是不可行的。我将分享我对 LangGraph 的经验,它的重要特性,并最终创建一个文本分析管道,以展示 LangGraph 的能力。

理解 LangGraph

本质上,LangGraph 是围绕图形工作流程的概念构建的,其中每个节点作为特定的过程或计算步骤,边缘在特定条件下确定这些节点之间的数据流。这为应用程序设计提供了高度的灵活性和模块化,使其非常适合复杂任务,例如自然语言处理 (NLP) 中的任务。

关键特性

  1. 状态管理: 超越边界 - LangGraph 的状态管理:它可能是最特别的,因为它具有在不同节点之间维护状态的最佳能力之一,从而使应用程序保持上下文,因此能够适当地响应用户的操作或输入。
  2. 灵活路由: 该框架支持节点之间的动态数据路由,允许在工作流中进行复杂的决策过程。这种灵活性对于需要根据不同输入进行适应的应用程序至关重要。
  3. 持久性: LangGraph 包含内置的持久性功能,使工作流能够在每个步骤后保存其状态。此功能对于需要从中断中恢复或支持人机交互的应用程序至关重要。
  4. 可视化: 基于图的结构使开发人员能够轻松可视化工作流,这有助于理解不同组件如何交互以及应用程序内数据的整体流动。

我们这个项目的模型:文本分析管道

在本教程中,我们将使用 LangGraph 构建一个多阶段的文本分析管道。该管道将通过三个主要步骤处理给定的文本:

1. 文本分类

在初始阶段,我们将输入文本分类为定义的类别,如新闻、博客、研究、其他或类似类别。通过在此节点使用分类模型,我们可以确定文本的性质,并根据需要进行进一步的处理步骤。

2. 实体提取

接下来要做的是识别和提取文本中的关键实体。在这种识别中,文本中出现重要的组成部分,如人、组织和地点。实体提取有助于理解文本,并为进一步的详细分析奠定基础。

3. 文本摘要

最后,我们将创建输入文本的简要摘要。在此步骤中涉及摘要技术,以更压缩的形式向用户提供所有重要的必要信息。摘要节点将从分类和实体提取阶段收集输入,以便提供更连贯的概述。

构建管道

为了在 LangGraph 中构建这个管道,我们将为每个处理阶段创建节点,然后建立定义数据流动的边。

  1. 定义节点:分类、提取、摘要 - 每个这样的功能将在我们的图中以节点的形式表达。
  2. 建立边:我们将根据一个节点的输出作为另一个节点的输入,创建连接这些节点的边。
  3. 实现逻辑:可能需要定义条件逻辑,以确定根据分类结果或提取的实体采取的路径。

这个过程可以引导我们构建一个模块化和可扩展的工作流程,以便进一步轻松修改或扩展与文本分析需求相关的内容。

导入所需库

此单元导入我们 LangGraph 教程所需的所有模块和类。

import os
from typing import TypedDict, List
from langgraph.graph import StateGraph, END
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain_core.runnables.graph import MermaidDrawMethod
from IPython.display import display, Image

from dotenv import load_dotenv

设置 API 密钥

此单元将加载环境变量并配置 OpenAI API 密钥。您需要有一个包含您的 OPENAI_API_KEY 的 .env 文件。

## Load environment variables
load_dotenv()

## Set OpenAI API key
os.environ["OPENAI_API_KEY"] = os.getenv('OPENAI_API_KEY')

构建文本处理管道

定义状态并设置LLM在这里,我们定义State类来管理我们的工作流数据,然后初始化ChatOpenAI模型。

class State(TypedDict):
    text: str
    classification: str
    entities: List[str]
    summary: str

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

定义节点函数

好吧,指定我们图中每个节点执行的操作的函数包括分类、实体提取和摘要。

def classification_node(state: State):
    ''' Classify the text into one of the categories: News, Blog, Research, or Other '''
    prompt = PromptTemplate(
        input_variables=["text"],
        template="Classify the following text into one of the categories: News, Blog, Research, or Other.\n\nText:{text}\n\nCategory:"
    )
    message = HumanMessage(content=prompt.format(text=state["text"]))
    classification = llm.invoke([message]).content.strip()
    return {"classification": classification}


def entity_extraction_node(state: State):
    ''' Extract all the entities (Person, Organization, Location) from the text '''
    prompt = PromptTemplate(
        input_variables=["text"],
        template="Extract all the entities (Person, Organization, Location) from the following text. Provide the result as a comma-separated list.\n\nText:{text}\n\nEntities:"
    )
    message = HumanMessage(content=prompt.format(text=state["text"]))
    entities = llm.invoke([message]).content.strip().split(", ")
    return {"entities": entities}


def summarization_node(state: State):
    ''' Summarize the text in one short sentence '''
    prompt = PromptTemplate(
        input_variables=["text"],
        template="Summarize the following text in one short sentence.\n\nText:{text}\n\nSummary:"
    )
    message = HumanMessage(content=prompt.format(text=state["text"]))
    summary = llm.invoke([message]).content.strip()
    return {"summary": summary}

创建工具和构建工作流

此单元构建 StateGraph 工作流。

workflow = StateGraph(State)

## Add nodes to the graph
workflow.add_node("classification_node", classification_node)
workflow.add_node("entity_extraction", entity_extraction_node)
workflow.add_node("summarization", summarization_node)

## Add edges to the graph
workflow.set_entry_point("classification_node") # Set the entry point of the graph
workflow.add_edge("classification_node", "entity_extraction")
workflow.add_edge("entity_extraction", "summarization")
workflow.add_edge("summarization", END)

## Compile the graph
app = workflow.compile()

可视化工作流程

这有助于我们通过 Mermaid 展示我们在这个单元中的工作流程。

display(
    Image(
        app.get_graph().draw_mermaid_png(
            draw_method=MermaidDrawMethod.API,
        )
    )
)

测试管道

该单元运行样本文本并显示结果。

sample_text = """
OpenAI has announced the GPT-4 model, which is a large multimodal model that exhibits human-level performance on various professional benchmarks. It is developed to improve the alignment and safety of AI systems.
additionally, the model is designed to be more efficient and scalable than its predecessor, GPT-3. The GPT-4 model is expected to be released in the coming months and will be available to the public for research and development purposes.
"""

state_input = {"text": sample_text}
result = app.invoke(state_input)

print("Classification:", result["classification"])
print("\nEntities:", result["entities"])
print("\nSummary:", result["summary"])
#response
Classification: 新闻

Entities: ['OpenAI', 'GPT-4', 'GPT-3']

Summary: OpenAI即将推出的GPT-4模型是一种多模态AI,旨在实现人类水平的表现,改善安全性,并比GPT-3具有更高的效率

结论

在本教程中,我们已经:

  1. 学习了 LangGraph 的概念
  2. 构建了一个文本处理管道
  3. 展示了 LangGraph 在数据处理工作流中的应用
  4. 使用 Mermaid 可视化了这个工作流

在对话代理之外的应用示例是 LangGraph 作为通用框架可以用于的:构建非常复杂的基于图的工作流。

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多