搜尋
首頁科技週邊人工智慧使用AI代理創建個性化的新聞摘要

介紹

大語言模型(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/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174442792064130.jpg?x-oss-process=image/resize,p_40" 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
研究數據持續多長時間?解釋如何獲取最新信息研究數據持續多長時間?解釋如何獲取最新信息May 14, 2025 am 04:17 AM

使用最新數據的Chatgpt可能性和技巧:插件,瀏覽和副詞 Chatgpt具有業務和學習的巨大潛力,但是學習數據的限制至2021年(GPT-3.5)。在本文中,我們將解釋如何使用插件和瀏覽功能,特定的使用示例以及與其他AI語言模型進行比較。 獲得知識和技能,有效地利用Chatgpt。 Openai的最新AI代理“ Openai Deep Research”

易於理解的解釋如何使用ChatGpt提高庫存管理效率!易於理解的解釋如何使用ChatGpt提高庫存管理效率!May 14, 2025 am 03:44 AM

即使對於中小型企業,易於實施!與Chatgpt和Excel的明智庫存管理 庫存管理是您業務的命脈。儲存過多和庫存的物品對現金流和客戶滿意度有嚴重影響。但是,目前的情況是,在成本方面引入全尺度庫存管理系統很高。 您想關注的是Chatgpt和Excel的組合。在本文中,我們將逐步解釋如何使用此簡單方法簡化庫存管理。 自動化數據分析,需求預測和報告以顯著提高運營效率等任務。而且,

易於理解的解釋如何檢查和切換chatgpt的版本!易於理解的解釋如何檢查和切換chatgpt的版本!May 14, 2025 am 03:43 AM

通過選擇chatgpt版本明智地使用AI!對最新信息以及如何檢查的詳盡說明 Chatgpt是一種不斷發展的AI工具,但其功能和性能因版本而異。在本文中,我們將以易於理解的方式解釋每個版本的Chatgpt的功能,如何檢查最新版本以及免費版本和付費版本之間的差異。選擇最佳版本,並充分利用您的AI潛力。 單擊此處以獲取有關Openai最新AI代理OpenAi Deep Research⬇️的更多信息 [chatgpt] openai d

解釋為什麼您不能將信用卡與Chatgpt的付費計劃一起使用以及如何處理的原因解釋為什麼您不能將信用卡與Chatgpt的付費計劃一起使用以及如何處理的原因May 14, 2025 am 03:32 AM

ChatGPT付費訂閱的信用卡支付故障排除指南 使用ChatGPT付費訂閱時,信用卡支付可能會遇到問題。本文將探討信用卡被拒的原因以及相應的解決方法,從用戶自行解決的問題到需要聯繫信用卡公司的情況,提供詳盡的指南,助您順利使用ChatGPT付費訂閱。 OpenAI發布的最新AI代理,“OpenAI Deep Research”詳情請點擊⬇️ 【ChatGPT】OpenAI Deep Research詳解:使用方法及收費標準 目錄 ChatGPT信用卡支付失敗的原因 原因一:信用卡信息輸入錯誤 原

易於理解的解釋如何在Chatgpt中創建VBA宏!易於理解的解釋如何在Chatgpt中創建VBA宏!May 14, 2025 am 02:40 AM

對於初學者和對業務自動化感興趣的人,編寫VBA腳本(Microsoft Office的擴展程序)可能會覺得很困難。但是,ChatGpt使簡化和自動化業務流程變得容易。 本文以易於理解的方式解釋瞭如何使用ChatGpt開發VBA腳本。我們將詳細介紹特定的示例,包括從VBA的基礎到使用ChatGpt集成,測試和調試的所有內容,以及要注意的好處和點。為了提高編程技能並提高業務效率,

我無法使用ChatGpt插件功能!解釋在錯誤時該怎麼做我無法使用ChatGpt插件功能!解釋在錯誤時該怎麼做May 14, 2025 am 01:56 AM

ChatGPT插件無法使用?這篇指南將幫助您解決問題!您是否遇到過ChatGPT插件無法使用或突然失效的情況? ChatGPT插件是提升用戶體驗的強大工具,但有時也會出現故障。本文將詳細分析ChatGPT插件無法正常工作的原因,並提供相應的解決方法。從用戶設置檢查到服務器故障排查,我們涵蓋了各種故障排除方案,助您高效利用插件完成日常任務。 OpenAI發布的最新AI代理——OpenAI Deep Research,詳情請點擊⬇️ [ChatGPT] OpenAI Deep Research詳解:使

chatgpt是否不遵循字符計數規範?關於如何處理這個問題的詳盡解釋!chatgpt是否不遵循字符計數規範?關於如何處理這個問題的詳盡解釋!May 14, 2025 am 01:54 AM

在使用chatgpt編寫句子時,有時您想指定字符數。但是,很難準確預測AI生成的句子的長度,並且匹配指定數量的字符並不容易。 在本文中,我們將解釋如何創建一個句子,其中chatgpt中的字符數量。我們將介紹有效的及時寫作,獲取適合您目的的答案的技術,並教您處理角色限制的技巧。此外,我們將解釋為什麼Chatgpt不擅長指定角色的數量及其工作方式,以及要謹慎和對策的要點。 本文

關於Python切片操作的所有內容關於Python切片操作的所有內容May 14, 2025 am 01:48 AM

對於每個Python程序員,無論是在數據科學和機器學習的領域還是軟件開發領域,Python切片操作都是最有效,最多功能和強大的操作之一。 Python切片語法

See all articles

熱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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具