使用Pydantic構建結構化研究自動化系統
在學術研究的動態領域,有效的信息收集,綜合和演示至關重要。文獻綜述的手動過程是耗時的,阻礙了更深入的分析。由Pydantic構建的多機構研究助理系統提供了一個複雜的解決方案:專門的代理商合作,可模塊化地處理複雜的任務。但是,管理多個代理需要仔細考慮數據一致性,驗證和通信。這種基於pydantic的系統通過執行強大的數據模式,改進數據處理並簡化系統複雜性來解決這些挑戰。
本文詳細介紹了使用Pydantic的結構化多代理研究助理的構建,該研究助理整合了Pydantic-AI和Arxiv等工具。我們將提供逐步的代碼解釋和預期結果。
關鍵學習目標
- 掌握在pydantic驅動的多代理研究助理中,對於可靠的代理間溝通中的結構化數據建模的重要性。
- 使用Pydantic定義和實施結構化數據模式,以進行無縫集成,模塊化代理編排和有效的自動化研究工作流程。
- 設計和編排用於特定任務的模塊化代理:查詢細化,數據檢索,關鍵字提取和摘要。
- 通過結構化代理相互作用將外部API(例如ARXIV)集成到自動化工作流中。
- 直接從結構化代理輸出中生成高質量的輸出(例如PDF報告),從而增強了自動化研究工作流的實際實用性。
本文是數據科學博客馬拉鬆的一部分。
目錄
- 用pydantic定義數據模型
- 構建多代理框架
- 使用及時處理器代理來完善查詢
- 紙質檢索代理有效檢索
- 用關鍵字提取代理提取關鍵字
- 用摘要代理簡明摘要
- 編排代理
- 產生專業產出
- 實際例子
- 結論
- 常見問題
用pydantic定義數據模型
定義明確的數據模型在多代理系統中至關重要。代理之間的一致,可預測的數據交換至關重要。 Pydantic通過提供直接定義Python中數據模式,確保數據一致性,減少運行時錯誤並實現無縫驗證的直接方法來優雅地解決此問題。
這是使用Pydantic結構化數據模型的示例:
來自Pydantic Import Basemodel,field 類Papermetadata(basemodel): 標題:str =字段(...,description =“紙質標題”) 摘要:str =字段(...,描述=“紙張摘要”) 作者:列表[str] = field(...,description =“作者列表”) publication_date:str = field(...,description =“出版日期”)
現場解釋
-
title
:紙質標題,可輕鬆參考和組織。 -
abstract
:關鍵字提取和摘要的簡明摘要。 -
authors
:作者列表以進行進一步查詢或引文跟踪。 -
publication_date
:分類和過濾的出版日期。
我們的系統包括五個代理:
- 及時處理器代理
- 紙取回劑
- 關鍵字提取代理
- 摘要代理
- 路由器(編排)代理
這些試劑使用Pydantic定義的模型進行交流,確保可預測和驗證的數據,最大程度地減少錯誤並增強系統魯棒性。
我們將深入研究每個代理的實現,角色和預期輸出。
構建多代理框架
在Pydantic數據模型的基礎上,我們現在檢查了多代理框架。每個代理都有特定的角色,並與他人無縫互動。
代理角色
- 及時處理器代理:完善用戶查詢以提高搜索相關性。
- 紙情況檢索代理:從外部數據庫(如Arxiv)中檢索相關論文。
- 關鍵字提取代理:從紙張摘要中提取關鍵術語。
- 摘要代理:生成紙張摘要的簡明摘要。
- 路由器代理(編排):協調工作流程,管理通信和數據流。
代理相互作用
代理依次相互作用:
- 及時處理器完善了用戶查詢。
- 精製查詢將發送到紙質檢索代理。
- 路由器將摘要發送到關鍵字提取和摘要代理。
- 路由器將結果彙編為最終報告。
這種模塊化設計可確保可維護性和可擴展性。可以獨立改進或更換代理。我們將探索每個代理的實現。
使用及時處理器代理提煉研究查詢
精確查詢對於有效搜索至關重要。及時處理器代理會完善用戶查詢,以提高學術數據庫結果的相關性。
這是及時的處理器代理實施:
@strump_processor_agent.tool 異步DEF PROCESS_PROMPT(CTX:RUNCONTEXT [researchContext],主題:str) - > str:> str: 主題= toble.strip()。下() 如果在主題中“”: 子主題= topic.split('in') main_topic =子主題[0] .STRIP() 上下文=子主題[1] .STRIP() rifined_query = f“ all:{main_topic}和cat:{context.replace('','_'')}” 別的: 精製= f“ ti:\” {topip} \“或abs:\” {topip} \“” 返回精煉_Query
改進的實現使輸入歸一化,解析上下文提示(“在”),構建結構化查詢,並包括有關更廣泛主題的後備處理。這會導致更精確的搜索。
用紙質檢索代理有效地獲取研究論文
論文檢索代理與外部API(如Arxiv)相互作用,以根據精製查詢檢索相關論文。它使用Pydantic模型來一致的數據處理。
@paper_retrieval_agent.tool 異步def fetch_papers(ctx:runcontext [researchContext]) - > list [papermetadata]: 搜索= arxiv.Search(query = ctx.deps.query,max_results = 5,sort_by = arxiv.sortcriterion.submitteddate) 結果= list(search.results()) 論文= [] 結果結果: 如果hasattr(結果,“已發布”)和結果。發布並非沒有其他“未知” paper = papermetadata(title = result.title,abract.sust.summary,authors = [作者in result.authors in result.authors],publication_date = publined_date = publined_str) 論文。附錄(紙) 返回論文
Pydantic確保數據驗證和一致性,從而簡化下游處理。
用關鍵字提取代理提取有價值的關鍵字
關鍵字提取代理從摘要中標識關鍵術語,以幫助研究人員快速評估紙張相關性。
@keyword_extraction_agent.tool 異步def extract_keywords(ctx:runcontext [researchContext],摘要:str) - > keywordresult: 單詞= Abstract.split() sew = set() unique_words = [] 用單詞詞: 歸一化= Word.Strip('。,;:“()')。下() 如果將歸一化和標準化,則不可見: SEED.ADD(歸一化) unique_words.append(歸一化) 如果len(unique_words)> = 5: 休息 返回keywordresult(keywords = unique_words)
這是一個簡化的示例;生產系統將使用更先進的NLP技術。 Pydantic保持結構化的,一致的輸出。
用摘要代理簡化論文
摘要代理生成了摘要的簡潔摘要。
@summary_agent.tool async def summarize_paper(ctx:runcontext [researchContext],摘要:str) - > papersummary: summary_text =摘要[:150] 返回論文(摘要= summary_text)
這是一個基本示例;高級摘要模型可以顯著提高摘要的質量。
將所有內容融合在一起:代理編排
路由器代理協調整個工作流程。
@router_agent.tool 異步def Orchestrate_workflow(ctx:runcontext [researchContext]) - > str: repined_query =等待提示 論文=等待paper_retrieval_agent.run(rupined_query.data,deps = ctx.deps) 響應=“最終報告:\ n” 對於紙張中的紙。 data: 關鍵字=等待關鍵word_extraction_agent.run(paper.abstract,deps = ctx.deps) 摘要=等待summary_agent.run(paper.abstract,deps = ctx.deps) 響應=(( f“ \ ntitle:{paper.title} \ n” f“關鍵字:{keywords.data.keywords} \ n” f“摘要:{summary.data.summary} \ n” ) 返迴響應
這使用異步操作提高效率。結構化的記錄輔助調試。
通過結構化數據生成專業輸出
結構化數據將轉換為專業的PDF報告。
def generate_pdf_report(report_text:str,output_filename:str =“ final_report.pdf”): 導入Markdown2 從XHTML2PDF導入PISA html_text = markdown2.markdown(report_text) 使用opent(output_filename,“ wb”)作為result_file: pisa.createpdf(html_text,dest = result_file)
這利用結構化數據可輕鬆轉換為可讀的PDF。
動作中的多代理系統:實踐示例
通過示例證明了系統的有效性。 (此處將包括示例,顯示該系統的不同研究主題的輸出。)
結論
這款由Pydantic構建的多代理研究助理系統有效地自動化了研究工作流程並生成專業報告。 Pydantic的結構化數據處理是系統可靠性和可擴展性的關鍵。
常見問題
(此處將包括常見問題解答,解決有關係統的常見問題。)
(注意:圖像和代碼片段是佔位符。需要單獨提供完整的代碼。)
以上是使用Pydantic構建結構化研究自動化系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在從事代理AI時,開發人員經常發現自己在速度,靈活性和資源效率之間進行權衡。我一直在探索代理AI框架,並遇到了Agno(以前是Phi-

該版本包括三種不同的型號,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,標誌著向大語言模型景觀內的特定任務優化邁進。這些模型並未立即替換諸如

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

解鎖嵌入模型的力量:深入研究安德魯·NG的新課程 想像一個未來,機器可以完全準確地理解和回答您的問題。 這不是科幻小說;多虧了AI的進步,它已成為R

模擬火箭發射的火箭發射:綜合指南 本文指導您使用強大的Python庫Rocketpy模擬高功率火箭發射。 我們將介紹從定義火箭組件到分析模擬的所有內容

雙子座是Google AI策略的基礎 雙子座是Google AI代理策略的基石,它利用其先進的多模式功能來處理和生成跨文本,圖像,音頻,視頻和代碼的響應。由DeepM開發

“超級樂於宣布,我們正在購買花粉機器人,以將開源機器人帶到世界上,” Hugging Face在X上說:“自從Remi Cadene從Tesla加入我們以來,我們已成為開放機器人的最廣泛使用的軟件平台。

在AI社區的重大發展中,Agentica和AI共同發布了一個名為DeepCoder-14B的開源AI編碼模型。與OpenAI等封閉源競爭對手提供代碼生成功能
