Jadual Kandungan
Pengenalan
Gambaran Keseluruhan
Jadual Kandungan
Singkat mengenai Langgraph
Prasyarat
Mengakses LLM melalui API
Mengambil data berita
Menghantar e -mel
Perpustakaan diperlukan
Tentukan aliran aplikasi
Dapatkan berita
Skor Berita
Penjelasan
Hantar e -mel
{artikel ['title']} " > {artikel ['title']}
Berita Curated
Membina ejen
Kesimpulan
Soalan yang sering ditanya
Rumah Peranti teknologi AI Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Apr 12, 2025 am 11:18 AM

Pengenalan

Keupayaan model bahasa besar (LLMs) berkembang pesat. Mereka membolehkan kami membina pelbagai aplikasi LLM. Ini terdiri daripada automasi tugas ke pengoptimuman aliran kerja. Satu aplikasi yang menarik adalah menggunakan LLMS untuk membuat ejen berita pintar atau ejen surat berita. Ejen ini boleh menarik kandungan yang relevan, meringkaskannya, dan menyampaikannya dalam format yang disesuaikan. Ia boleh berinteraksi secara dinamik dengan alat luaran dan sumber data untuk mengambil maklumat yang relevan. Dalam artikel ini, marilah kita belajar bagaimana untuk membina ejen News Digest untuk Daily News Digest yang diperibadikan dengan Langgraph dan alat luaran seperti API Berita.

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Gambaran Keseluruhan

  • Memahami seni bina Langgraph dan komponen utamanya (keadaan, nod, dan tepi) untuk membina agen aliran kerja yang disesuaikan.
  • Ketahui cara mengintegrasikan API luaran seperti Newsapi untuk mengambil data masa nyata untuk penjanaan kandungan dinamik dalam surat berita.
  • Membangunkan kemahiran untuk menggunakan LLM untuk penilaian kandungan dengan melaksanakan sistem pemarkahan yang meletakkan artikel berita berdasarkan kriteria kualiti.
  • Dapatkan pengetahuan praktikal untuk mengotomatisasi penghantaran e-mel dengan kandungan curated menggunakan perpustakaan e-mel Python.

Jadual Kandungan

  • Singkat mengenai Langgraph
  • Prasyarat
  • Tentukan aliran aplikasi
    • Dapatkan berita
    • Skor Berita
    • Hantar e -mel
  • Membina ejen
  • Soalan yang sering ditanya

Singkat mengenai Langgraph

Langgraph dibina di atas Langchain. Langgraph adalah rangka kerja yang direka untuk membina aliran kerja dinamik yang mengintegrasikan LLM dengan logik dan alat tersuai. Ini membolehkan aliran kerja yang sangat disesuaikan dan kompleks yang menggabungkan pelbagai alat dan API.

Langgraph terdiri daripada tiga komponen teras:

  1. Negeri: Negeri mengandungi data yang dikongsi sepanjang permohonan. Ia boleh menjadi struktur data python yang boleh memegang data. Kita boleh menentukannya menggunakan objek keadaan dengan parameter yang berbeza. Sebagai alternatif, kita juga boleh menggunakan Messagesstate yang telah dibina sebelum ini yang boleh mengandungi hanya senarai mesej.
  2. Nod: Nod adalah fungsi yang boleh membaca dan mengubah keadaan. Fungsi -fungsi ini mengambil negeri sebagai hujah pertama untuk membaca atau menulis kepada Negeri. Kami juga mempunyai nod permulaan untuk menunjukkan nod mana yang akan mengambil input pengguna dan dipanggil nod pertama dan akhir untuk menunjukkan akhir graf.
  3. Tepi: Tepi menentukan aliran data melalui nod yang berbeza. Kami juga mempunyai tepi bersyarat yang menggunakan fungsi untuk menentukan nod mana yang akan pergi ke seterusnya. Kelebihan Langgraph ialah kita boleh menyesuaikan ejen dalam pelbagai cara. Oleh itu, terdapat lebih daripada satu cara untuk membina ejen ini.

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Seperti yang ditunjukkan dalam imej, tepi menyambung nod, dan nod membaca atau menulis data di negeri ini.

Juga Baca: Mengoptimumkan pemasaran e -mel organisasi anda dengan ejen genai

Prasyarat

Sebelum kita mula membina ejen LLM, mari pastikan kita mempunyai kunci dan kata laluan yang diperlukan.

Mengakses LLM melalui API

Mulailah dengan menjana kunci API untuk LLM yang anda gunakan. Buat fail teks dengan nama '.env'. Simpan kunci ini dengan selamat dalam fail .env untuk memastikan ia secara peribadi dan mudah diakses dalam projek anda.

Inilah contoh bagaimana fail .env kelihatan seperti

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Mengambil data berita

Untuk mengumpulkan kandungan berita, kami akan menggunakan https://newsapi.org/. Daftar untuk kunci API dan simpannya dalam fail .env yang sama untuk akses selamat.

Menghantar e -mel

Untuk menghantar e -mel menggunakan Python, kami boleh mengaktifkan 'aplikasi kurang selamat' dan menyimpan kata laluan Gmail dalam fail .env. Jika pilihan itu tidak tersedia, kami boleh mendapatkan akses kepada Gmail dengan mengikuti langkah -langkah yang disebutkan di sini.

Perpustakaan diperlukan

Kami telah menggunakan versi berikut untuk perpustakaan utama:

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

Tentukan aliran aplikasi

Matlamatnya adalah untuk menanyakan ejen menggunakan bahasa semulajadi untuk mengumpulkan berita mengenai topik tertentu dan mendapatkan surat berita melalui e -mel. Untuk melaksanakan aliran ini, kami akan menentukan tiga alat untuk mengendalikan setiap tugas utama dan kemudian membina ejen untuk memanggil LLM dan alat.

Tiga alat adalah seperti berikut:

  1. Mengambil berita: API Berita mengambil artikel berita yang relevan berdasarkan pertanyaan yang dihuraikan.
  2. Menjaringkan Berita: Artikel -artikel yang diambil diserahkan kepada LLM yang lain, yang menilai dan menjaringkan mereka untuk kualiti. Output adalah senarai artikel yang disusun dengan skor kualiti mereka.
  3. Menyampaikan Berita: Artikel-artikel yang dicatatkan teratas diformat ke dalam e-mel yang boleh dibaca dengan baik dan dihantar kepada pengguna.

Sekarang kita boleh mula menentukan fungsi.

Dapatkan berita

Import perpustakaan yang diperlukan dan muatkan fail .env

 Import OS 
Import JSON
Import Pandas sebagai PD
Dari DateTime Import DateTime, Timedelta
dari ipython.display imej import, paparan
dari menaip senarai import, literal, pilihan, typeddict, annotated
dari Langchain_Core.Tools Alat Import
dari langchain_openai import chatopenai

dari dotenv import load_dotenv

LOAD_DOTENV ('/. env')

# Alternatif kepada fail .env Kami juga boleh menggunakan fail .txt seperti berikut
dengan terbuka ('mykey.txt', 'r') sebagai fail:
    openai_key = file.read ()
    
os.environ ['openai_api_key'] = openai_key
Salin selepas log masuk

Memulakan News_API dari Newsapiclient dan Kunci API

 Dari Newsapi Import Newsapiclient

News_api_key = os.environ ['news_api_key']

news_api = newsapiclient (API_KEY = news_api_key)
Salin selepas log masuk

Sekarang mari kita tentukan alat Langchain menggunakan penghias 'alat' dari langchain

 @tool
def get_news (pertanyaan: str, past_days: int, domain: str):
    "" "
    Dapatkan berita mengenai parameter yang diberikan seperti pertanyaan, masa lalu, dll.
    Args:
        pertanyaan: cari berita mengenai topik ini
        Past_days: Untuk berapa hari di masa lalu kita harus mencari?
        Domain: Cari berita dalam sumber -sumber ini
    "" "
    hari ini = datetime.today ()
    dari_date = hari ini - timedelta (hari = masa lalu)
    news_details = news_api.get_everything (q = query, from_param = from_date, domain = domain,
                                           sort_by = 'relevansi')
    Kembali ke News_details
Salin selepas log masuk

Ejen itu juga boleh menyusun artikel berdasarkan kaitan. Inilah contoh bagaimana output fungsi ini kelihatan seperti:

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Penghias '@tool' digunakan untuk menentukan alat Langchain. Kemudian kita boleh mengikat alat ini ke LLM. Dalam fungsi di atas, rentetan DOC juga penting. Inilah yang akan diserahkan kepada LLM sebagai satu petikan untuk mempunyai argumen-argumen dalam output alat panggilan LLM.

 # Inisialisasi LLM
GPT = Chatopenai (Model = "GPT-4O-Mini", suhu = 0)

# kita boleh mengikat alat ke LLM supaya LLM dapat mengembalikan alat berdasarkan pertanyaan.
gpt_with_tools = gpt.bind_tools ([get_news])
Salin selepas log masuk

Skor Berita

Fungsi SCORE_NEWS memproses artikel berita dengan menjaringkan mereka berdasarkan kriteria yang telah ditetapkan. Kemudian fungsi mengembalikan senarai disusun dari artikel berkualiti tinggi.

Import kaedah yang diperlukan

 dari langchain_core.pydantic_v1 Import Basemodel, medan
dari langchain_core.prompts import chatprompttemplate, prompttemplate
dari langchain_core.messages mengimport manusia
Salin selepas log masuk

Mari kita tentukan fungsi

 def score_news (news_details: dict):
    "" "
    Kirakan skor untuk news_articles dan tentukannya dengan skor.
        News_details: Semua artikel berita    
    
    "" "
    # Akses mesej terakhir Negeri untuk artikel.
    # Lulus semua artikel ke LLM akan meningkatkan kos. 
    # Kita boleh memilih untuk menjaringkan hanya beberapa artikel.
    json_articles = json.loads (news_details ['mesej'] [-1] .content) ['artikel']
    jika len (json_articles)> 15:
        artikel = json_articles [: 15]
    lain:
        artikel = json_articles
    
    # Prompt sistem untuk membimbing LLM untuk menjaringkan artikel.
    System_prompt = "" "
    Anda adalah penilai kualiti berita.
    Saya akan memberikan anda artikel berita, dengan tajuk, keterangan, dan kandungan dipotong dan butiran lain. 
    Menganalisis dan menjaringkan artikel berita berdasarkan kriteria berikut:

    Kejelasan: Seberapa baik artikel menyampaikan mesej dengan cara yang ringkas dan mudah difahami.
        Skala: 1 (tidak jelas) hingga 25 (sangat jelas)

    Kredibiliti: Berdasarkan perihalan dan butiran lain yang disediakan, bagaimana mungkin artikel itu boleh dipercayai dan tepat?
        Skala: 1 (tidak boleh dipercayai) hingga 25 (sangat boleh dipercayai)

    Potensi penglibatan: Bagaimana mungkin artikel itu menangkap perhatian pembaca atau menimbulkan pemikiran selanjutnya.
        Skala: 1 (tidak terlibat) hingga 25 (sangat menarik)

    Impak: Bagaimana artikel yang signifikan atau berpengaruh dari segi akibat masyarakat, teknologi, atau politik yang berpotensi.
        Skala: 1 (kesan minimum) hingga 25 (kesan tinggi)

    Sediakan skor keseluruhan daripada 100 untuk artikel berita, sambil menambah skor untuk setiap kriteria di atas.

    Anda akan menilai banyak artikel berita. Jadi, skor mereka supaya kita dapat menyusun semuanya kemudian.

    "" "
    prompt_template = chatprompttemplate.from_messages ([("sistem", system_prompt), ("manusia", "{news}")])

    
    # Tentukan kelas pydantic untuk mendapatkan output dalam format berstruktur.
   
    Berita Kelas (Basemodel):
        "" "Sistem Pemarkahan Berita" ""
    
        total_score: int = medan (keterangan = 'skor total untuk artikel berita')
        
        Sumber: str = medan (keterangan = "sumber berita")
        Pengarang: Pilihan [str] = medan (lalai = Tiada, keterangan = "Pengarang kepada Berita")
        
        Tajuk: Str = Field (keterangan = "Tajuk Berita")
        Penerangan: str = medan (keterangan = "Penerangan kepada berita")
        
        URL: str = medan (keterangan = "URL berita")
        UrlToImage: pilihan [str] = medan (lalai = tiada, keterangan = "URL imej berita")

    # GPT 4O melakukan lebih baik pada pemarkahan tetapi lebih mahal.
    gpt_4o = chatopenai (model = 'gpt-4o', suhu = 0)
    structured_gpt = gpt_4o.with_structured_output (berita)
    rantai = prompt_template | structured_gpt
    
    # Hantar setiap artikel ke LLM untuk mendapatkan skor dengan butiran lain.
    hasil = [chain.invoke ({'News': artikel}). dict () untuk artikel dalam artikel]

    # Susun artikel dengan skor total.
    df = pd.dataFrame (hasil) .sort_values ​​(by = 'total_score', naik = palsu)
    
    kembali {"Mesej": [HumanMessage (content = df.to_dict (orient = 'records'))]}
Salin selepas log masuk

Fungsi ini mengambil keadaan sebagai input dengan nama sebagai news_details. Oleh kerana Negeri mempunyai semua mesej, kita boleh mengakses mesej terakhir untuk artikel tersebut. Kita boleh memilih untuk menjaringkan hanya beberapa artikel dari bahagian atas untuk menjimatkan kos. Kami boleh mencuba sistem yang berbeza untuk mendapatkan sistem pemarkahan terbaik.

Lebih mudah untuk memproses data jika output berada dalam format yang ditetapkan. Jadi, kita boleh menggunakan LLM dengan output berstruktur, di mana struktur ditakrifkan menggunakan kelas Pydantic.

Kemudian kita boleh menjaringkan setiap artikel dan menyimpannya dalam data data. Sebaik sahaja kita menyusun artikel menggunakan skor total dan tambahkannya sebagai mesej kepada Negeri.

Penjelasan

1. Input

Fungsi ini menerima objek negara sebagai input, yang mengandungi semua mesej. Mesej terkini dari negeri ini memegang artikel berita. Untuk meminimumkan kos, bukannya menjaringkan semua artikel, kita boleh mengehadkan bilangan artikel.

2. Proses pemarkahan

Kami menyediakan sistem terperinci kepada LLM, mengarahkannya untuk menjaringkan setiap artikel berdasarkan kriteria yang diberikan dalam sistem yang cepat.

LLM menilai setiap artikel berdasarkan kriteria yang ditakrifkan dalam sistem prompt dan memberikan skor total daripada 100, menambah skor setiap kriteria.

3. Output berstruktur

Untuk memastikan output berstruktur dan mudah diproses, kami menentukan model Pydantic (berita). Model ini termasuk bidang seperti `total_score`,` title`, `description`, dan` url`. Dengan menggunakan format berstruktur ini, LLM boleh mengembalikan hasil yang konsisten dan teratur.

4. Integrasi LLM

Kami menggunakan GPT-4O, yang terkenal dengan ketepatannya dalam tugas berstruktur, untuk menjaringkan artikel. Telah didapati bahawa GPT-4O lebih baik daripada GPT-4O-Mini dalam menilai artikel. Setiap artikel diluluskan melalui LLM, dan hasilnya ditukar menjadi format kamus menggunakan Pydantic.

5. Penyortiran dan output

Selepas menjaringkan semua artikel, kami menyimpannya dalam data data Pandas, menyusunnya dengan `total_score` mereka dalam urutan menurun. Kemudian kita boleh mengembalikan senarai yang disusun sebagai mesej kepada Negeri, bersedia untuk digunakan di bahagian seterusnya aliran kerja.

Hantar e -mel

Fungsi SEND_EMAIL mengambil senarai artikel berita yang disusun, menghasilkan e -mel HTML, dan menghantarnya kepada penerima.

Import perpustakaan

 Import SMTPLIB, SSL
Import Base64
Import e -mel
Salin selepas log masuk

Tentukan fungsi Send_email

 def send_email (sorted_news):
 
    # Dapatkan berita yang disusun dari mesej terakhir negara.
    artikel = sorted_news ['mesej'] [-1] .content
    
    # Jika news_article mempunyai imej, kita boleh memaparkannya dalam e -mel.
    news_items_html = ""
    Untuk artikel dalam artikel [: 10]:
        Jika artikel ['urltoimage'] tidak ada:
            news_items_html = f "" "
            <dana>
                <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174442792064130.jpg" class="lazy" alt="{article ['title']}">
                <dana>
                    <h3 id="a-href-Bartikel-B-url-D-D-artikel-title-a"> <a href="%7Bartikel%20%5B'url'%5D%7D"> {artikel ['title']} </a> </h3>
                    <p> {artikel ['description']} </p>
                
            
            "" "
        lain:
            news_items_html = f "" "
            <dana>
                <dana>
                    <h3 id="a-href-Bartikel-B-url-D-D-artikel-title-a"> <a href="%7Bartikel%20%5B'url'%5D%7D"> {artikel ['title']} </a> </h3>
                    <p> {artikel ['description']} </p>
                
            
            "" "
            
    # CSS untuk menggayakan mesej HTML. Kami menambah 'news_items_html' di atas di sini.
    html = f "" "
        
        
            <yaya>
                badan {{
                    font-family: arial, sans-serif;
                    latar belakang warna: #C4C4C4;
                    Margin: 0;
                    Padding: 0;
                }}
                .container {{{
                    lebar: 80%;
                    Max-Width: 600px;
                    Margin: 0 Auto;
                    latar belakang warna: #fffff;
                    Padding: 20px;
                    box-shadow: 0 4px 8px rgba (0, 0, 0, 0.1);
                }}
                H1 {{
                    Teks-Align: Pusat;
                    Warna: #333;
                }}
                .news-item {{{
                    Paparan: Flex;
                    Align-item: pusat;
                    Justify-Content: Space-antara;
                    Sempadan-Bottom: 1px pepejal #eeeeee;
                    Padding: 15px 0;
                }}
                .News-item H3 {{
                    Margin: 0;
                    saiz font: 16px;
                    Warna: #007BFF;
                    margin-kiri: 5px;
                }}
                .news-item p {{{
                    saiz font: 14px;
                    Warna: #666666;
                    Margin: 5px 0;
                    margin-kiri: 5px;
                }}
                .news-item a {{{
                    Warna: #007BFF;
                    Teks-penyerapan: Tiada;
                }}
                .news-item img {{
                    lebar: 100px;
                    Ketinggian: 100px;
                    Objek-Fit: Cover;
                    Radius sempadan: 8px;
                }}
                .footer {{
                    margin-top: 20px;
                    Teks-Align: Pusat;
                    saiz font: 12px;
                    Warna: #999999;
                }}
            
        
        
            <dana>
                <h1 id="Berita-Curated"> Berita Curated </h1>
                {news_items_html}
                <dana>
                    <p> Ini adalah buletin peribadi anda. </p>
                
            
        
        
    "" "
    
    port = 465 # untuk SSL

    Sender_email = "[E -mel dilindungi]"
    kata laluan = os.environ ['gmail_password']
    
    konteks = ssl.create_default_context ()
 
    # tambahkan kandungan untuk e -mel
    mel = email.message.emailmessage ()
    mel ['to'] = "[dilindungi e -mel]"
    mel ['dari'] = "[dilindungi e -mel]"
    mel ['subjek'] = "News Digest"
    mail.set_content (html, subtype = 'html')

    
    dengan smtplib.smtp_ssl ("smtp.gmail.com", port, konteks = konteks) sebagai pelayan:
        server.login (sander_email, kata laluan)
        server.send_message (mel)</dana></dana></yaya></dana></dana></dana></dana>
Salin selepas log masuk

Penjelasan

1. Mengekstrak berita yang disusun

Fungsi ini bermula dengan mengakses artikel berita yang disusun dari mesej terakhir di negeri ini. Kami mengehadkan bilangan artikel yang dipaparkan dalam e -mel ke 10 teratas.

2. Menjana kandungan HTML

Fungsi ini secara dinamik membina HTML untuk setiap artikel berita. Jika artikel termasuk imej (`urltoimage`), imej itu tertanam dalam e -mel di sebelah tajuk, pautan, dan keterangan artikel. Jika tidak, hanya tajuk dan keterangan yang dipaparkan. Blok HTML ini (`news_items_html`) dijana menggunakan gelung yang memproses setiap artikel.

3. HTML dan CSS Styling

E -mel HTML digayakan menggunakan CSS tertanam untuk memastikan susun atur yang menarik. Gaya penutup:

  • Kontena: Kandungan e -mel utama dibalut dengan bekas berpusat dengan latar belakang putih dan bayangan halus.
  • Item berita: Setiap artikel berita dipaparkan dengan tajuknya (sebagai pautan yang boleh diklik), keterangan, dan pilihan imej. Susun atur menggunakan Flexbox untuk menyelaraskan imej dan teks bersebelahan, dengan sempadan memisahkan setiap item berita.

4. Mengarang e -mel

E -mel disediakan menggunakan kelas `email.message.emailmessage 'Python. Kandungan HTML, baris subjek ("News Digest"), penghantar, dan penerima ditentukan. HTML dimasukkan sebagai kandungan utama menggunakan `mail.set_content (html, subtype = 'html')`.

5. Menghantar e -mel

Fungsi ini menggunakan pelayan SMTP Gmail untuk menghantar e -mel dengan selamat melalui SSL (port 465). Kelayakan Gmail penghantar diambil dari pembolehubah persekitaran `gmail_password` untuk mengelakkan maklumat sensitif hardcoding. Selepas log masuk ke pelayan SMTP, e -mel dihantar kepada penerima.

Membina ejen

Marilah kita membina ejen berdasarkan alat dan fungsi yang ditakrifkan di atas.

Langkah 1. Menentukan fungsi untuk memanggil model dan alat.

 dari Langgraph.Prebuilt Import ToolNode
dari Langgraph.Graph Import Stategraph, Messagesstate, Start, End

# Fungsi untuk memanggil model yang mengembalikan alat berdasarkan pertanyaan.
def call_model (State: Messagesstate):
    Mesej = Nyatakan ["Mesej"]
    respons = gpt_with_tools.invoke (mesej)
    kembali {"Mesej": [Response]}
    
# jika mesej terakhir dari llm di atas adalah tool_calls maka kami kembali "alat"
def call_tools (state: messagesstate) -> literal ["alat", end]:
    Mesej = Nyatakan ["Mesej"]
    last_message = mesej [-1]
    jika last_message.tool_calls:
        Kembali "Alat"
    kembali akhir
Salin selepas log masuk

Langkah 2. Membina graf aliran kerja. Sekarang kita boleh menggunakan semua fungsi yang ditetapkan untuk membina ejen.

 #Buat nod alat dengan fungsi supaya kita dapat menggunakannya dalam graf. 
get_news_tool = toolNode ([get_news])


Aliran Kerja = Stategraph (MessagessTate)

# Kami memulakan ejen dari fungsi call_model.
aliran kerja.add_node ("llm", call_model)
Workflow.add_edge (Mula, "LLM")

# Tambah get_news_tool, yang dipanggil dari LLM di atas berdasarkan pertanyaan.
workflow.add_node ("Alat", get_news_tool)
aliran kerja.add_conditional_edges ("llm", call_tools)

# Kemudian kami menyambung ke fungsi score_news dari fungsi get_news
workflow.add_node ("SCORE", SCORE_NEWS)
Workflow.add_edge ("Alat", "Skor")

# Kemudian kami menyambung ke fungsi Send_email dari fungsi score_news
aliran kerja.add_node ("mel", send_email)
aliran kerja.add_edge ("skor", "mel")

# kita boleh berakhir dengan ejen setelah menghantar surat
aliran kerja.add_edge ("mel", akhir)
Salin selepas log masuk

Langkah 3. Menyusun graf.

 agen = aliran kerja.compile ()
paparan (imej (ejen.get_graph (). Draw_MERMAID_PNG ())))
Salin selepas log masuk

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Sekarang kita boleh menghubungi ejen dengan pertanyaan.

Mari kita gunakan pertanyaan yang mempunyai berita yang lebih sedikit untuk mencetak output pada setiap langkah ejen.

 pertanyaan = "Apa berita mengenai pasukan kriket India pada bulan lalu?"

# Pertanyaan ini akan pergi ke node Start.
input = {"mesej": [("pengguna", pertanyaan)]}

async untuk bahagian dalam agen.astream (input, stream_mode = "nilai"):
    Chunk ["Mesej"] [-1] .pretty_print ()
Salin selepas log masuk

Output akan berada dalam format yang ditunjukkan di bawah. Jika tiada artikel dikembalikan, kita boleh menukar pertanyaan.

Buat Berita Peribadi Anda Digest Menggunakan Ejen AI

Seperti yang dapat kita lihat, kita mulakan dengan pertanyaan. LLM kemudian akan memanggil alat 'get_news'. Kemudian, alat itu mengembalikan semua artikel. Fungsi 'score_news' akan memprosesnya dan mengeluarkan senarai artikel dengan skor. Kemudian fungsi 'Send_email' menghantar e -mel, walaupun tidak ada output di negeri ini.

Dengan cara ini, kita boleh menanyakan ejen mengenai sebarang topik dan mendapatkan e -mel dengan berita yang dikendalikan.

Kesimpulan

Membina ejen newsletter menggunakan Langgraph dan LLMS menawarkan cara yang kuat untuk mengautomasikan kurasi dan penghantaran berita. Dengan menggabungkan data masa nyata, pemarkahan pintar, dan penghantaran e-mel yang diperibadikan, pendekatan ini menyelaraskan penciptaan surat berita yang disesuaikan, meningkatkan penglibatan pembaca dan kaitan kandungan dengan mudah.

Soalan yang sering ditanya

Q1. Apa itu Langgraph, dan bagaimana ia berfungsi?

A. Langgraph adalah rangka kerja untuk membina aliran kerja dinamik yang mengintegrasikan model bahasa besar (LLMS) dengan logik tersuai. Ia membolehkan pemaju untuk menentukan aliran kerja sebagai graf menggunakan negeri, nod, dan tepi, di mana setiap nod mewakili fungsi atau tugas, dan tepi menentukan aliran data antara tugas -tugas ini.

S2. Apakah komponen utama Langgraph?

A. Langgraph terdiri daripada tiga komponen teras: Negeri, yang memegang data yang dikongsi di seluruh aplikasi; Nod, yang mewakili fungsi individu yang membaca atau mengubah keadaan; dan tepi, yang menentukan aliran data antara nod. Tepi bersyarat membolehkan aliran kerja berasaskan keputusan yang fleksibel.

Q3. Bolehkah Langgraph mengintegrasikan API dan alat luaran?

A. Ya, Langgraph boleh mengintegrasikan API dan alat luaran. Anda boleh menentukan nod untuk mengendalikan tugas-tugas tertentu, seperti membuat panggilan API atau berinteraksi dengan perkhidmatan pihak ketiga, dan kemudian gunakan nod ini dalam aliran kerja untuk membuat aplikasi dinamik, masa nyata.

Q4. Bagaimanakah Langgraph mengendalikan aliran kerja bersyarat?

A. Langgraph membolehkan anda menentukan tepi bersyarat, yang menggunakan fungsi untuk menentukan langkah seterusnya dalam aliran kerja. Ciri ini menjadikannya mudah untuk mengendalikan senario berasaskan keputusan yang kompleks di mana aliran bergantung kepada keadaan tertentu atau input pengguna.

Atas ialah kandungan terperinci Buat Berita Peribadi Anda Digest Menggunakan Ejen AI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1266
29
Tutorial C#
1239
24
Bermula dengan Meta Llama 3.2 - Analytics Vidhya Bermula dengan Meta Llama 3.2 - Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta's Llama 3.2: Lompat ke hadapan dalam Multimodal dan Mobile AI META baru -baru ini melancarkan Llama 3.2, kemajuan yang ketara dalam AI yang memaparkan keupayaan penglihatan yang kuat dan model teks ringan yang dioptimumkan untuk peranti mudah alih. Membina kejayaan o

10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari 10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari Apr 13, 2025 am 01:14 AM

Hei ada, pengekodan ninja! Apa tugas yang berkaitan dengan pengekodan yang anda telah merancang untuk hari itu? Sebelum anda menyelam lebih jauh ke dalam blog ini, saya ingin anda memikirkan semua kesengsaraan yang berkaitan dengan pengekodan anda-lebih jauh menyenaraikan mereka. Selesai? - Let &#8217

AV Bytes: Meta ' s llama 3.2, Google's Gemini 1.5, dan banyak lagi AV Bytes: Meta ' s llama 3.2, Google's Gemini 1.5, dan banyak lagi Apr 11, 2025 pm 12:01 PM

Landskap AI minggu ini: Badai kemajuan, pertimbangan etika, dan perdebatan pengawalseliaan. Pemain utama seperti Openai, Google, Meta, dan Microsoft telah melepaskan kemas kini, dari model baru yang terobosan ke peralihan penting di LE

Menjual Strategi AI kepada Pekerja: Manifesto CEO Shopify Menjual Strategi AI kepada Pekerja: Manifesto CEO Shopify Apr 10, 2025 am 11:19 AM

Memo CEO Shopify Tobi Lütke baru -baru ini dengan berani mengisytiharkan penguasaan AI sebagai harapan asas bagi setiap pekerja, menandakan peralihan budaya yang signifikan dalam syarikat. Ini bukan trend seketika; Ini adalah paradigma operasi baru yang disatukan ke p

GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? Apr 13, 2025 am 10:18 AM

Pengenalan OpenAI telah mengeluarkan model barunya berdasarkan seni bina "strawberi" yang sangat dijangka. Model inovatif ini, yang dikenali sebagai O1, meningkatkan keupayaan penalaran, yang membolehkannya berfikir melalui masalah MOR

Panduan Komprehensif untuk Model Bahasa Visi (VLMS) Panduan Komprehensif untuk Model Bahasa Visi (VLMS) Apr 12, 2025 am 11:58 AM

Pengenalan Bayangkan berjalan melalui galeri seni, dikelilingi oleh lukisan dan patung yang terang. Sekarang, bagaimana jika anda boleh bertanya setiap soalan dan mendapatkan jawapan yang bermakna? Anda mungkin bertanya, "Kisah apa yang anda ceritakan?

3 Kaedah untuk menjalankan Llama 3.2 - Analytics Vidhya 3 Kaedah untuk menjalankan Llama 3.2 - Analytics Vidhya Apr 11, 2025 am 11:56 AM

Meta's Llama 3.2: Powerhouse AI Multimodal Model multimodal terbaru Meta, Llama 3.2, mewakili kemajuan yang ketara dalam AI, yang membanggakan pemahaman bahasa yang dipertingkatkan, ketepatan yang lebih baik, dan keupayaan penjanaan teks yang unggul. Keupayaannya t

Penyusunan Tahunan Terkini Teknik Kejuruteraan Terbaik Penyusunan Tahunan Terkini Teknik Kejuruteraan Terbaik Apr 10, 2025 am 11:22 AM

Bagi anda yang mungkin baru dalam lajur saya, saya secara meluas meneroka kemajuan terkini di AI di seluruh papan, termasuk topik seperti yang terkandung AI, penaakulan AI, terobosan berteknologi tinggi di AI, kejuruteraan segera, latihan AI, Fielding of AI, AI Re Re,

See all articles