目录
介绍
概述
目录
关于Langgraph的简介
先决条件
通过API访问LLM
获取新闻数据
发送电子邮件
需要库
定义应用程序流
获取新闻
得分新闻
解释
{actits ['title']} " > {actits ['title']}
策划的新闻
首页 科技周边 人工智能 使用AI代理创建个性化的新闻摘要

使用AI代理创建个性化的新闻摘要

Apr 12, 2025 am 11:18 AM

介绍

大语言模型(LLM)的功能正在迅速发展。它们使我们能够构建各种LLM应用程序。这些范围从任务自动化到工作流优化。一个令人兴奋的应用程序是使用LLMS创建智能新闻文摘或新闻通讯代理。该代理可以提取相关内容,总结它并以自定义格式交付。它可以与外部工具和数据源动态交互以获取相关信息。在本文中,让我们学习如何使用Langgraph和News API(例如News API)为个性化的每日新闻摘要构建新闻摘要代理。

使用AI代理创建个性化的新闻摘要

概述

  • 了解Langgraph及其关键组件(状态,节点和边缘)的体系结构,以构建可自定义的工作流代理。
  • 了解如何将新闻纸这样的外部API集成以获取新闻通讯中动态内容的实时数据。
  • 通过实施根据质量标准对新闻文章进行排名的评分系统,开发使用LLM进行内容评估的技能。
  • 使用Python的电子邮件汇编库将其自动化电子邮件交付自动化的实用知识。

目录

  • 关于Langgraph的简介
  • 先决条件
  • 定义应用程序流
    • 获取新闻
    • 得分新闻
    • 发送电子邮件
  • 建造代理
  • 常见问题

关于Langgraph的简介

Langgraph建在Langchain的顶部。 Langgraph是一个框架,旨在构建将LLM与自定义逻辑和工具集成的动态工作流程。这允许高度定制且复杂的工作流程结合多个工具和API。

Langgraph由三个核心组成部分组成:

  1. 状态:状态包含整个应用程序中共享的数据。可以是任何可以持有数据的Python数据结构。我们可以使用具有不同参数的状态对象来定义它。另外,我们还可以使用仅包含消息列表的预构建的MessagessTate。
  2. 节点:节点是可以读取和修改状态的函数。这些功能将状态作为读或写入状态的第一个参数。我们还有一个开始节点来表示哪个节点将获取用户输入,并首先称为“表示图”末尾的末端节点。
  3. 边缘:边缘通过不同的节点定义数据流。我们还具有有条件的边缘,该边缘使用函数来确定下一步要转到哪个节点。 Langgraph的优点是我们可以通过许多方式自定义代理。因此,可以有不止一种方法来构建该代理。

使用AI代理创建个性化的新闻摘要

如图所示,边缘连接节点,节点在状态中读取或写入数据。

另请阅读:优化组织与Genai代理商的电子邮件营销

先决条件

在开始构建LLM代理之前,请确保我们拥有所需的键和密码。

通过API访问LLM

首先为您使用的LLM生成一个API键。创建一个名称为“ .env”的文本文件。将此密钥牢固地存储在.env文件中,以使其私密且在项目中易于访问。

这是一个.env文件的示例

使用AI代理创建个性化的新闻摘要

获取新闻数据

要收集新闻内容,我们将使用https://newsapi.org/。注册一个API键并将其存储在同一.ENV文件中以进行安全访问。

发送电子邮件

要使用Python发送电子邮件,我们可以启用“较不安全的应用程序”,然后将Gmail密码存储在.ENV文件中。如果该选项不可用,我们可以按照此处提到的步骤访问Gmail。

需要库

我们已将以下版本用于主要库:

  • Langchain - 0.2.14
  • Langgraph - 0.2.14
  • Langchain-Openai - 0.1.14
  • Newsapi-Python - 0.2.7

定义应用程序流

目的是使用自然语言查询代理商,以收集有关特定主题的新闻,并通过电子邮件获取新闻通讯。为了实现此流程,我们将首先定义三个工具来处理每个关键任务,然后构建代理来调用LLM和工具。

这三个工具如下:

  1. 获取新闻:新闻API根据解析的查询检索相关的新闻文章。
  2. 评分新闻:被提取的文章传递给另一个LLM,该法学硕士评估和评分为质量。输出是按其质量得分排序的文章列表。
  3. 发表新闻:最高得分的文章将格式化为可读的电子邮件,并发送给用户。

现在,我们可以开始定义功能。

获取新闻

导入必要的库并加载.env文件

导入操作系统 
进口JSON
导入大熊猫作为pd
从DateTime Import DateTime,TimeDelta
从ipython.display导入图像,显示
从输入导入列表,文字,可选,打字,注释
来自langchain_core.tools导入工具
来自langchain_openai进口chatopenai

来自dotenv import load_dotenv

load_dotenv('/。env')

#替代.env文件,我们也可以使用.txt文件如下
用open('mykey.txt','r')作为文件:
    OpenAi_Key = file.read()
    
os.environ ['OpenAI_API_KEY'] = OpenAi_Key
登录后复制

从Newsapiclient和API键启动News_API

从Newsapi Import Newsapiclient

news_api_key = os.environ ['news_api_key']

news_api = newsapiclient(api_key = news_api_key)
登录后复制

现在,让我们使用Langchain的“工具”装饰器来定义Langchain工具

@工具
def get_news(查询:str,past_days:int,域:str):
    ”“”
    获取有关给定参数的新闻,例如查询,过去_DAYS,等。
    args:
        查询:有关此主题的搜索新闻
        过去_DAYS:过去应该搜索几天?
        域:这些资源中的搜索新闻
    ”“”
    今天= dateTime.today()
    from_date =今天-TimeDelta(days = past_days)
    news_details = news_api.get_everything(q =查询,from_param = from_date,domains =域,
                                           sort_by ='相关性')
    返回news_details
登录后复制

代理还可以根据相关性对文章进行分类。这是此功能的输出的示例:

使用AI代理创建个性化的新闻摘要

'@tool'装饰器用于定义兰链工具。然后,我们可以将此工具绑定到LLM。在上述功能中,DOC字符串也很重要。这就是将LLM传递给LLM的原因,以将这些参数放在工具称呼LLM的输出中。

 #初始化LLM
gpt = chatopenai(型号=“ gpt-4o-mini”,温度= 0)

#我们可以将工具绑定到LLM,以便LLM可以根据查询返回工具。
gpt_with_tools = gpt.bind_tools([[get_news])
登录后复制

得分新闻

Score_news功能通过根据预定义的标准对新闻文章进行评分来处理新闻文章。然后该函数返回最高质量文章的排序列表。

导入所需的方法

来自langchain_core.pydantic_v1导入基本模型,字段
来自langchain_core.prompts导入chatprompttemplate,提示键盘
来自langchain_core.messages导入人类
登录后复制

让我们定义功能

def score_news(news_details:dict):
    ”“”
    计算News_articles的分数,然后按得分进行排序。
        news_details:所有新闻文章    
    
    ”“”
    #访问国家的最后一条消息。
    #将所有文章传递给LLM将增加成本。 
    #我们可以选择仅评分一些文章。
    json_articles = json.loads(news_details ['消息'] [ -  1] .content)
    如果len(json_articles)> 15:
        文章= json_articles [:15]
    别的:
        文章= json_articles
    
    #系统提示指导LLM评分文章。
    system_prompt =“”“”
    您是新闻质量评估者。
    我将为您提供新闻文章,其中包含标题,描述和截短的内容和其他详细信息。 
    根据以下标准分析和评分新闻文章:

    清晰度:文章以简洁而可理解的方式传达信息的程度。
        比例:1(不清楚)至25(非常清晰)

    可信度:基于提供的描述和其他细节,文章有多大可能可信和实际上准确?
        比例:1(不可信)至25(高度可信)

    参与潜力:文章吸引读者的注意力或引起进一步思考的可能性。
        比例:1(不参与)至25(非常吸引人)

    影响:本文的潜在社会,技术或政治后果的重要性或影响力。
        比例:1(最小影响)至25(高影响力)

    为新闻文章提供100分的总分数,并为上述每个标准的分数添加得分。

    您将评估很多新闻文章。因此,对他们进行评分,以便我们以后可以对所有这些分类。

    ”“”
    提示_template = chatprompttemplate.from_messages([(“系统”,system_prompt),(“人”,“ {news}”)))

    
    #定义pydantic类以以结构化格式获取输出。
   
    课堂新闻(基本模型):
        “”“新闻评分系统”“”
    
        total_score:int = field(description ='新闻文章的总分')
        
        来源:str = field(Description =“新闻的来源”)
        作者:可选[str] = field(default = none,description =“新闻的作者”)
        
        标题:str = field(description =“新闻的标题”)
        描述:str = field(描述=“新闻描述”)
        
        URL:str = field(description =“新闻的URL”)
        urltoimage:可选[str] = field(default = none,description =“新闻的图像URL”)

    #GPT 4O在得分方面表现更好,但成本更高。
    gpt_4o = chatopenai(型号='gpt-4o',温度= 0)
    structured_gpt = gpt_4o.with_structured_output(新闻)
    链=提示_template | structred_gpt
    
    #将每篇文章发送到LLM,以获取其他细节。
    结果= [chain.Invoke({'news':artical})。文章中文章的dict()]

    #按总分对文章进行排序。
    df = pd.dataframe(结果).sort_values(by ='tucter_score',accending = false)
    
    返回{“消息”:[humanMessage(content = df.to_dict(orient ='records'))]}}
登录后复制

该功能将状态作为输入,名称为news_details。由于国家包含所有消息,我们可以访问文章的最后一条消息。我们可以选择从顶部获得一些文章来节省成本。我们可以尝试不同的系统提示来获得最佳评分系统。

如果输出为定义格式,则更容易处理数据。因此,我们可以将LLM与结构化输出一起使用,其中结构是使用Pydantic类定义的。

然后,我们可以对每篇文章进行评分并将其存储在数据框架中。一旦我们使用总分数对文章进行排序,并将其添加为州的消息。

解释

1。输入

该函数将状态对象作为输入接收,其中包含所有消息。该州的最新信息持有新闻文章。为了最大程度地减少成本,我们可以限制文章的数量,而不是评分所有文章。

2。评分过程

我们为LLM提供了详细的系统提示,并根据系统提示中给出的标准指示其对每篇文章进行评分。

LLM根据系统提示中定义的标准评估每个文章,并分配100个总分,并增加每个标准的分数。

3。结构化输出

为了确保输出结构化且易于处理,我们定义了Pydantic模型(新闻)。该模型包括``total_score'',`title` titled'',`description`和`rl''等字段。通过使用这种结构化格式,LLM可以返回一致,组织良好的结果。

4。LLM集成

我们使用GPT-4O(以其在结构化任务中的准确性而闻名)来评分文章。发现在评估文章时,GPT-4O比GPT-4O-Mini好。每篇文章都通过LLM传递,并使用Pydantic转换为词典格式。

5。排序和输出

在评分了所有文章之后,我们将它们存储在Pandas DataFrame中,以降序顺序对其进行“ total_score”进行排序。然后,我们可以将排序列表作为消息返回到州,准备在工作流的下一部分中使用。

发送电子邮件

send_email功能列出了分类的新闻文章列表,生成了HTML电子邮件,并将其发送给收件人。

导入库

导入SMTPLIB,SSL
导入基础64
导入电子邮件
登录后复制

定义send_email功能

def send_email(sorted_news):
 
    #从国家的最后一条消息中获取分类新闻。
    articles = sorted_news ['消息'] [ -  1] .content
    
    #如果News_article具有图像,我们可以在电子邮件中显示。
    news_items_html =“”
    对于文章中的文章[:10]:
        如果文章['urltoimage']不是没有:
            news_items_html = f“”
            <div>
                <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174442792064130.jpg" class="lazy" alt="”">
                <div>
                    <h3 id="a-href-E-C-actits-title-a"> <a href="%E2%80%9C"> {actits ['title']} </a> </h3>
                    <p> {文章['description']} </p>
                </div>
            </div>
            ”“”
        别的:
            news_items_html = f“”
            <div>
                <div>
                    <h3 id="a-href-E-C-actits-title-a"> <a href="%E2%80%9C"> {actits ['title']} </a> </h3>
                    <p> {文章['description']} </p>
                </div>
            </div>
            ”“”
            
    #用于造型HTML消息的CSS。我们在此处添加上面的“ news_items_html”。
    html = f“”
        
        
            
                身体 {{
                    字体家庭:Arial,sans-serif;
                    背景色:#C4C4C4;
                    保证金:0;
                    填充:0;
                }}}
                。容器 {{
                    宽度:80%;
                    最大宽度:600px;
                    保证金:0自动;
                    背景色:#ffffff;
                    填充:20px;
                    盒子阴影:0 4PX 8PX RGBA(0,0,0,0.1);
                }}}
                h1 {{
                    文字平衡:中心;
                    颜色:#333;
                }}}
                .news-item {{{
                    显示:Flex;
                    准项目:中心;
                    正当:中间的空间;
                    边界底:1px固体#EEEEE;
                    填充:15px 0;
                }}}
                .news-item h3 {{{
                    保证金:0;
                    字体大小:16px;
                    颜色:#007BFF;
                    左键:5px;
                }}}
                .news-item p {{{
                    字体大小:14px;
                    颜色:#666666;
                    保证金:5px 0;
                    左键:5px;
                }}}
                .news-item a {{{
                    颜色:#007BFF;
                    文本介绍:无;
                }}}
                .news-item img {{{
                    宽度:100px;
                    身高:100px;
                    对象拟合:封面;
                    边界拉迪乌斯:8px;
                }}}
                。页脚 {{
                    保证金顶:20px;
                    文字平衡:中心;
                    字体大小:12px;
                    颜色:#999999;
                }}}
            
        
        
            <div>
                <h1 id="策划的新闻">策划的新闻</h1>
                {news_items_html}
                <div>
                    <p>这是您的个性化新闻通讯。</p>
                </div>
            </div>
        
登录后复制

以上是使用AI代理创建个性化的新闻摘要的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

最佳AI艺术生成器(免费付款)创意项目 最佳AI艺术生成器(免费付款)创意项目 Apr 02, 2025 pm 06:10 PM

本文回顾了AI最高的艺术生成器,讨论了他们的功能,对创意项目的适用性和价值。它重点介绍了Midjourney是专业人士的最佳价值,并建议使用Dall-E 2进行高质量的可定制艺术。

开始使用Meta Llama 3.2 -Analytics Vidhya 开始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

最佳AI聊天机器人比较(Chatgpt,Gemini,Claude&amp;更多) 最佳AI聊天机器人比较(Chatgpt,Gemini,Claude&amp;更多) Apr 02, 2025 pm 06:09 PM

本文比较了诸如Chatgpt,Gemini和Claude之类的顶级AI聊天机器人,重点介绍了其独特功能,自定义选项以及自然语言处理和可靠性的性能。

顶级AI写作助理来增强您的内容创建 顶级AI写作助理来增强您的内容创建 Apr 02, 2025 pm 06:11 PM

文章讨论了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的写作助手,重点介绍了其独特的内容创建功能。它认为Jasper在SEO优化方面表现出色,而AI工具有助于保持音调的组成

构建AI代理的前7个代理抹布系统 构建AI代理的前7个代理抹布系统 Mar 31, 2025 pm 04:25 PM

2024年见证了从简单地使用LLM进行内容生成的转变,转变为了解其内部工作。 这种探索导致了AI代理的发现 - 自主系统处理任务和最少人工干预的决策。 Buildin

AV字节:Meta&#039; llama 3.2,Google的双子座1.5等 AV字节:Meta&#039; llama 3.2,Google的双子座1.5等 Apr 11, 2025 pm 12:01 PM

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

向员工出售AI策略:Shopify首席执行官的宣言 向员工出售AI策略:Shopify首席执行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

选择最佳的AI语音生成器:评论的顶级选项 选择最佳的AI语音生成器:评论的顶级选项 Apr 02, 2025 pm 06:12 PM

本文评论了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高级AI语音生成器,重点介绍其功能,语音质量和满足不同需求的适用性。

See all articles