오늘날의 데이터 중심 세계에서 조직은 데이터 분석가에게 의존하여 복잡한 데이터 세트를 해석하고 실행 가능한 통찰력을 밝히고 의사 결정을 주도합니다. 그러나 AI를 사용 하여이 프로세스의 효율성과 확장 성을 향상시킬 수 있다면 어떨까요? 데이터 분석 에이전트를 입력하고 분석 작업을 자동화하고 코드를 실행하며 데이터 쿼리에 적응 적으로 응답하십시오. Langgraph, Crewai 및 Autogen은 AI 에이전트를 구축하는 데 사용되는 세 가지 인기있는 프레임 워크입니다. 이 기사에서 세 가지를 모두 사용하여 간단한 데이터 분석 에이전트를 구축 할 것입니다.
데이터 분석 에이전트는 먼저 사용자로부터 쿼리를 가져 와서 파일을 읽고 파일의 데이터를 분석 할 코드를 생성합니다. 그런 다음 Python Repl 도구를 사용하여 생성 된 코드가 실행됩니다. 코드의 결과는 에이전트로 다시 전송됩니다. 그런 다음 에이전트는 코드 실행 도구에서받은 결과를 분석하고 사용자 쿼리로 응답합니다. LLM은 임의의 코드를 생성 할 수 있으므로 로컬 환경에서 LLM 생성 코드를 신중하게 실행해야합니다.
이 주제에 익숙하지 않거나 langgraph에 대한 지식을 닦고 싶다면 다음은 추천 할 기사가 있습니다. langgraph는 무엇입니까?
에이전트를 구축하기 전에 필요한 LLM에 필요한 API 키가 있는지 확인하십시오.
필요한 API 키로 .env 파일을로드하십시오.
dotenv import load_dotenv에서 load_dotenv (./ env)
주요 라이브러리가 필요합니다
랭케인 - 0.3.7
랭 체인 실험-0.3.3
Langgraph - 0.2.52
Crewai - 0.80.0
Crewai-Tools-0.14.0
Autogen-AgentChat-0.2.38
이제 우리 모두가 설정되었으므로 에이전트 구축을 시작합시다.
팬더를 PD로 가져옵니다 IPYTHON에서 DISPLAY IMAGE, DISPLAY에서 입력 가져 오기 목록, 리터럴, 선택 사항, typeddict, 주석이 붙어 있습니다 Langchain_core에서 Tools 가져 오기 도구 Langchain_core에서 Messages import thoommessage langchain_experimental.utilities import pythonrepl langchain_openai import Chatopenai에서 langgraph.graph import stategraph, start, end langgraph.graph.message import add_messages에서 langgraph.prebuilt import 도구 노드, Tools_condition에서 langgraph.checkpoint.Memory import MemorySaver에서
클래스 상태 (typeddict) : 메시지 : 주석이 달린 [list, add_messages] Graph_Builder = stateGraph (state)
llm = chatopenai (model = "gpt-4o-mini", 온도 = 0.1) @도구 def python_repl (코드 : 주석이 붙은 [str, "filename from"]) : "" "파일에서 Python 코드를 실행하는 데 사용하십시오. 값의 출력을보고 싶다면, 코드를 올바르게 읽으십시오 `print (...)`로 인쇄해야합니다. 이것은 사용자에게 보입니다. "" " 노력하다: 결과 = pythonrepl (). run (코드) print ( "결과 코드 실행 :", 결과) e로서의 바지 획득을 제외하고 : return f "실행 실패. 오류 : {repr (e)}" return f "실행 : \ n````Python \ n {code} \ n`` \ nstdout : {result}" llm_with_tools = llm.bind_tools ([python_repl])
def chatbot (state : state) : return { "메시지": [llm_with_tools.invoke (state [ "messages"]]} Graph_Builder.add_node ( "에이전트", 챗봇)
Code_Execution = Toolnode (도구 = [Python_Repl]) Graph_Builder.add_node ( "도구", code_execution)
LLM이 도구 통화를 반환하는 경우 도구 노드로 라우팅해야합니다. 그렇지 않으면, 우리는 그것을 끝낼 수 있습니다. 라우팅 기능을 정의해 봅시다. 그런 다음 다른 가장자리를 추가 할 수 있습니다.
def route_tools (state : state,) : "" " 마지막 메시지 인 경우 조건부 _edge에서 툴 노드로 라우팅하는 데 사용합니다. 도구 호출이 있습니다. 그렇지 않으면, 끝으로가는 경로. "" " Isinstance (state, list) 인 경우 : ai_message = state [-1] elif 메시지 : = state.get ( "메시지", []) : ai_message = 메시지 [-1] 또 다른: valueError rase valueError (f "입력 상태에서 도구 _edge : {state}")에있는 메시지가 없습니다. hasattr (ai_message, "tool_calls") 및 len (ai_message.tool_calls)> 0 : "도구"반환 리턴 종료 Graph_Builder.add_conditional_edges ( "대리인", route_tools, { "도구": "도구", 끝 : 끝}, )) Graph_Builder.add_edge ( "도구", "에이전트")
memory = memorySaver () 그래프 = Graph_Builder.comPile (CheckPointer = Memory)
그래프 = Graph_Builder.comPile (CheckPointer = Memory) display (image (graph.get_graph (). draw_mermaid_png ()))
config = { "configurable": { "strand_id": "1"}} def stream_graph_updates (user_input : str) : events = graph.stream ( { "메시지": [( "사용자", user_input)]}, config, stream_mode = "value" )) 이벤트 이벤트 : 이벤트 [ "메시지"] [-1] .pretty_print () 사실이지만 : user_input = input ( "user :") [ "quit", "exit", "q"]에서 user_input.lower () : 인쇄 ( "안녕!") 부서지다 stream_graph_updates (user_input)
루프가 실행되는 동안 파일의 경로를 제공 한 다음 데이터를 기반으로 질문을 시작합니다.
출력은 다음과 같습니다.
메모리를 포함 시켰으므로 채팅의 데이터 세트에 대한 질문을 할 수 있습니다. 에이전트는 필요한 코드를 생성하고 코드가 실행됩니다. 코드 실행 결과는 LLM으로 다시 전송됩니다. 예는 다음과 같습니다.
또한 읽으십시오 : Langgraph와 함께 개인 뉴스 다이제스트 에이전트를 만드는 방법
이제 우리는 데이터 분석 작업에 Crewai를 사용합니다.
Crewai 수입 대리인, 작업, 승무원으로부터 Crewai에서 Tools 가져 오기 도구 Crewai_Tools에서 import DirectoryReadTool, FilEreadTool에서 langchain_experimental.utilities import pythonrepl
coding_agent = 에이전트 ( 역할 = "파이썬 개발자", 목표 = "주어진 문제에 답하기 위해 잘 설계되고 사고 코드를 공예품", Backstory = "" "당신은 소프트웨어 및 모범 사례에 대한 광범위한 경험을 가진 선임 파이썬 개발자입니다. 깨끗하고 효율적이며 확장 가능한 코드를 작성하는 전문 지식이 있습니다. "" ", llm = 'gpt-4o', human_input = true, )) coding_task = task ( description = "" "주어진 문제에 답하기 위해 코드를 작성하십시오 코드 출력을 '결과'변수에 할당하십시오 문제 : {문제}, "" ", expect_output = "문제에 대한 결과를 얻으려는 코드. 코드의 출력은 '결과'변수에 할당되어야합니다. 에이전트 = coding_agent ))
@Tool ( "Repl") def repl (코드 : str) -> str : "" "파이썬 코드 실행에 유용한" "" "" "" "" "" "" "" "" "" 반환 pythonrepl (). run (command = code)
executing_agent = 에이전트 ( 역할 = "Python Executor", 목표 = "주어진 문제에 답하기 위해 수신 된 코드를 실행하십시오", Backstory = "" "당신은 소프트웨어 및 모범 사례에 대한 광범위한 경험을 가진 파이썬 개발자입니다. "코드를 실행, 디버그 및 Python 솔루션을 효과적으로 최적화 할 수 있습니다." ", llm = 'gpt-4o-mini', human_input = true, 도구 = [REPL, FILEREADTOOL ()] )) executing_task = task ( 설명 = "" "주어진 문제에 답하기 위해 코드를 실행하십시오 코드 출력을 '결과'변수에 할당하십시오 문제 : {문제}, "" ", expect_output = '문제의 결과', 에이전트 = executing_agent ))
Analysis_crew = 승무원 ( 에이전트 = [coding_agent, executing_agent], tasks = [coding_task, executing_task], Verbose = true ))
입력 = { '문제': "" ""이 파일을 읽고 열 이름을 반환하고 평균 연령을 찾으십시오. "/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv" "",} result = Analysis_crew.kickoff (입력 = 입력) print (result.raw)
출력의 모습은 다음과 같습니다.
또한 읽기 : Crewai와 함께 코드없이 LLM 에이전트를 즉시 구축하십시오.
Autogen Import에서 대화식 autogen.coding import localCommandlineCodeexecutor, DockerCommandlineCodeexecutor
Executor = LocalCommandlineCodeexecutor ( 타임 아웃 = 10, # 각 코드 실행에 대한 # 시간 초과는 초 만에 실행됩니다. work_dir = './data', # 디렉토리를 사용하여 코드 파일을 저장합니다. )) code_executor_agent = 대화식 ( "code_executor_agent", llm_config = false, code_execution_config = { "executor": executor}, human_input_mode = "항상", ))
https://microsoft.github.io/autogen/0.2/docs/tutorial/code-executors/에서 code_writer 시스템 메시지를 받으십시오.
code_writer_agent = 대화식 ( "code_writer_agent", system_message = code_writer_system_message, llm_config = { "config_list": [{ "model": "gpt-4o-mini"}}, code_execution_config = false, ))
문제 = "" "경로에서 파일을 읽으십시오. 사람들의 평균 연령을 인쇄합니다. "" " chat_result = code_executor_agent.initiate_chat ( code_writer_agent, 메시지 = 문제, ))
채팅이 시작되면 위에서 언급 한 데이터 세트에서 후속 질문을 할 수도 있습니다. 코드에 오류가 발생하면 코드를 수정하도록 요청할 수 있습니다. 코드가 정상이면 'Enter'를 눌러 코드를 계속 실행할 수 있습니다.
chat_result.chat_history의 메시지 : 메시지 [ 'role'] == 'Assistant'인 경우 : 'exitcode'가 메시지에 있지 않은 경우 [ 'content'] : print (메시지 [ 'content']) print ( '\ n') 또 다른: [ 'content']에서 '종료': print (메시지 [ 'content']) 인쇄("----------------------------------------")
결과는 다음과 같습니다.
또한 읽기 : Autogen으로 다중 에이전트 챗봇 구축에 대한 실습 가이드
이제 3 가지 프레임 워크가 모두있는 데이터 분석 에이전트를 구축하는 법을 배웠으므로 코드 실행과 관련하여 차이점을 살펴 보겠습니다.
뼈대 | 주요 기능 | 강점 | 가장 적합합니다 |
---|---|---|---|
랭 그래프 | -그래프 기반 구조 (노드는 에이전트/도구를 나타내고 가장자리는 상호 작용을 정의합니다) - PythonRepl과의 원활한 통합 |
-구조화 된 다단계 워크 플로를 만드는 데 매우 유연합니다 - 작업 전반에 걸쳐 메모리 보존을 통한 안전하고 효율적인 코드 실행 |
명확하고 사용자 정의 가능한 워크 플로우를 요구하는 복잡하고 프로세스 중심의 분석 작업 |
Crewai | -협업 중심 - 사전 정의 된 역할과 병렬로 작업하는 여러 에이전트 - Langchain 도구와 통합됩니다 |
-작업 지향 디자인 - 팀워크 및 역할 전문화에 탁월합니다 - PythonRepl을 사용하여 안전하고 안정적인 코드 실행을 지원합니다 |
공동 데이터 분석, 코드 검토 설정, 작업 분해 및 역할 기반 실행 |
Autogen | - 동적 및 반복 코드 실행 - 대화식 실행 및 디버깅을위한 대화 에이전트 -내장 채팅 기능 |
- 적응 및 대화 워크 플로 - 동적 상호 작용 및 디버깅에 중점을 둡니다 - 빠른 프로토 타이핑 및 문제 해결에 이상적입니다 |
빠른 프로토 타이핑, 문제 해결 및 작업 및 요구 사항이 자주 진화하는 환경 |
이 기사에서는 Langgraph, Crewai 및 Autogen을 사용하여 데이터 분석 에이전트를 구축하는 방법을 시연했습니다. 이러한 프레임 워크를 사용하면 에이전트가 코드를 생성, 실행 및 분석하여 데이터 쿼리를 효율적으로 해결할 수 있습니다. 반복적 인 작업을 자동화함으로써 이러한 도구는 데이터 분석을보다 빠르고 확장 가능하게 만듭니다. 모듈 식 디자인을 사용하면 특정 요구에 맞게 사용자 정의 할 수 있으므로 데이터 전문가에게 가치가 있습니다. 이 에이전트는 AI가 워크 플로를 단순화하고 데이터에서 통찰력을 쉽게 추출 할 수있는 잠재력을 보여줍니다.
AI 에이전트에 대한 자세한 내용은 독점 에이전트 AI Pioneer 프로그램을 확인하십시오!
A. 이러한 프레임 워크는 코드 생성 및 실행을 자동화하여 더 빠른 데이터 처리 및 통찰력을 가능하게합니다. 워크 플로를 간소화하고 수동 노력을 줄이며 데이터 중심 작업의 생산성을 향상시킵니다.
Q2. 이러한 데이터 분석 에이전트가 여러 데이터 세트 또는 복잡한 쿼리를 처리 할 수 있습니까?A. 예, 에이전트는 적절한 도구를 통합하고 워크 플로를 조정하여 다양한 데이터 세트와 복잡한 분석 쿼리를 처리하도록 사용자 정의 할 수 있습니다.
Q3. LLM 생성 코드를 실행할 때 어떤 예방 조치를 취해야합니까?A. LLM 생성 코드에는 오류 또는 안전하지 않은 작업이 포함될 수 있습니다. 실행 전에 정확성과 보안을 보장하기 위해 제어 된 환경에서 코드를 항상 검증하십시오.
Q4. 메모리 통합은 이러한 데이터 분석 에이전트를 어떻게 강화합니까?A. 메모리 통합을 통해 에이전트는 과거 상호 작용의 컨텍스트를 유지하여 복잡하거나 다중 단계 쿼리의 적응 적 응답과 연속성을 가능하게합니다.
Q5. 이 데이터 분석 에이전트는 어떤 유형의 작업을 자동화 할 수 있습니까?A. 이러한 에이전트는 파일 읽기, 데이터 청소 수행, 요약 생성, 통계 분석 실행 및 데이터에 대한 사용자 쿼리에 응답하는 것과 같은 작업을 자동화 할 수 있습니다.
위 내용은 Langchain vs Crewai vs Autogen, 데이터 분석 에이전트 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!