


Erstellen Sie Ihren personalisierten Nachrichten Digest mit KI -Agenten
Einführung
Die Fähigkeiten großer Sprachmodelle (LLMs) gehen schnell voran. Sie ermöglichen es uns, eine Vielzahl von LLM -Anwendungen aufzubauen. Diese reichen von der Aufgabenautomatisierung bis zur Workflow -Optimierung. Eine aufregende Anwendung ist die Verwendung von LLMs, um einen intelligenten Nachrichten -Digest oder einen Newsletter -Agenten zu erstellen. Dieser Agent kann relevante Inhalte einführen, ihn zusammenfassen und in einem angepassten Format liefern. Es kann dynamisch mit externen Tools und Datenquellen interagieren, um relevante Informationen abzurufen. Lassen Sie uns in diesem Artikel lernen, wie Sie einen Nachrichten -Digest -Agenten für einen personalisierten Daily News Digest mit Langgraph und externen Tools wie News -API erstellen.
Überblick
- Verstehen Sie die Architektur von Langgraph und ihren Schlüsselkomponenten (Zustand, Knoten und Kanten), um anpassbare Workflow -Agenten zu erstellen.
- Erfahren Sie, wie Sie externe APIs wie Newsapi integrieren, um Echtzeitdaten für die dynamische Inhaltsgenerierung in Newslettern abzurufen.
- Entwickeln Sie die Fähigkeiten, um LLMs für die Inhaltsbewertung zu verwenden, indem Sie ein Bewertungssystem implementieren, das Nachrichtenartikel basierend auf Qualitätskriterien bezeichnet.
- Erwerben Sie praktische Kenntnisse über die Automatisierung der E-Mail-Zustellung mit kuratierten Inhalten mithilfe von Pythons E-Mail-Sendungsbibliotheken.
Inhaltsverzeichnis
- Kurz über Langgraph
- Voraussetzungen
- Definieren Sie den Anwendungsfluss
- Holen Sie sich Neuigkeiten
- Score News
- E -Mail senden
- Den Agenten aufbauen
- Häufig gestellte Fragen
Kurz über Langgraph
Langgraph ist auf Langchain gebaut. Langgraph ist ein Framework, das zum Erstellen dynamischer Workflows entwickelt wurde, die LLMs in benutzerdefinierte Logik und Tools integrieren. Dies ermöglicht hoch angepasste und komplexe Workflows, die mehrere Tools und APIs kombinieren.
Langgraph besteht aus drei Kernkomponenten:
- Staat: Der Staat enthält die Daten, die während der gesamten Anwendung gemeinsam genutzt werden. Es kann jede Python -Datenstruktur sein, die die Daten enthalten kann. Wir können es anhand eines Statusobjekts mit unterschiedlichen Parametern definieren. Alternativ können wir auch vorgefertigte MessagesState verwenden, die nur eine Liste von Nachrichten enthalten können.
- Knoten: Knoten sind Funktionen, die den Status lesen und ändern können. Diese Funktionen betrachten den Staat als erstes Argument, um den Staat zu lesen oder zu schreiben. Wir haben auch einen Startknoten, um zu bezeichnen, welcher Knoten die Benutzereingabe nimmt und zuerst aufgerufen wird, und einen Endknoten, um das Ende des Diagramms zu bezeichnen.
- Kanten: Kanten definieren den Datenfluss durch verschiedene Knoten. Wir haben auch bedingte Kanten, die eine Funktion verwenden, um zu bestimmen, zu welchem Knoten Sie als nächstes gehen sollen. Der Vorteil von Langgraph besteht darin, dass wir den Agenten auf viele Arten anpassen können. Es kann also mehr als eine Möglichkeit geben, diesen Agenten aufzubauen.
Wie im Bild gezeigt, verbinden die Kanten Knoten und Knoten lesen oder schreiben die Daten in den Zustand.
Lesen Sie auch: Optimieren Sie das E -Mail -Marketing Ihres Unternehmens mit Genai -Agenten
Voraussetzungen
Bevor wir den LLM -Agenten aufbauen, stellen wir sicher, dass wir über die erforderlichen Schlüssel und Passwörter verfügen.
Zugriff auf eine LLM über API
Beginnen Sie mit dem Generieren eines API -Schlüssels für die von Ihnen verwendeten LLM. Erstellen Sie eine Textdatei mit dem Namen '.env'. Speichern Sie diesen Schlüssel sicher in einer .env -Datei, um sie in Ihrem Projekt privat und leicht zugänglich zu halten.
Hier ist ein Beispiel dafür, wie eine .env -Datei aussieht
Nachrichten abrufen
Um Nachrichteninhalte zu sammeln, werden wir https://newsapi.org/ verwenden. Melden Sie sich für einen API -Schlüssel an und speichern Sie diese in derselben .Env -Datei für sichere Zugriff.
Senden der E -Mail
Um E -Mails mit Python zu senden, können wir "weniger sichere Apps" aktivieren und das Google Mail -Passwort in der Datei .env speichern. Wenn diese Option nicht verfügbar ist, können wir Zugriff auf Google Mail erhalten, indem wir die hier genannten Schritte befolgen.
Bibliotheken erforderlich
Wir haben die folgenden Versionen für die Hauptbibliotheken verwendet:
- Langchain - 0.2.14
- Langgraph - 0.2.14
- Langchain-Openai-0,1,14
- Newsapi-Python-0.2.7
Definieren Sie den Anwendungsfluss
Ziel ist es, den Agenten mit natürlicher Sprache zu fragen, um Nachrichten zu einem bestimmten Thema zu sammeln und den Newsletter per E -Mail zu erhalten. Um diesen Fluss zu implementieren, definieren wir zunächst drei Tools, um jede Schlüsselaufgabe zu erledigen und dann den Agenten zu erstellen, um die LLM und Tools aufzurufen.
Die drei Werkzeuge sind wie folgt:
- Abrufen der Nachrichten: Die Nachrichten -API ruft relevante Nachrichtenartikel auf der Grundlage der analysierten Anfrage ab.
- Bewertung der Nachrichten: Die abgerufenen Artikel werden an einen anderen LLM übergeben, der sie für Qualität bewertet und bewertet. Die Ausgabe ist eine Liste der Artikel, die nach ihrer Qualitätsbewertung sortiert sind.
- Lieferung der Nachrichten: Die Top-Scoring-Artikel werden in eine gut lesbare E-Mail formatiert und an den Benutzer gesendet.
Jetzt können wir die Funktionen definieren.
Holen Sie sich Neuigkeiten
Importieren Sie die erforderlichen Bibliotheken und laden Sie die .env -Datei
OS importieren JSON importieren Pandas als PD importieren Aus DateTime Import DateTime, Timedelta Aus Ipython.display -Importbild, Anzeige Aus dem Einteichen importieren, wörtlich, optional, typedDict, kommentiert aus Langchain_core.tools Import -Tool aus Langchain_openai importieren Sie Chatopenai aus dotenv import load_dotenv load_dotenv ('/. env') # Alternative zur .env -Datei Wir können auch die .txt -Datei wie folgt verwenden mit open ('mykey.txt', 'r') als Datei: openai_key = file.read () Os.Environ ['openai_api_key'] = openai_key
Initiieren Sie die News_API von Newsapiclient und API -Schlüssel
Aus Newsapi Import Newsapiclient News_api_key = os.environ ['news_api_key'] news_api = newsapiclient (api_key = news_api_key)
Definieren wir nun das Langchain -Werkzeug mit dem Dekorateur "Werkzeug" von Langchain
@Werkzeug Def get_news (Abfrage: str, past_days: int, domains: str): "" " Holen Sie sich Neuigkeiten zu den angegebenen Parametern wie Abfrage, Past_days usw. Args: Abfrage: Suchen Sie nach Nachrichten zu diesem Thema Past_days: Für wie viele Tage sollten wir in der Vergangenheit suchen? Domains: Suchen Sie Nachrichten in diesen Ressourcen "" " heute = datetime.today () from_date = heute - Timedelta (Tage = past_days) news_details = news_api.get_ething (q = abfrage, von_param = from_date, domains = domains, domains, sort_by = 'relevancy')) Gibt News_Details zurück
Der Agent kann die Artikel auch basierend auf Relevancy sortieren. Hier ist ein Beispiel dafür, wie die Ausgabe dieser Funktion aussieht:
'@tool' Decorator wird verwendet, um das Langchain -Werkzeug zu definieren. Dann können wir dieses Werkzeug an die LLM binden. In der obigen Funktion ist auch die DOC -Zeichenfolge wichtig. Das wird an die LLM übergeben, um diese Argumente in der Ausgabe des Werkzeuganrufs zu haben.
# Initialisieren Sie die LLM gpt = chatopenai (model = "gpt-4o-mini", Temperatur = 0) # Wir können das Tool an das LLM binden, damit das LLM das Tool basierend auf der Abfrage zurückgeben kann. gpt_with_tools = gpt.bind_tools ([get_news])
Score News
Die Funktion von Score_News verarbeitet Nachrichtenartikel, indem sie sie basierend auf vordefinierten Kriterien bewerten. Anschließend gibt die Funktion eine sortierte Liste der Artikel mit höchster Qualität zurück.
Importieren Sie die erforderlichen Methoden
von Langchain_core.pydantic_v1 Basemodel, Feld importieren von Langchain_core.prompts importieren ChatpromptTemplate, fordertTemplate von Langchain_core.messages importieren HumanMessage
Lassen Sie uns die Funktion definieren
Def Score_News (News_Details: Diktat): "" " Berechnen Sie die Punktzahl für News_articles und sortieren Sie sie nach der Punktzahl. News_Details: Alle Nachrichtenartikel "" " # Zugriff auf die letzte Nachricht des Staates für die Artikel. # Alle Artikel an die LLM weitergeben, erhöht die Kosten. # Wir können nur einige Artikel erzielen. json_articles = json.loads (News_Details ['Nachrichten'] [-1] .Content) ['Artikel'] Wenn Len (json_articles)> 15: Artikel = json_articles [: 15] anders: Artikel = JSON_Articles # Systemaufforderung, die LLM zu leiten, um die Artikel zu bewerten. System_prompt = "" " Sie sind ein Nachrichtenqualitätsbewerter. Ich werde Ihnen einen Nachrichtenartikel mit einem Titel, einer Beschreibung und einem abgeschnittenen Inhalt und anderen Details zur Verfügung stellen. Analysieren und bewerten Sie den Nachrichtenartikel basierend auf den folgenden Kriterien: Klarheit: Wie gut der Artikel die Nachricht in prägnanter und verständlicher Weise vermittelt. Skala: 1 (unklar) bis 25 (sehr klar) Glaubwürdigkeit: Wie wahrscheinlich ist der Artikel basierend auf der Beschreibung und anderen angegebenen Details glaubwürdig und sachlich korrekt? Skala: 1 (nicht glaubwürdig) bis 25 (sehr glaubwürdig) Engagement -Potenzial: Wie wahrscheinlich ist es, dass der Artikel die Aufmerksamkeit des Lesers auf sich ziehen oder weiteres Denken hervorruft. Skala: 1 (nicht eingängig) bis 25 (sehr engagiert) Auswirkungen: Wie bedeutend oder einflussreich der Artikel in Bezug auf seine potenziellen gesellschaftlichen, technologischen oder politischen Konsequenzen ist. Skala: 1 (minimaler Einfluss) bis 25 (hohe Auswirkung) Geben Sie die Gesamtpunktzahl von 100 für den Nachrichtenartikel an und fügen Sie die Punktzahlen für jedes der oben genannten Kriterien hinzu. Sie bewerten viele Nachrichtenartikel. Sagen Sie sie so, dass wir sie alle später sortieren können. "" " prompt_template = chatpromptTemplate.from_messages ([("System", System_prompt), ("Human", "{news}")])) # Definieren Sie die pydantische Klasse, um die Ausgabe in einem strukturierten Format zu erhalten. Klassennachrichten (Basemodel): "" "News Scoring System" "" "" Total_score: int = field (Beschreibung = 'Gesamtpunktzahl für den Nachrichtenartikel') Quelle: STR = Feld (Beschreibung = "Die Quelle der Nachrichten") Autor: Optional [STR] = Feld (default = keine, Beschreibung = "Der Autor der Nachrichten") Titel: Str = Field (Beschreibung = "Der Titel der Nachrichten") Beschreibung: STR = Feld (Beschreibung = "Die Beschreibung der Nachrichten") URL: STR = Feld (Beschreibung = "Die URL der Nachrichten") urltoimage: optional [str] = field (default = keine, Beschreibung = "Die Bild -URL der Nachrichten") # GPT 4O ist besser in der Treffer erzielt, aber teurer. gpt_4o = chatopenai (model = 'gpt-4o', Temperatur = 0) structured_gpt = gpt_4o.with_structured_output (News) chain = prompt_template | structured_gpt # Senden Sie jeden Artikel an die LLM, um die Punktzahl mit den anderen Details zu erhalten. Ergebnisse = [chain.invoke ({'news': article}). dict () für Artikel in Artikeln] # Sortieren Sie die Artikel nach Total Score. df = pd.dataframe (Ergebnisse) .sort_values (by = 'Total_Score', Ascending = false) Rückgabe {"Nachrichten": [HumanMessage (content = df.to_dict (orient = 'records')]]}
Die Funktion nimmt den Status als Eingabe mit dem Namen als news_details. Da der Staat über alle Nachrichten verfügt, können wir auf die letzte Nachricht für die Artikel zugreifen. Wir können nur einige Artikel von oben erzählen, um die Kosten zu sparen. Wir können verschiedene Systemaufforderungen ausprobieren, um das beste Bewertungssystem zu erhalten.
Es ist einfacher, die Daten zu verarbeiten, wenn sich die Ausgabe in einem definierten Format befindet. So können wir LLM mit strukturierter Ausgabe verwenden, wobei die Struktur mit der pydantischen Klasse definiert wird.
Dann können wir jeden Artikel bewerten und in einem Datenrahmen speichern. Sobald wir die Artikel mit der Gesamtpunktzahl sortieren und als Nachricht zum Status hinzufügen.
Erläuterung
1. Eingabe
Die Funktion empfängt das Statusobjekt als Eingabe, das alle Nachrichten enthält. Die neueste Nachricht aus diesem Staat enthält die Nachrichtenartikel. Um die Kosten zu minimieren, können wir die Anzahl der Artikel begrenzen, anstatt alle Artikel zu bewerten.
2. Bewertungsprozess
Wir geben der LLM eine detaillierte Systemaufforderung an, in der sie angewiesen werden, jeden Artikel basierend auf den in der Systemaufforderung angegebenen Kriterien zu bewerten.
Der LLM bewertet jeden Artikel basierend auf den in der Systemaufforderung definierten Kriterien und weist eine Gesamtpunktzahl von 100 zu, wobei die Punktzahl jedes Kriteriums hinzugefügt wird.
3. strukturierter Ausgang
Um sicherzustellen, dass die Ausgabe strukturiert und einfach zu verarbeiten ist, definieren wir ein pydantisches Modell (Nachrichten). Dieses Modell enthält Felder wie `Total_Score`,` title`, `cressources` und` url`. Durch die Verwendung dieses strukturierten Formats kann die LLM konsistente, gut organisierte Ergebnisse zurückgeben.
4. LLM -Integration
Wir verwenden GPT-4O, das für seine Genauigkeit in strukturierten Aufgaben bekannt ist, um die Artikel zu bewerten. Es wurde festgestellt, dass GPT-4O bei der Bewertung der Artikel besser als GPT-4O-Mini ist. Jeder Artikel wird durch das LLM übertragen und die Ergebnisse werden unter Verwendung von Pydantic in ein Wörterbuchformat umgewandelt.
5. Sortieren und Ausgabe
Nachdem wir alle Artikel bewertet haben, speichern wir sie in einem Pandas -Datenrahmen und sortieren sie nach ihrem `Total_Score` in absteigender Reihenfolge. Dann können wir die sortierte Liste als Nachricht an den Staat zurückgeben, der im nächsten Teil des Workflows verwendet werden kann.
E -Mail senden
Die Funktion "send_email" enthält eine Liste sortierter Nachrichtenartikel, generiert eine HTML -E -Mail und sendet sie an den Empfänger.
Importieren Sie die Bibliotheken
SMTPLIB, SSL Import Base64 E -Mail importieren
Definieren Sie die Funktion "send_email"
Def send_email (sorted_news): # Holen Sie sich die sortierten Nachrichten aus der letzten Nachricht des Staates. Artikel = Sorted_News ['Nachrichten'] [-1] .Content # Wenn das News_article Bild hat, können wir es in der E -Mail anzeigen. news_items_html = "" Für Artikel in Artikeln [: 10]: Wenn Artikel ['urltoimage'] keine nicht ist: 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="{article ['title']}"> <div> <h3 id="a-href-Barticle-B-url-D-D-article-title-a"> <a href="%7Barticle%20%5B'url'%5D%7D"> {article ['title']} </a> </h3> <p> {article ['Beschreibung']} </p> </div> </div> "" " anders: news_items_html = f "" "" <div> <div> <h3 id="a-href-Barticle-B-url-D-D-article-title-a"> <a href="%7Barticle%20%5B'url'%5D%7D"> {article ['title']} </a> </h3> <p> {article ['Beschreibung']} </p> </div> </div> "" " # CSS zum Styling der HTML -Nachricht. Wir fügen hier die obigen "twwals_items_html" hinzu. html = f "" "" <kopf> <styles> Körper {{ Schriftfamilie: Arial, Sans-Serif; Hintergrundfarbe: #C4C4C4; Rand: 0; Polsterung: 0; }} .Container {{{{{{{ Breite: 80%; Max-Breite: 600px; Rand: 0 Auto; Hintergrundfarbe: #ffffff; Polsterung: 20px; Box-Shadow: 0 4px 8px RGBA (0, 0, 0, 0,1); }} H1 {{{ Text-Align: Mitte; Farbe: #333; }} .News-item {{{{ Anzeige: Flex; Ausrichtung: Zentrum; Rechtfertigungsbekämpfung: Weltraum zwischen; Border-Bottom: 1PX Solid #eeeeee; Polsterung: 15px 0; }} .News-item H3 {{{{{{{{{{{{{{{{{ Rand: 0; Schriftgröße: 16px; Farbe: #007BFF; Rand-Links: 5px; }} .News-item p {{{{ Schriftgröße: 14px; Farbe: #666666; Rand: 5px 0; Rand-Links: 5px; }} .News-item a {{{{{{{{{{{{{{{{ Farbe: #007BFF; Textdekoration: Keine; }} .News-item img {{{{{{{{{{{{{{{{{ Breite: 100px; Höhe: 100px; Objekt-Fit: Deckung; Border-Radius: 8px; }} .footer {{{{ Rand: 20px; Text-Align: Mitte; Schriftgröße: 12px; Farbe: #999999; }} <div> <h1 id="kuratierte-Nachrichten"> kuratierte Nachrichten </h1> {news_items_html} <div> <p> Dies ist Ihr personalisierter Newsletter. </p> </div> </div> </styles></kopf>
Das obige ist der detaillierte Inhalt vonErstellen Sie Ihren personalisierten Nachrichten Digest mit KI -Agenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Der Artikel überprüft Top -KI -Kunstgeneratoren, diskutiert ihre Funktionen, Eignung für kreative Projekte und Wert. Es zeigt MidJourney als den besten Wert für Fachkräfte und empfiehlt Dall-E 2 für hochwertige, anpassbare Kunst.

Metas Lama 3.2: Ein Sprung nach vorne in der multimodalen und mobilen KI Meta hat kürzlich Lama 3.2 vorgestellt, ein bedeutender Fortschritt in der KI mit leistungsstarken Sichtfunktionen und leichten Textmodellen, die für mobile Geräte optimiert sind. Aufbau auf dem Erfolg o

Der Artikel vergleicht Top -KI -Chatbots wie Chatgpt, Gemini und Claude und konzentriert sich auf ihre einzigartigen Funktionen, Anpassungsoptionen und Leistung in der Verarbeitung und Zuverlässigkeit natürlicher Sprache.

In dem Artikel werden Top -KI -Schreibassistenten wie Grammarly, Jasper, Copy.ai, Writesonic und RYTR erläutert und sich auf ihre einzigartigen Funktionen für die Erstellung von Inhalten konzentrieren. Es wird argumentiert, dass Jasper in der SEO -Optimierung auszeichnet, während KI -Tools dazu beitragen, den Ton zu erhalten

Das jüngste Memo von Shopify -CEO Tobi Lütke erklärt kühn für jeden Mitarbeiter eine grundlegende Erwartung und kennzeichnet eine bedeutende kulturelle Veränderung innerhalb des Unternehmens. Dies ist kein flüchtiger Trend; Es ist ein neues operatives Paradigma, das in P integriert ist

Die KI -Landschaft dieser Woche: Ein Wirbelsturm von Fortschritten, ethischen Überlegungen und regulatorischen Debatten. Hauptakteure wie OpenAI, Google, Meta und Microsoft haben einen Strom von Updates veröffentlicht, von bahnbrechenden neuen Modellen bis hin zu entscheidenden Verschiebungen in LE

Hey da, codieren Ninja! Welche Codierungsaufgaben haben Sie für den Tag geplant? Bevor Sie weiter in diesen Blog eintauchen, möchte ich, dass Sie über all Ihre Coding-Leiden nachdenken-die Auflistung auflisten diese auf. Erledigt? - Lassen Sie ’

Der Artikel überprüft Top -KI -Sprachgeneratoren wie Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson und Descript, wobei sie sich auf ihre Funktionen, die Sprachqualität und die Eignung für verschiedene Anforderungen konzentrieren.
