Rumah >Peranti teknologi >AI >Langchain vs Crewai vs Autogen untuk membina ejen analisis data
Dalam dunia yang didorong oleh data hari ini, organisasi bergantung kepada penganalisis data untuk mentafsirkan dataset yang kompleks, mengungkap pandangan yang boleh dilakukan, dan memacu membuat keputusan. Tetapi bagaimana jika kita dapat meningkatkan kecekapan dan skalabilitas proses ini menggunakan AI? Masukkan ejen analisis data, untuk mengautomasikan tugas analisis, laksanakan kod, dan menyesuaikan diri dengan pertanyaan data. Langgraph, Crewai, dan Autogen adalah tiga kerangka popular yang digunakan untuk membina agen AI. Kami akan menggunakan dan membandingkan ketiga -tiga dalam artikel ini untuk membina ejen analisis data yang mudah.
Ejen analisis data akan mula mengambil pertanyaan dari pengguna dan menghasilkan kod untuk membaca fail dan menganalisis data dalam fail. Kemudian kod yang dihasilkan akan dilaksanakan menggunakan alat Python Repl. Hasil kod dihantar kembali ke ejen. Ejen kemudian menganalisis hasil yang diterima daripada alat pelaksanaan kod dan balasan kepada pertanyaan pengguna. LLMS boleh menjana kod sewenang-wenangnya, jadi kita mesti dengan teliti melaksanakan kod yang dihasilkan oleh LLM dalam persekitaran tempatan.
Sekiranya anda baru dalam topik ini atau ingin menyikat pengetahuan anda tentang Langgraph, inilah artikel yang saya cadangkan: Apa itu Langgraph?
Sebelum ejen bangunan, pastikan anda mempunyai kunci API yang diperlukan untuk LLM yang diperlukan.
Muatkan fail .env dengan kekunci API yang diperlukan.
dari dotenv import load_dotenv load_dotenv (./ env)
Perpustakaan utama diperlukan
Langchain - 0.3.7
Langchain-Experimental-0.3.3
Langgraph - 0.2.52
Crewai - 0.80.0
Crewai-Tools-0.14.0
Autogen-Agentchat-0.2.38
Sekarang kita sudah bersedia, mari kita mula membina ejen kita.
Import Pandas sebagai PD dari ipython.display imej import, paparan dari menaip senarai import, literal, pilihan, typeddict, annotated dari Langchain_Core.Tools Alat Import dari langchain_core.Messages Import Toolmessage dari langchain_experimental.Utilities import pythonrepl dari langchain_openai import chatopenai dari Langgraph.graph Import Stategraph, Start, End dari langgraph.graph.message import add_messages dari Langgraph.Prebuilt Import Toolnode, Tools_Condition dari langgraph.checkpoint.Memory Import MemorySaver
Negeri Kelas (TypedDict): Mesej: Annotated [Senarai, add_messages] graph_builder = stategraph (Negeri)
LLM = chatopenai (model = "GPT-4O-Mini", suhu = 0.1) @tool def python_repl (kod: annotated [str, "nama fail untuk membaca kod dari"]): "" "Gunakan ini untuk melaksanakan kod python baca dari fail. Jika anda ingin melihat output nilai, Pastikan anda membaca kod dari dengan betul Anda harus mencetaknya dengan `cetak (...)`. Ini dapat dilihat oleh pengguna. "" " Cuba: hasil = pythonrepl (). lari (kod) Cetak ("Pelaksanaan Kod Hasil:", Hasil) Kecuali BaseException sebagai E: kembali f "gagal melaksanakan. Ralat: {repr (e)}" kembali f "dilaksanakan: \ n```python \ n {code} \ n``` \ nstdout: {result}" llm_with_tools = llm.bind_tools ([python_repl])
Def Chatbot (Negeri: Negeri): kembali {"mesej": [llm_with_tools.invoke (state ["mesej"])]} graph_builder.add_node ("ejen", chatbot)
code_execution = toolNode (tools = [python_repl]) graph_builder.add_node ("Alat", code_execution)
Jika LLM mengembalikan panggilan alat, kita perlu mengarahkannya ke nod alat; Jika tidak, kita boleh menamatkannya. Mari kita tentukan fungsi untuk penghalaan. Kemudian kita boleh menambah tepi lain.
def route_tools (negeri: negeri,): "" " Gunakan di Conditional_Edge untuk mengarah ke alat alat jika mesej terakhir mempunyai panggilan alat. Jika tidak, laluan hingga akhir. "" " Sekiranya Isinstance (Negeri, Senarai): ai_message = state [-1] Mesej ELIF: = State.get ("Mesej", []): ai_message = mesej [-1] lain: Naikkan ValueError (F "Tiada mesej yang terdapat dalam keadaan input ke Tool_Edge: {State}") jika hasattr (ai_message, "tool_calls") dan len (ai_message.tool_calls)> 0: Kembali "Alat" kembali akhir graph_builder.add_conditional_edges ( "ejen", route_tools, {"Alat": "Alat", Akhir: Akhir}, ) graph_builder.add_edge ("Alat", "Agen")
Memory = MemorySaver () graf = graph_builder.compile (checkPointer = memori)
graf = graph_builder.compile (checkPointer = memori) paparan (imej (graph.get_graph (). Draw_mermaid_png ()))
config = {"configurable": {"thread_id": "1"}} def stream_graph_updates (user_input: str): peristiwa = graf.stream ( {"Mesej": [("User", user_input)]}, config, stream_mode = "nilai" ) untuk acara dalam acara: Acara ["Mesej"] [-1] .pretty_print () Walaupun benar: user_Input = input ("Pengguna:") jika user_input.lower () dalam ["berhenti", "keluar", "q"]: Cetak ("Selamat tinggal!") rehat stream_graph_updates (user_input)
Semasa gelung sedang berjalan, kita mulakan dengan memberikan laluan fail dan kemudian meminta sebarang pertanyaan berdasarkan data.
Output akan menjadi seperti berikut:
Seperti yang kita telah memasukkan ingatan, kita boleh mengemukakan sebarang pertanyaan mengenai dataset dalam sembang. Ejen akan menjana kod yang diperlukan dan kod akan dilaksanakan. Hasil pelaksanaan kod akan dihantar kembali ke LLM. Contohnya ditunjukkan di bawah:
Juga Baca: Cara Membuat Ejen Berita Digest Peribadi Anda Dengan LangGraph
Sekarang, kami akan menggunakan Crewai untuk tugas analisis data.
dari ejen import krew, tugas, krew dari alat import krewi.tools Dari krewi_tools import directoryreadtool, fileReadtool dari langchain_experimental.Utilities import pythonrepl
coding_agent = agen ( Peranan = "Pemaju Python", matlamat = "Kraf kod yang direka dengan baik dan pemikiran untuk menjawab masalah yang diberikan", BackStory = "" "Anda adalah pemaju python kanan dengan pengalaman luas dalam perisian dan amalan terbaiknya. Anda mempunyai kepakaran dalam menulis kod bersih, cekap, dan berskala. "" ", LLM = 'GPT-4O', human_input = benar, ) coding_task = tugas ( Penerangan = "" "Tulis kod untuk menjawab masalah yang diberikan Berikan output kod kepada pemboleh ubah 'hasil' Masalah: {masalah}, "" ", dijangka_output = "kod untuk mendapatkan hasil untuk masalah. Output kod harus diberikan kepada pembolehubah 'hasil'", agen = coding_agent )
@tool ("repl") def repl (kod: str) -> str: "" "Berguna untuk melaksanakan kod python" "" kembali pythonRepl (). lari (command = code)
Executing_agent = ejen ( Peranan = "Pelaksana Python", matlamat = "jalankan kod yang diterima untuk menjawab masalah yang diberikan", BackStory = "" "Anda adalah pemaju python dengan pengalaman luas dalam perisian dan amalan terbaiknya. "Anda boleh melaksanakan kod, debug, dan mengoptimumkan penyelesaian Python dengan berkesan." "" LLM = 'GPT-4O-MINI', human_input = benar, Alat = [Repl, FileReadTool ()] ) EXECUBTING_TASK = tugas ( Penerangan = "" "Jalankan kod untuk menjawab masalah yang diberikan Berikan output kod kepada pemboleh ubah 'hasil' Masalah: {masalah}, "" ", diharapkan_output = 'hasil untuk masalah', agen = executing_agent )
analisis_crew = krew ( ejen = [coding_agent, executing_agent], tugas = [coding_task, executing_task], verbose = benar )
input = {'masalah': "" "Baca fail ini dan kembalikan nama lajur dan cari umur min "/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv" "",} hasil = analisis_crew.kickoff (input = input) cetak (result.raw)
Inilah caranya output akan kelihatan seperti:
Juga Baca: Membina Ejen LLM dengan cepat tanpa kod dengan Crewai
dari import autogen convenableagent dari autogen.Coding Import LocalCommandLineCodeExecutor, DockermandLineCodeExecutor
Executor = LocalCommandLineCodeExecutor ( timeout = 10, # masa untuk setiap pelaksanaan kod dalam beberapa saat. work_dir = './Data', # Gunakan direktori untuk menyimpan fail kod. ) code_executor_agent = convertabeagent ( "code_executor_agent", llm_config = false, code_execution_config = {"Executor": Executor}, human_input_mode = "selalu", )
Ambil mesej sistem code_writer dari https://microsoft.github.io/autogen/0.2/docs/tutorial/code-executors/
code_writer_agent = convertabeagent ( "code_writer_agent", system_message = code_writer_system_message, llm_config = {"config_list": [{"model": "gpt-4o-mini"}]}, code_execution_config = false, )
masalah = "" "Baca fail di jalan '/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv' dan mencetak umur purata rakyat. "" " chat_result = code_executor_agent.initiate_chat ( code_writer_agent, mesej = masalah, )
Sebaik sahaja sembang bermula, kami juga boleh bertanya apa -apa soalan berikutnya mengenai dataset yang disebutkan di atas. Jika kod itu menemui sebarang kesilapan, kita boleh meminta untuk mengubah suai kod tersebut. Jika kod itu baik -baik saja, kita hanya boleh menekan 'Enter' untuk terus melaksanakan kod tersebut.
Untuk mesej di chat_result.chat_history: jika mesej ['peranan'] == 'pembantu': Jika 'ExitCode' tidak dalam mesej ['Kandungan']: cetak (mesej ['kandungan'])) cetak ('\ n') lain: jika 'menamatkan' dalam mesej ['kandungan']: cetak (mesej ['kandungan'])) Cetak ("----------------------------------------")
Inilah hasilnya:
Juga baca: Panduan tangan untuk membina chatbots pelbagai agen dengan autogen
Sekarang bahawa anda telah belajar untuk membina ejen analisis data dengan semua 3 kerangka, mari kita meneroka perbezaan di antara mereka, ketika datang ke pelaksanaan kod:
Rangka Kerja | Ciri -ciri utama | Kekuatan | Paling sesuai untuk |
---|---|---|---|
LangGraph | -Struktur berasaskan graf (nod mewakili ejen/alat, tepi menentukan interaksi) - Integrasi lancar dengan pythonrepl |
-Sangat fleksibel untuk mewujudkan aliran kerja berstruktur, pelbagai langkah - Pelaksanaan kod yang selamat dan cekap dengan pemeliharaan memori merentasi tugas |
Tugas analitik yang didorong oleh kompleks dan proses yang menuntut aliran kerja yang jelas dan disesuaikan |
Crewai | -Fokus kolaborasi - Pelbagai ejen yang bekerja selari dengan peranan yang telah ditetapkan - Bersepadu dengan alat Langchain |
-Reka bentuk berorientasikan tugas - Cemerlang untuk kerja berpasukan dan pengkhususan peranan - Menyokong pelaksanaan kod yang selamat dan boleh dipercayai dengan pythonrepl |
Analisis Data Kerjasama, Penyediaan Kajian Kod, Penguraian Tugas, dan Pelaksanaan Berasaskan Peranan |
Autogen | - Pelaksanaan kod dinamik dan berulang - Ejen yang boleh dibanggakan untuk pelaksanaan dan debug interaktif -Ciri sembang terbina dalam |
- Aliran kerja penyesuaian dan perbualan - Fokus pada interaksi dan debug dinamik - Sesuai untuk prototaip dan penyelesaian masalah pesat |
Prototaip, penyelesaian masalah, dan persekitaran yang cepat di mana tugas dan keperluan sering berubah |
Dalam artikel ini, kami menunjukkan cara membina ejen analisis data menggunakan Langgraph, Crewai, dan Autogen. Rangka kerja ini membolehkan ejen untuk menjana, melaksanakan, dan menganalisis kod untuk menangani pertanyaan data dengan cekap. Dengan mengautomasikan tugas berulang, alat ini menjadikan analisis data lebih cepat dan lebih berskala. Reka bentuk modular membolehkan penyesuaian untuk keperluan khusus, menjadikannya berharga untuk profesional data. Ejen -ejen ini mempamerkan potensi AI untuk memudahkan aliran kerja dan mengekstrak pandangan dari data dengan mudah.
Untuk mengetahui lebih lanjut mengenai ejen AI, periksa program Eksklusif AII Pioneer Eksklusif kami!
A. Rangka kerja ini mengautomasikan penjanaan kod dan pelaksanaan, membolehkan pemprosesan data dan pandangan yang lebih cepat. Mereka menyelaraskan aliran kerja, mengurangkan usaha manual, dan meningkatkan produktiviti untuk tugas yang didorong data.
S2. Bolehkah ejen analisis data ini mengendalikan pelbagai dataset atau pertanyaan kompleks?A. Ya, ejen boleh disesuaikan untuk mengendalikan dataset yang pelbagai dan pertanyaan analisis yang kompleks dengan mengintegrasikan alat yang sesuai dan menyesuaikan aliran kerja mereka.
Q3. Apakah langkah berjaga-jaga yang perlu diambil semasa melaksanakan kod yang dihasilkan oleh LLM?A. Kod yang dihasilkan oleh LLM mungkin termasuk kesilapan atau operasi yang tidak selamat. Sentiasa mengesahkan kod dalam persekitaran terkawal untuk memastikan ketepatan dan keselamatan sebelum pelaksanaan.
Q4. Bagaimanakah integrasi memori meningkatkan ejen analisis data ini?A. Integrasi memori membolehkan ejen mengekalkan konteks interaksi masa lalu, membolehkan tindak balas penyesuaian dan kesinambungan dalam pertanyaan kompleks atau pelbagai langkah.
S5. Apakah jenis tugas yang boleh dilakukan oleh agen analisis data ini?A. Ejen -ejen ini boleh mengautomasikan tugas -tugas seperti membaca fail, melakukan pembersihan data, menghasilkan ringkasan, melaksanakan analisis statistik, dan menjawab pertanyaan pengguna mengenai data.
Atas ialah kandungan terperinci Langchain vs Crewai vs Autogen untuk membina ejen analisis data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!