>기술 주변기기 >일체 포함 >Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

William Shakespeare
William Shakespeare원래의
2025-03-18 12:05:09182검색

Crewai 흐름으로 AI 워크 플로를 간소화하십시오! 이 강력한 프레임 워크는 AI 에이전트 간의 상호 작용을 조정하기위한 구조화 된 패턴을 제공하므로 개발자는 강력한 AI 자동화를 위해 코딩 작업과 승무원을 완벽하게 통합 할 수 있습니다. Crewai의 에이전트 흐름은 AI 응용 프로그램 내에서 이벤트 중심의 워크 플로우, 작업 조정, 상태 관리 및 실행 제어를 단순화합니다.

Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

목차

  • 승무원은 무엇입니까?
  • 흐름 이해
    • 워크 플로 제어 및 시퀀싱
    • 효율적인 국가 관리
    • 유연한 입력 처리
    • 이벤트 중심의 아키텍처 및 동적 조정
    • 작업 라우팅 및 조건부 실행
  • 실제로 흐름 : 영화 추천 예제
    • 설정 및 설치
    • 경고 처리
    • 환경 변수 로딩
    • 필요한 모듈 가져 오기
    • 에이전트 정의
    • 작업 정의
    • 각 장르마다 승무원을 만듭니다
    • 장르 및 제국 테이트 정의
    • MovieRecommendationFlow 구축
    • 흐름 시각화
    • 흐름 시작
  • 결론
  • 자주 묻는 질문

승무원은 무엇입니까?

Crewai의 승무원은 자동화 된 작업 완료를 위해 AI 에이전트의 오케스트레이션을 용이하게합니다. 이들은 에이전트 간의 원활한 협력을 가능하게하여 복잡한 문제를 해결합니다. 그러나 왜 "흐름"? Crewai Flow는 이러한 에이전트 상호 작용을 관리하기위한 구조화 된 패턴을 제공하기 때문에 에이전트가 특정 목표를 달성하기 위해 에이전트가 의사 소통하고 협력하는 방식을 정의합니다. 흐름은 본질적으로 일련의 작업이며, 한 작업의 출력이 다음 작업을 트리거 할 수 있습니다. 이 시스템은 상태 및 조건부 실행을위한 유연한 메커니즘을 제공합니다.

흐름 이해

Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

흐름은 이벤트 중심 모델에서 작동하여 특정 트리거 및 조건에 반응합니다. 이를 통해 작업 실행 결과를 기반으로 동적 워크 플로 조정을 통해 복잡한 AI 프로세스를 간소화합니다.

워크 플로 제어 및 시퀀싱

Crewai 흐름을 통해 개발자는 작업 시퀀스를 구조화하고 작업 간 정보 흐름을 제어 할 수 있습니다. 작업을 함께 연결하여 논리적 인 운영 순서를 만듭니다. 사전 작업 출력을 기반으로 작업의 조건부 실행도 지원됩니다.

효율적인 국가 관리

종종 Pydantic의 BaseModel 사용하는 구조화 된 상태 관리는 작업 간 데이터 일관성과 구조를 보장합니다. 이는 복잡한 데이터 상태의 유형 안전, 검증 및 더 쉬운 관리를 제공합니다.

유연한 입력 처리

흐름은 실행 중 언제라도 상태를 초기화하거나 업데이트하기위한 입력을 수락합니다. 워크 플로 요구에 따라 시작, 실행 중 또는 실행 후 입력을 제공 할 수 있습니다.

이벤트 중심의 아키텍처 및 동적 조정

Crewai 흐름은 작업 결과에 따라 동적으로 조정됩니다. 작업은 이전 단계에서 출력을 듣고 이전 출력에 따라 새로운 작업이 트리거되는 반응 시스템을 만듭니다. @listen()@router() 데코레이터는 이러한 유연성을 제공하여 조건부 및 동적 작업 링크를 가능하게합니다. @start() 데코레이터는 흐름의 시작점을 표시합니다.

{{table_placeholder 21}}`또는<td>Triggers a listener when any specified method emits an output.</td> <tr><td></td></tr> and_`
데코레이터 및 조건부 논리 설명
@listen() 특정 이벤트 또는 작업 출력에 의해 트리거 된 리스너 메소드를 만듭니다.
@router() 조건부 라우팅을 활성화하여 이전 단계 출력에 따라 다른 실행 경로를 허용합니다. 성공/실패 결과를 관리하는 데 유용합니다.
지정된 모든 메소드가 출력을 방출 할 때만 리스너를 트리거합니다.

작업 라우팅 및 조건부 실행

흐름은 조건에 따라 실행을 제어하기 위해 라우팅을 사용합니다. @router() 데코레이터를 사용하면 메소드가 이전 작업 결과를 기반으로 실행 경로를 선택할 수 있습니다. 예를 들어, 메소드는 이전 작업의 출력을 확인하고 특정 조건이 충족되는지 여부에 따라 경로를 선택할 수 있습니다.

실제로 흐름 : 영화 추천 예제

장르를 기반으로 영화를 추천하기 위해 Crewai Flows를 사용하여 에이전트 시스템을 만들어 봅시다.

설정 및 설치

 <code>!pip install crewai -U !pip install crewai-tools</code>

경고 처리

 <code>import warnings warnings.filterwarnings('ignore')</code>

환경 변수로드 (실제 키로 자리 표시자를 교체)

 <code>import os os.environ["OPENAI_API_KEY"] = 'YOUR_OPENAI_API_KEY' os.environ['OPENAI_MODEL_NAME'] = 'gpt-4o-mini-2024-07-18' os.environ["SERPER_API_KEY"]='YOUR_SERPER_API_KEY'</code>

필요한 모듈 가져 오기

 <code>from crewai import Agent, Task, Crew from crewai.flow.flow import listen, start, and_, or_, router from crewai_tools import SerperDevTool from crewai import Flow from pydantic import BaseModel</code>

에이전트 정의

모든 작업에 단일 에이전트가 사용됩니다. 이 에이전트는 Google 검색 도구를 사용합니다.

 <code>movie_agent = Agent( role="Recommend popular movie specific to the genre", goal="Provide a list of movies based on user preferences", backstory="You are a cinephile, " "you recommend good movies to your friends, " "the movies should be of the same genre", tools=[SerperDevTool()], verbose=True )</code>

작업 정의

 <code>action_task = Task(name="ActionTask", description="Recommends a popular action movie", expected_output="A list of 10 popular movies", agent=movie_agent) comedy_task = Task(name="ComedyTask", description="Recommends a popular comedy movie", expected_output="A list of 10 popular movies", agent=movie_agent) drama_task = Task(name="DramaTask", description="Recommends a popular drama movie", expected_output="A list of 10 popular movies", agent=movie_agent) sci_fi_task = Task(name="SciFiTask", description="Recommends a sci-fi movie", expected_output="A list of 10 popular movies", agent=movie_agent)</code>

각 장르마다 승무원을 만듭니다

 <code>action_crew = Crew(agents=[movie_agent], tasks=[action_task], verbose=True) comedy_crew = Crew(agents=[movie_agent], tasks=[comedy_task], verbose=True) drama_crew = Crew(agents=[movie_agent], tasks=[drama_task], verbose=True) sci_fi_crew = Crew(agents=[movie_agent], tasks=[sci_fi_task], verbose=True)</code>

장르 및 제국 테이트 정의

 <code>GENRES = ["action", "comedy", "drama", "sci-fi"] class GenreState(BaseModel): genre: str = ""</code>

MovieRecommendationFlow 구축

이 클래스는 Flow 클래스에서 물려 받고 상태 기능을 사용합니다.

 <code>class MovieRecommendationFlow(Flow[GenreState]): @start() def input_genre(self): genre = input("Enter a genre: ") print(f"Genre input received: {genre}") self.state.genre = genre return genre @router(input_genre) def route_to_crew(self): genre = self.state.genre if genre not in GENRES: raise ValueError(f"Invalid genre: {genre}") if genre == "action": return "action" elif genre == "comedy": return "comedy" elif genre == "drama": return "drama" elif genre == "sci-fi": return "sci-fi" @listen("action") def action_movies(self, genre): recommendations = action_crew.kickoff() return recommendations @listen("comedy") def comedy_movies(self, genre): recommendations = comedy_crew.kickoff() return recommendations @listen("drama") def drama_movies(self, genre): recommendations = drama_crew.kickoff() return recommendations @listen("sci-fi") def sci_fi_movies(self, genre): recommendations = sci_fi_crew.kickoff() return recommendations @listen(or_("action_movies", "comedy_movies", "drama_movies", "sci_fi_movies")) def finalize_recommendation(self, recommendations): print("Final movie recommendations:") return recommendations</code>

@listen , @router , or_@start 데코레이터는 흐름의 실행을 관리합니다.

흐름 시각화

 <code>flow = MovieRecommendationFlow() flow.plot() #This will generate a file, you'll need to display it separately (eg, using an image display function in your environment)</code>

Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

흐름 시작

 <code>recommendations = await flow.kickoff_async()</code>

Crewai의 에이전트 흐름은 무엇입니까? - 분석 VidhyaCrewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya

결론

Crewai의 이벤트 중심 워크 플로는 AI 작업 오케스트레이션을 단순화합니다. @listen() , @router() 및 주 관리와 같은 기능과 결합 된 Crewai Flows의 유연하고 적응적인 특성은 효율적이고 동적 AI 애플리케이션을 구축하기위한 강력한 도구를 만듭니다.

자주 묻는 질문

Q1. 입력을 흐름으로 어떻게 전달합니까? flow.kickoff(inputs={"counter": 10}) .

Q2. @start()@listen() 의 차이점은 무엇입니까? @start() 마크 흐름 시작점; @listen() 마크 작업 완료에 의해 트리거 된 메소드.

Q3. 내 흐름을 어떻게 시각화합니까? flow.plot() 사용하십시오.

Q4. 인간의 피드백을 통합 할 수 있습니까? 예, Crewai Flows는 인간의 루프 피드백을 지원합니다.

위 내용은 Crewai의 에이전트 흐름은 무엇입니까? - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.