在當今的數據驅動世界中,組織依靠數據分析師來解釋複雜的數據集,發現可行的見解和推動決策。但是,如果我們可以使用AI提高此過程的效率和可擴展性怎麼辦?輸入數據分析代理,以自動化分析任務,執行代碼並自適應響應數據查詢。 Langgraph,Crewai和Autogen是用於建造AI代理的三個流行框架。我們將在本文中使用並比較這三個,以構建簡單的數據分析代理。
目錄
- 數據分析代理的工作
- 用Langgraph構建數據分析代理
- 先決條件
- 用langgraph構建數據分析代理的步驟
- 1。導入必要的庫。
- 2。讓我們定義狀態。
- 3。定義LLM和代碼執行函數,並將功能綁定到LLM。
- 4。定義代理回复的函數,並將其添加為圖表的節點。
- 5。定義工具節並將其添加到圖表中。
- 6.讓我們還添加內存,以便我們可以與代理商聊天。
- 7。編譯並顯示圖。
- 8。現在我們可以開始聊天。由於我們添加了內存,因此我們將為每個對話一個唯一的線程_id,並在該線程上啟動對話。
- 用Crewai建立數據分析代理
- 1。導入必要的庫。
- 2。我們將構建一個代理,用於生成代碼,另一個用於執行該代碼。
- 3。要執行代碼,我們將使用PythonRepl()。將其定義為CREWAI工具。
- 4。定義執行代理和任務,並訪問repl and fileReadTool()
- 5。用代理和相應的任務構建工作人員。
- 6。使用以下輸入運行船員。
- 用自動源建立數據分析代理
- 1。導入必要的庫。
- 2。定義代碼執行程序和使用代碼執行程序的代理。
- 3。定義一個用自定義系統消息編寫代碼的代理。
- 4。定義解決和啟動聊天的問題。
- 5。我們還可以使用此代碼打印我們及其答案(如果需要)的問題。
- Langgraph vs Crewai vs Autogen
- 常見問題
數據分析代理的工作
數據分析代理將首先從用戶中獲取查詢並生成代碼以讀取文件並分析文件中的數據。然後,生成的代碼將使用Python Repl工具執行。代碼的結果發送回代理。然後,代理分析從代碼執行工具中收到的結果,並回復了用戶查詢。 LLM可以生成任意代碼,因此我們必須在本地環境中仔細地執行LLM生成的代碼。
用Langgraph構建數據分析代理
如果您是這個主題的新手或希望掌握您對Langgraph的了解,我建議這篇文章:Langgraph是什麼?
先決條件
在構建代理之前,請確保您擁有必要的API鍵。
加載.ENV文件,並帶有所需的API鍵。
來自dotenv import load_dotenv load_dotenv(./ env)
需要關鍵庫
Langchain - 0.3.7
蘭鏈實驗 - 0.3.3
Langgraph - 0.2.52
CREWAI - 0.80.0
Crewai-Tools - 0.14.0
Autogen-Agentchat - 0.2.38
現在我們都設定了,讓我們開始建立代理商。
用langgraph構建數據分析代理的步驟
1。導入必要的庫。
導入大熊貓作為pd 從ipython.display導入圖像,顯示 從輸入導入列表,文字,可選,打字,註釋 來自langchain_core.tools導入工具 來自langchain_core.messages導入工具 來自langchain_exeperiment.utilities導入pythonrepl 來自langchain_openai進口chatopenai 摘自langgraph.graph Import stategraph,開始,結束 來自langgraph.graph.message導入add_messages 來自langgraph.prebuilt導入工具節,tools_condition 來自langgraph.checkpoint.memory Import MemorySaver
2。讓我們定義狀態。
班級狀態(鍵入): 消息:註釋[list,add_messages] graph_builder = stategraph(狀態)
3。定義LLM和代碼執行函數,並將功能綁定到LLM。
llm = chatopenai(型號=“ gpt-4o-mini”,溫度= 0.1) @工具 def python_repl(代碼:註釋[str,“ fileName” fileName旨在讀取“來自”]): “”“使用它執行從文件中讀取Python代碼。如果要查看值的輸出, 確保您正確閱讀了代碼 您應該用``打印(...)'打印出來。用戶可以看到這一點。”“” 嘗試: 結果= pythonrepl()。運行(代碼) 打印(“結果代碼執行:”,結果) 除了baseexception作為e: 返回f“無法執行。錯誤:{repr(e)}” 返回f“執行:\ n``python \ n {code} \ n````` llm_with_tools = llm.bind_tools([python_repl])
4。定義代理回复的函數,並將其添加為圖表的節點。
DEF聊天機器人(狀態:狀態): 返回{“消息”:[llm_with_tools.invoke(state [“ message”])]}} graph_builder.add_node(“代理”,聊天機器人)
5。定義工具節並將其添加到圖表中。
code_execution = toolnode(工具= [python_repl]) graph_builder.add_node(“工具”,code_execution)
如果LLM返回工具調用,我們需要將其路由到工具節點。否則,我們可以結束它。讓我們定義一個路由函數。然後,我們可以添加其他邊緣。
DEF ROUTE_TOOLS(狀態:狀態): ”“” 如果最後一條消息,則在條件_EDDED中路由到工具節 有工具調用。否則,路線到達末端。 ”“” 如果IsInstance(狀態,列表): ai_message = state [-1] elif消息:= state.get(“消息”,[]): ai_message =消息[-1] 別的: 提高ValueError(f“在輸入狀態中未找到to tool_edge:{state}”) 如果hasattr(ai_message,“ tool_calls”)和len(ai_message.tool_calls)> 0: 返回“工具” 返回結束 graph_builder.add_conditional_edges( “代理人”, Route_tools, {“工具”:“工具”,end:end}, ) graph_builder.add_edge(“工具”,“代理”)
6.讓我們還添加內存,以便我們可以與代理商聊天。
內存= MemorySaver() graph = graph_builder.compile(checkpointer =內存)
7。編譯並顯示圖。
graph = graph_builder.compile(checkpointer =內存) display(圖像(graph.get_graph()。draw_mermaid_png()))
8。現在我們可以開始聊天。由於我們添加了內存,因此我們將為每個對話一個唯一的線程_id,並在該線程上啟動對話。
config = {“ configurable”:{“ thread_id”:“ 1”}} def stream_graph_updates(user_input:str): 事件= graph.stream( {“消息”:[(“用戶”,user_input)]},config,stream_mode =“ values” ) 對於活動中的事件: 事件[“消息”] [ - 1] .pretty_print() 而真: user_input =輸入(“用戶:”) 如果在[“退出”,“退出”,“ q”]中使用USER_INPUT.LOWER(): 打印(“再見!”) 休息 stream_graph_updates(user_input)
循環運行時,我們首先提供文件的路徑,然後根據數據提出任何問題。
輸出將如下:
由於我們包含了內存,因此我們可以在聊天中的數據集上提出任何問題。代理將生成所需的代碼,並將執行代碼。代碼執行結果將發送回LLM。一個示例如下所示:
另請閱讀:如何使用langgraph創建個性化的新聞摘要代理
用Crewai建立數據分析代理
現在,我們將使用CREWAI進行數據分析任務。
1。導入必要的庫。
來自Crewai進口代理,任務,機組人員 來自Crewai.Tools導入工具 來自crewai_tools import dimentoreReadTool,fileReadTool 來自langchain_exeperiment.utilities導入pythonrepl
2。我們將構建一個代理,用於生成代碼,另一個用於執行該代碼。
coding_agent =代理( 角色=“ Python開發人員”, 目標=“工藝精心設計和經過思考的代碼來回答給定的問題”, BackStory =“”“您是一位高級Python開發人員,在軟件及其最佳實踐方面擁有豐富的經驗。 您有編寫乾淨,高效和可擴展代碼的專業知識。 ”“”, llm ='gpt-4o', human_input = true, ) coding_task =任務( 描述=“”“寫代碼以回答給定的問題 將代碼輸出分配給“結果”變量 問題:{問題}, ”“”, Excection_output =“代碼要獲得問題的結果。代碼的輸出應分配給'結果'變量', 代理= coding_agent )
3。要執行代碼,我們將使用PythonRepl()。將其定義為CREWAI工具。
@Tool(“ repl”) DEF REPL(代碼:Str) - > str: ”“”“對執行python代碼有用” 返回pythonrepl()。運行(命令=代碼)
4。定義執行代理和任務,並訪問repl and fileReadTool()
executing_agent = agent( 角色=“ python executor”, 目標=“運行接收的代碼以回答給定的問題”, BackStory =“”“您是一名Python開發人員,在軟件及其最佳實踐方面擁有豐富的經驗。 “您可以有效地執行代碼,調試和優化Python解決方案。”“,”, llm ='gpt-4o-mini', human_input = true, 工具= [repl,filereadtool()] ) executing_task =任務( description =“”“執行代碼以回答給定的問題 將代碼輸出分配給“結果”變量 問題:{問題}, ”“”, Expectig_output ='問題的結果', 代理= executing_agent )
5。用代理和相應的任務構建工作人員。
分析_CREW = CREW( 代理= [coding_agent,recuting_agent], tasks = [coding_task,recuting_task], 冗長= true )
6。使用以下輸入運行船員。
inputs = {'問題':“”“讀取此文件並返回列名並找到平均年齡 “/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv”“,} 結果= Analysis_crew.kickoff(輸入=輸入) 打印(result.raw)
這是輸出的外觀:
另請閱讀:在沒有CREWAI的無代碼的情況下,即時建立LLM代理商
用自動源建立數據分析代理
1。導入必要的庫。
來自自動進口的對話 從Autogen。編碼導入LocalCommandlineCodeexeexecutor,DockerCommandlineCodeeXecutor
2。定義代碼執行程序和使用代碼執行程序的代理。
opecutor = localcommandlinecodeexecutor( 超時= 10,每個代碼執行的#及時在幾秒鐘內執行。 work_dir ='。/data',#使用目錄存儲代碼文件。 ) code_executor_agent = conversableAgent( “ code_executor_agent”, llm_config = false, code_execution_config = {“ executor”:executor}, human_input_mode =“始終”, )
3。定義一個用自定義系統消息編寫代碼的代理。
從https://microsoft.github.io/autogen/0.2/docs/tutorial/code-executors/獲取Code_writer系統消息。
code_writer_agent = conversableAgent( “ code_writer_agent”, system_message = code_writer_system_message, llm_config = {“ config_list”:[{“ model”:“ gpt-4o-mini”}]},}, code_execution_config = false, )
4。定義解決和啟動聊天的問題。
問題=“”“”在路徑'/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv'上讀取文件 並打印人民的平均年齡。”“” chat_result = code_executor_agent.initiate_chat( code_writer_agent, 消息=問題, )
聊天開始後,我們還可以在上述數據集上提出任何後續問題。如果代碼遇到任何錯誤,我們可以要求修改代碼。如果代碼很好,我們只需按“ Enter”繼續執行代碼。
5。我們還可以使用此代碼打印我們及其答案(如果需要)的問題。
有關chat_result.chat_history中的消息: 如果消息['角色'] =='助手': 如果“ exitCode”未在消息['content']中: 打印(消息['content']) 打印('\ n') 別的: 如果在消息['content']中的“終止”: 打印(消息['content']) 列印("----------------------------------------")
這是結果:
另請閱讀:使用Autogen建立多代理聊天機器人的動手指南
Langgraph vs Crewai vs Autogen
現在,您已經學會了使用所有3個框架來構建數據分析代理,讓我們探索它們之間的差異,在代碼執行方面:
框架 | 關鍵功能 | 優勢 | 最適合 |
---|---|---|---|
Langgraph | - 基於圖的結構(節點代表代理/工具,邊緣定義相互作用) - 與PythonRepl的無縫集成 |
- 高度靈活地創建結構化的多步驟工作流程 - 安全有效的代碼執行,並跨任務保存內存 |
需要清晰,可自定義的工作流程的複雜,流程驅動的分析任務 |
CREWAI | - 以協作為中心 - 與預定義的角色並行工作的多個代理 - 與Langchain工具集成 |
- 面向任務的設計 - 非常適合團隊合作和角色專業化 - 使用PythonRepl支持安全可靠的代碼執行 |
協作數據分析,代碼審核設置,任務分解和基於角色的執行 |
自動基因 | - 動態和迭代代碼執行 - 可說明互動執行和調試的代理 - 內置聊天功能 |
- 自適應和對話工作流程 - 專注於動態互動和調試 - 快速原型和故障排除的理想 |
快速原型製作,故障排除以及任務和需求經常發展的環境 |
結論
在本文中,我們演示瞭如何使用Langgraph,Crewai和Autogen構建數據分析代理。這些框架使代理能夠生成,執行和分析代碼以有效地解決數據查詢。通過使重複任務自動化,這些工具使數據分析更快,更可擴展。模塊化設計允許根據特定需求進行自定義,使其對數據專業人員很有價值。這些代理展示了AI的潛力簡化工作流並輕鬆從數據中提取見解。
要了解有關AI代理商的更多信息,請查看我們的獨家代理AI先驅計劃!
常見問題
Q1。使用Langgraph,Crewai和Autogen等AI框架進行數據分析的主要好處是什麼?答:這些框架可自動化代碼生成和執行,從而更快地數據處理和洞察力。他們簡化了工作流程,減少手動努力並提高數據驅動的任務的生產力。
Q2。這些數據分析代理可以處理多個數據集或複雜的查詢嗎?答:是的,可以定制代理來通過集成適當的工具並調整其工作流程來處理各種數據集和復雜的分析查詢。
Q3。執行LLM生成的代碼時應採取哪些預防措施?A. LLM生成的代碼可能包括錯誤或不安全的操作。始終在受控環境中驗證代碼,以確保執行前的準確性和安全性。
Q4。內存集成如何增強這些數據分析代理?答:內存集成使代理可以保留過去相互作用的上下文,從而在復雜或多步查詢中實現自適應響應和連續性。
Q5。這些數據分析代理可以自動化哪些類型的任務?答:這些代理可以自動化任務,例如讀取文件,執行數據清潔,生成摘要,執行統計分析並回答有關數據的詢問。
以上是Langchain與Crewai vs Autogen建立數據分析代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

自2008年以來,我一直倡導這輛共享乘車麵包車,即後來被稱為“ Robotjitney”,後來是“ Vansit”,這是城市運輸的未來。 我預見這些車輛是21世紀的下一代過境解決方案Surpas

革新結帳體驗 Sam's Club的創新性“ Just Go”系統建立在其現有的AI驅動“掃描和GO”技術的基礎上,使會員可以在購物旅行期間通過Sam's Club應用程序進行掃描。

NVIDIA在GTC 2025上的增強可預測性和新產品陣容 NVIDIA是AI基礎架構的關鍵參與者,正在專注於提高其客戶的可預測性。 這涉及一致的產品交付,達到績效期望以及

Google的Gemma 2:強大,高效的語言模型 Google的Gemma語言模型家族以效率和性能而慶祝,隨著Gemma 2的到來而擴展。此最新版本包括兩種模型:270億個參數VER

這一領先的數據劇集以數據科學家,天體物理學家和TEDX演講者Kirk Borne博士為特色。 Borne博士是大數據,AI和機器學習的著名專家,為當前狀態和未來的Traje提供了寶貴的見解

這次演講中出現了一些非常有見地的觀點——關於工程學的背景信息,這些信息向我們展示了為什麼人工智能如此擅長支持人們的體育鍛煉。 我將從每位貢獻者的觀點中概括出一個核心思想,以展示三個設計方面,這些方面是我們探索人工智能在體育運動中應用的重要組成部分。 邊緣設備和原始個人數據 關於人工智能的這個想法實際上包含兩個組成部分——一個與我們放置大型語言模型的位置有關,另一個與我們人類語言和我們的生命體徵在實時測量時“表達”的語言之間的差異有關。 Alexander Amini 對跑步和網球都很了解,但他還

卡特彼勒(Caterpillar)的首席信息官兼高級副總裁傑米·恩格斯特(Jamie Engstrom)領導了一支由28個國家 /地區的2200多名IT專業人員組成的全球團隊。 在卡特彼勒(Caterpillar)工作了26年,其中包括她目前的四年半,Engst

Google Photos的新Ultra HDR工具:快速指南 使用Google Photos的新型Ultra HDR工具增強照片,將標準圖像轉換為充滿活力的高動態範圍傑作。對於社交媒體而言,此工具可提高任何照片的影響,


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。