이 튜토리얼에서는 다음을 배웁니다:
- CrewAI의 정의 및 다른 AI 에이전트 라이브러리와 차별화되는 점
- 가장 큰 한계점과 RAG 워크플로로 이를 극복하는 방법.
- 스크래핑 API와 통합하여 AI 에이전트에 SERP 데이터를 제공해 응답 정확도를 높이는 방법.
자, 시작해 보겠습니다!
CrewAI란 무엇인가요?
CrewAI는 복잡한 작업을 완료하기 위해 협력하는 자율 AI 에이전트를 조정하고 관리하기 위한 오픈 소스 Python 프레임워크입니다. Browser Use와 같은 단일 에이전트 시스템과 달리, CrewAI는 에이전트 집합인 “크루(crew)”를 중심으로 구축되었습니다.
크루 내에서 각 에이전트는 정의된 역할, 목표 및 도구 세트를 가집니다. 구체적으로, 웹 스크래핑, 데이터베이스 연결 등 특수한 작업을 위해 AI 에이전트에 맞춤형 도구를 장착할 수 있습니다. 이러한 접근 방식은 AI 기반의 전문적인 문제 해결과 효과적인 의사 결정의 문을 열어줍니다.
CrewAI의 다중 에이전트 아키텍처는 효율성과 확장성을 동시에 촉진합니다. Qwen 모델 지원 및 병렬 함수 호출과 같은 신규 기능이 지속적으로 추가되어 빠르게 진화하는 생태계를 형성하고 있습니다.
CrewAI의 한계와 신선한 웹 데이터로 극복하는 방법
CrewAI는 다중 에이전트 시스템 구축을 위한 풍부한 기능을 갖춘 프레임워크입니다. 그러나 의존하는 대규모 언어 모델(LLM)로부터 몇 가지 핵심 한계를 상속받습니다. LLM은 일반적으로 정적 데이터셋으로 사전 훈련되므로 실시간 인식 능력이 부족하며 최신 뉴스나 실시간 웹 콘텐츠에 접근할 수 없습니다.
이로 인해 답변이 오래되거나, 더 나쁘게는 허구적인 답변이 나올 수 있습니다. 특히 에이전트가 제한을 받지 않거나 검색 강화 생성(Retrieval-Augmented Generation) 환경에서 최신 신뢰할 수 있는 데이터를 제공받지 못할 경우 이러한 문제가 발생할 가능성이 높습니다.
이러한 한계를 해결하려면 에이전트(그리고 확장해서 그들의 LLM)에 신뢰할 수 있는 외부 데이터를 제공해야 합니다. 웹은 가장 포괄적이고 동적인 데이터 소스이므로 이상적인 대상입니다. 따라서 효과적인 접근법 중 하나는 크루AI 에이전트가 구글이나 다른 검색 엔진 플랫폼에서 실시간 검색 쿼리를 수행할 수 있도록 하는 것입니다.
이는 에이전트가 학습할 관련 웹 페이지를 검색할 수 있는 맞춤형 CrewAI 도구를 구축하여 구현할 수 있습니다. 그러나 SERP(검색 엔진 결과 페이지) 스크래핑은 자바스크립트 렌더링, CAPTCHA 해결, IP 로테이션, 끊임없이 변화하는 사이트 구조 등이 필요하여 기술적으로 까다롭습니다.
이러한 모든 작업을 사내에서 관리하는 것은 크루AI 로직 자체를 개발하는 것보다 더 복잡할 수 있습니다. 더 나은 해결책은 Bright Data의 SERP API와 같은 최상위 SERP 스크래핑 API를 활용하는 것입니다 . 이러한 서비스는 웹에서 깨끗하고 구조화된 데이터를 추출하는 복잡한 작업을 처리합니다.
이러한 API를 CrewAI 워크플로에 통합하면 에이전트가 운영 부담 없이 최신 정확한 정보에 접근할 수 있습니다. 도메인별 스크래핑 API를 에이전트에 연결하는 동일한 전략을 다른 도메인에도 적용할 수 있습니다.
실시간 데이터 접근을 위한 SERP API와 CrewAI 통합 방법
이 가이드 섹션에서는 Bright Data SERP API를 통해 크루AI로 구축된 AI 에이전트가 SERP 엔진에서 직접 데이터를 가져올 수 있도록 하는 방법을 살펴봅니다.
이 RAG 통합을 통해 CrewAI 에이전트는 더 많은 맥락과 최신 정보를 제공할 수 있으며, 추가 읽을거리를 위한 실제 링크도 함께 제공할 수 있습니다.
Bright Data의 SERP API 통합으로 강력한 크루를 구축하기 위한 아래 단계를 따르세요!
필수 조건
이 튜토리얼을 따라하려면 다음이 준비되어 있어야 합니다:
- Bright Data API 키.
- LLM 연결용 API 키 (본 튜토리얼에서는 Gemini 사용 예정).
- 로컬에 설치된 Python 3.10 이상.
자세한 내용은 최신 필수 사항이 포함된 CrewAI 문서의 설치 페이지를 참조하세요.
Bright Data API 키가 아직 없더라도 걱정하지 마세요. 다음 단계에서 생성 방법을 안내해 드립니다. LLM API 키의 경우, 보유하지 않으신다면 Google 공식 가이드를 따라 Gemini API 키를 설정하는 것을 권장합니다.
1단계: CrewAI 설치
터미널에서 다음 명령어를 실행하여 CrewAI를 전역적으로 설치하세요:
pip install crewai
참고: 여러 패키지를 다운로드하고 구성하므로 시간이 다소 소요될 수 있습니다.
설치 또는 사용 중 문제가 발생하면 공식 문서의 문제 해결 섹션을 참조하세요.
설치가 완료되면 crewai CLI 명령어를 사용할 수 있습니다. 터미널에서 다음 명령어를 실행하여 확인하세요:
crewai
다음과 유사한 출력이 표시됩니다:
사용법: crewai [옵션] 명령어 [인수]...
crewai의 최상위 명령어 그룹입니다.
옵션:
--version 버전을 표시하고 종료합니다.
--help 이 메시지를 표시하고 종료합니다.
명령어:
chat 크루와의 대화를 시작하여 수집합니다...
create 새로운 크루 또는 플로우를 생성합니다.
deploy 크루 CLI 그룹 배포.
flow 플로우 관련 명령어.
install 크루 설치.
log-tasks-outputs 최신 crew.kickoff() 작업 출력값 조회.
login CrewAI+ 가입/로그인.
replay 특정 작업부터 크루 실행 재실행.
reset-memories 크루 메모리 초기화 (장기, 단기, 엔티티,..
run Crew 실행.
signup CrewAI+ 가입/로그인.
test 크루 테스트 및 결과 평가.
tool 도구 저장소 관련 명령어.
train 크루 훈련.
update 크루 프로젝트의 pyproject.toml 업데이트...
version 설치된 crewai 버전 표시.
좋습니다! 이제 프로젝트를 초기화할 준비가 된 크루AI CLI를 갖췄습니다.
단계 #2: 프로젝트 설정
다음 명령어를 실행하여 serp_agent라는 새 크루AI 프로젝트를 생성하세요:
crewai create crew serp_agent
설정 과정에서 선호하는 LLM 공급자를 선택하라는 메시지가 표시됩니다:
설정할 공급자를 선택하세요:
1. openai
2. anthropic
3. gemini
4. nvidia_nim
5. groq
6. huggingface
7. ollama
8. watson
9. bedrock
10. azure
11. cerebras
12. sambanova
13. 기타
q. 종료
원하는 번호를 입력하거나 'q'를 입력하여 종료하세요:
이 경우 API를 통한 통합이 무료인 Gemini를 선택하기 위해 옵션 “3”을 선택하겠습니다.
다음으로 사용하고자 하는 특정 Gemini 모델을 선택하세요:
Gemini에 사용할 모델 선택:
1. gemini/gemini-1.5-flash
2. gemini/gemini-1.5-pro
3. gemini/gemini-2.0-flash-lite-001
4. gemini/gemini-2.0-flash-001
5. gemini/gemini-2.0-flash-thinking-exp-01-21
6. gemini/gemini-2.5-flash-preview-04-17
7. gemini/gemini-2.5-pro-exp-03-25
8. gemini/gemini-gemma-2-9b-it
9. gemini/gemini-gemma-2-27b-it
10. gemini/gemma-3-1b-it
11. gemini/gemma-3-4b-it
12. gemini/gemma-3-12b-it
13. gemini/gemma-3-27b-it
q. 종료
이 예시에서는 무료 gemini/gemini-1.5-flash 모델로 충분합니다. 따라서 “1” 옵션을 선택할 수 있습니다.
그런 다음 Gemini API 키를 입력하라는 메시지가 표시됩니다:
https://ai.dev/apikey에서 GEMINI API 키를 입력하세요 (Enter 키를 눌러 건너뜁니다):
붙여넣기 후, 모든 것이 정상적으로 진행되면 다음과 같은 출력이 표시됩니다:
API 키 및 모델이 .env 파일에 저장됨
선택된 모델: gemini/gemini-1.5-flash
- serp_agent.gitignore 생성됨
- serp_agentpyproject.toml 생성됨
- serp_agentREADME.md 생성됨
- serp_agentknowledgeuser_preference.txt 생성됨
- serp_agentsrcserp_agent__init__.py 생성
- serp_agentsrcserp_agentmain.py 생성
- serp_agentsrcserp_agentcrew.py 생성
- serp_agentsrcserp_agenttoolscustom_tool.py 생성
- serp_agentsrcserp_agenttools__init__.py 생성
- serp_agentsrcserp_agentconfigagents.yaml 생성
- serp_agentsrcserp_agentconfigtasks.yaml 생성
Crew serp_agent 생성 성공!
이 절차는 다음과 같은 프로젝트 구조를 생성합니다:
serp_agent/
├── .gitignore
├── pyproject.toml
├── README.md
├── .env
├── knowledge/
├── tests/
└── src/
└── serp_agent/
├── __init__.py
├── main.py
├── crew.py
├── tools/
│ ├── custom_tool.py
│ └── __init__.py
└── config/
├── agents.yaml
└── tasks.yaml
여기서:
main.py는프로젝트의 메인 진입점입니다.crew.py는크루의 로직을 정의하는 곳입니다.config/agents.yaml은AI 에이전트를 정의합니다.config/tasks.yaml은에이전트가 처리할 작업을 정의합니다.tools/custom_tool.py는에이전트가 사용할 수 있는 사용자 정의 도구를 추가할 수 있게 합니다..env파일은 API 키 및 기타 환경 변수를 저장합니다.
프로젝트 폴더로 이동하여 CrewAI 종속성을 설치하세요:
cd serp_agent
crewai install
마지막 명령어는 프로젝트 디렉토리 내에 로컬 가상 환경 .venv 폴더를 생성합니다. 이를 통해 로컬에서 CrewAI를 실행할 수 있습니다.
완벽합니다! 이제 Gemini API를 사용하는 완전히 초기화된 CrewAI 프로젝트를 갖게 되었습니다. 지능형 SERP 에이전트를 구축하고 실행할 준비가 되었습니다.
3단계: SERP API 시작하기
앞서 언급한 바와 같이, 검색 엔진 결과 페이지의 콘텐츠를 가져와 CrewAI 에이전트에 공급하기 위해 Bright Data의 SERP API를 사용할 것입니다. 구체적으로, 사용자의 입력에 기반한 정확한 Google 검색을 수행하고 실시간으로 수집된 데이터를 활용하여 에이전트의 응답을 개선할 것입니다.
SERP API 설정 방법은 공식 문서를 참조하거나 아래 단계를 따르세요.
아직 계정이 없다면 Bright Data에 가입하세요. 기존 계정이 있다면 로그인하세요. 로그인 후 “My Zones” 섹션으로 이동하여 “SERP API” 행을 클릭하세요:

해당 행이 표에 표시되지 않는다면, 아직 SERP API 존을 구성하지 않은 것입니다. 이 경우 아래로 스크롤하여 “SERP API” 섹션 아래의 “존 생성”을 클릭하세요:

SERP API 제품 페이지에서 “활성화” 스위치를 토글하여 제품을 활성화하세요:

다음으로 공식 가이드를 따라 Bright Data API 키를 생성하세요. 생성된 키를 아래와 같이 .env 파일에 추가합니다:
BRIGHT_DATA_API_KEY=<YOUR_BRIGHT_DATA_API_KEY>
<YOUR_BRIGHT_DATA_API_KEY> 자리 표시자를 실제 Bright Data API 키 값으로 대체하세요.
이것으로 끝입니다! 이제 CrewAI 통합에서 Bright Data의 SERP API를 사용할 수 있습니다.
4단계: CrewAI SERP 검색 도구 생성
이제 에이전트가 Bright Data SERP API와 상호작용하고 검색 결과 데이터를 가져올 수 있는 SERP 검색 도구를 정의할 차례입니다.
이를 위해 tools/ 폴더 내 custom_tool.py 파일을 열고 내용을 다음과 같이 교체하세요:
# src/search_agent/tools/custom_tool.py
import os
import json
from typing import Type
import requests
from pydantic import BaseModel, PrivateAttr
from crewai.tools import BaseTool
class SerpSearchToolInput(BaseModel):
query: str
class SerpSearchTool(BaseTool):
_api_key: str = PrivateAttr()
name: str = "Bright Data SERP 검색 도구"
description: str = """
사용자의 쿼리를 기반으로 Bright Data의 SERP API를 사용하여 실시간 Google 검색 결과를 가져옵니다.
이 도구는 에이전트 응답을 실시간 데이터로 지원하기 위해 자연 검색 목록을 가져옵니다.
"""
args_schema: Type[BaseModel] = SerpSearchToolInput
def __init__(self, **kwargs):
super().__init__(**kwargs)
# 환경 변수에서 Bright Data API 키 읽기
self._api_key = os.environ.get("BRIGHT_DATA_API_KEY")
if not self._api_key:
raise ValueError("Bright Data API 키가 누락되었습니다. .env 파일에 BRIGHT_DATA_API_KEY를 설정해 주세요")
def _run(self, query: str) -> str:
url = "https://api.brightdata.com/request"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {self._api_key}"
}
payload = {
"zone": "serp", # 실제 Bright Data SERP API 존 이름으로 교체
"format": "json",
"url": f"https://www.google.com/search?q={query}&brd_json=1"
}
try:
response = requests.post(url, json=payload, headers=headers)
# 오류 발생 시 예외 발생
response.raise_for_status()
# JSON 응답 파싱
json_response = response.json()
response_body = json.loads(json_response.get("body", "{}"))
if "organic" not in response_body:
return "응답에 자연 검색 결과가 포함되지 않았습니다."
# SERP 데이터를 JSON 문자열로 반환
return json.dumps(response_body["organic"], indent=4)
except requests.exceptions.HTTPError as http_err:
return f"Bright Data SERP API 쿼리 중 HTTP 오류 발생: {http_err}"
except requests.exceptions.RequestException as req_err:
return f"Bright Data 연결 중 네트워크 오류 발생: {req_err}"
except (json.JSONDecodeError, KeyError) as parse_err:
return f"Bright Data SERP API 응답 파싱 오류: {parse_err}"
이 CrewAI 도구는 사용자 쿼리를 받아 Bright Data SERP API를 통해 SERP 결과를 가져오는 함수를 정의합니다.
참고: brd_json=1 쿼리 매개변수를 사용하고 형식을 json으로 설정할 경우, SERP API는 다음과 같은 구조로 응답합니다:
{
"status_code": 200,
"headers": {
"content-type": "application/json",
// 생략...
},
"body": "{"general":{"search_engine":"google","query":"pizza","results_cnt":1980000000, ...}}"
}
특히, JSON 문자열을 포함하는 body 필드를 파싱한 후에는 다음과 같은 데이터 구조를 얻을 수 있습니다:
{
"general": {
"search_engine": "google",
"query": "pizza",
"results_cnt": 1980000000,
"search_time": 0.57,
"language": "en",
"mobile": false,
"basic_view": false,
"search_type": "text",
"page_title": "pizza - Google Search",
"timestamp": "2023-06-30T08:58:41.786Z"
},
"input": {
"original_url": "https://www.google.com/search?q=pizza&brd_json=1",
"request_id": "hl_1a1be908_i00lwqqxt1"
},
"organic": [
{
"link": "https://www.pizzahut.com/",
"display_link": "https://www.pizzahut.com",
"title": "Pizza Hut | 배달 및 테이크아웃 - 아무도 허트를 이길 수 없다!",
"rank": 1,
"global_rank": 1
},
{
"link": "https://www.dominos.com/en/",
"display_link": "https://www.dominos.com",
"title": "도미노: 피자 배달 & 테이크아웃, 파스타, 치킨 등",
"description": "온라인으로 피자, 파스타, 샌드위치 등을 주문하세요...",
"순위": 2,
"글로벌 순위": 3
},
// ...간결함을 위해 생략된 추가 자연 검색 결과
]
}
따라서 주로 관심 있는 부분은 'organic' 필드입니다. 이 필드는 코드에서 접근되어 JSON 문자열로 파싱된 후 도구에 의해 반환됩니다.
훌륭합니다! 이제 CrewAI 에이전트가 이 도구를 사용하여 최신 SERP 데이터를 가져올 수 있습니다.
단계 #5: 에이전트 정의하기
이 작업을 수행하려면 각각 고유한 목적을 가진 두 개의 CrewAI 에이전트가 필요합니다:
- 리서처: Google에서 검색 결과를 수집하고 유용한 인사이트를 필터링합니다.
- 보고 분석가: 발견한 내용을 구조화되고 읽기 쉬운 요약으로 정리합니다.
다음과 같이 agents.yml 파일을 작성하여 정의할 수 있습니다:
# src/search_agent/configs/agents.yml
researcher:
role: >
온라인 리서치 전문가
goal: >
지능적인 구글 검색을 수행하고 상위 결과에서 관련성 높고 신뢰할 수 있는 세부 정보를 수집합니다.
backstory: >
가장 정확하고 통찰력 있는 콘텐츠를 제공하는 검색어 구사 능력이 뛰어납니다.
신뢰할 수 있는 출처에서 고품질 정보를 신속하게 식별하는 데 전문성을 지닙니다.
보고 분석가:
역할: >
전략적 보고서 작성자
목표: >
수집된 데이터를 명확하고 유익한 서사로 구성하여 이해와 실행이 용이하도록 합니다.
배경: >
원시 정보를 소화하여 의미 있는 분석으로 전환하는 데 탁월합니다. 체계적이고 전략적인 형식으로 데이터를 제시함으로써 팀이 데이터를 이해하는 데 기여합니다.
이 구성이 각 에이전트의 역할을 정확히 정의하는 방식을 주목하세요—과도하거나 부족함 없이. 역할, 목표, 배경 이야기만 정의하면 됩니다. 아주 좋습니다!
단계 #6: 각 에이전트의 작업 명시하기
워크플로우 내에서 각 에이전트의 역할을 명확히 규정하는 구체적인 작업을 정의할 준비를 하세요. CrewAI 문서에 따르면 정확한 결과를 얻기 위해작업 정의가 에이전트 정의보다 더 중요합니다.
따라서 tasks.yml 파일에서 에이전트에게 정확히 수행해야 할 작업을 아래와 같이 명시해야 합니다:
# src/search_agent/configs/tasks.yml
research_task:
description: >
SerpSearchTool을 활용하여 사용자의 {query}를 기반으로 타겟팅된 검색을 수행합니다.
다음과 같은 API 매개변수를 구성하세요:
- 'query': 검색 엔진용으로 간결하고 Google 스타일의 키워드 최적화된 검색 문구를 개발합니다.
반환된 데이터에서 가장 관련성 높고 사실적인 콘텐츠를 식별합니다.
expected_output: >
검색 결과 데이터를 포함한 잘 구조화된 원시 JSON 콘텐츠 파일.
어떤 콘텐츠도 재작성, 요약 또는 수정하지 마십시오.
agent: researcher
output_file: output/serp_data.json
report_task:
description: >
수집된 데이터를 이해하기 쉽고 통찰력 있는 보고서로 전환하세요.
사용자의 {query}에 사실에 기반한 결과를 제시하세요. 추가 참고 자료를 위한 링크를 추가하세요. 정보를 조작하거나 추측하지 마세요.
expected_output: >
핵심 요점과 의미 있는 통찰력을 담은 마크다운 보고서.
내용을 간결하게 유지하고 시각적으로 명확하게 구조화하십시오.
agent: reporting_analyst
context: [research_task]
output_file: output/report.md
이 설정에서는 두 가지 작업을 정의합니다—각 에이전트마다 하나씩:
research_task: 쿼리에 기반해 API 매개변수를 동적으로 구성하는 방법을 포함하여, 연구원이 도구를 통해 Bright Data SERP API를 사용하는 방법을 알려줍니다.report_task: 수집된 데이터만으로 엄격하게 작성된 가독성 높고 유익한 보고서를 최종 출력물로 지정합니다.
이 tasks.yml 정의만으로도 CrewAI 에이전트들이 SERP 데이터를 수집하고 실제 검색 결과를 기반으로 한 보고서를 생성할 수 있습니다.
이제 CrewAI 에이전트를 코드에 통합하고 작업을 시작할 시간입니다!
7단계: 크루 생성
이제 모든 구성 요소가 준비되었으니, crew.py 파일에서 모든 요소를 연결하여 완전한 기능을 갖춘 크루를 생성하세요. 구체적으로, 다음과 같이 crew.py를 정의할 수 있습니다:
# src/search_agent/crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from .tools.custom_tool import SerpSearchTool
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List
@CrewBase
class SerpAgent():
"""SerpAgent 크루"""
agents: List[BaseAgent]
tasks: List[Task]
@agent
def researcher(self) -> Agent:
return Agent(
config=self.agents_config["researcher"],
tools=[SerpSearchTool()],
verbose=True
)
@agent
def reporting_analyst(self) -> Agent:
return Agent(
config=self.agents_config["reporting_analyst"],
verbose=True
)
@task
def research_task(self) -> Task:
return Task(
config=self.tasks_config["research_task"],
output_file="output/serp_data.json"
)
@task
def report_task(self) -> Task:
return Task(
config=self.tasks_config["report_task"],
output_file="output/report.md"
)
@crew
def crew(self) -> Crew:
"""SerpAgent 크루 생성"""
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential,
verbose=True,
)
crew.py 파일에서는 YAML 파일의 로직을 연결하고 실제 기능을 구현하기 위해 CrewAI 데코레이터 (@agent, @task, @crew) 를 사용해야 합니다.
이 예시에서:
연구자에이전트(researcheragent)는SerpSearchTool에대한 접근 권한을 부여받아 Bright Data의 SERP API를 사용하여 실제 Google 검색 쿼리를 수행할 수 있습니다.보고서 분석가에이전트는 연구원의 출력을 활용하여 최종 보고서를 생성하도록 구성됩니다.- 각 작업은
tasks.yml에 정의된 내용에 대응하며, 적절한 출력 파일에 명시적으로 연결됩니다. - 프로세스는
순차적으로설정되어연구원이먼저 실행된 후 데이터를reporting_analyst로전달합니다.
자, 이제 시작합니다! SerpAgent 크루가 실행 준비를 마쳤습니다.
8단계: 메인 루프 생성
main.py에서 사용자의 쿼리를 입력으로 전달하여 크루를 트리거하세요:
# src/search_crew/main.py
import os
from serp_agent.crew import SerpAgent
# output/ 폴더가 존재하지 않으면 생성
os.makedirs("output", exist_ok=True)
def run():
try:
# 사용자 입력 읽기 및 크루 전달
inputs = {"query": input("검색어: ").strip()}
# SERP 에이전트 크루 시작
result = SerpAgent().crew().kickoff(
inputs=inputs
)
return result
except Exception as e:
print(f"오류 발생: {str(e)}")
if __name__ == "__main__":
run()
미션 완료! CrewAI + SERP API 통합(LLM으로 Gemini 사용)이 이제 완전히 작동합니다. main.py를 실행하고 검색어를 입력하면 크루가 SERP 데이터를 수집 및 분석하여 보고서를 생성하는 것을 확인할 수 있습니다.
9단계: AI 에이전트 실행하기
프로젝트 폴더에서 다음 명령어로 CrewAI 애플리케이션을 실행하세요:
crewai run
이제 다음과 같은 쿼리를 입력하세요:
"새로운 AI 프로토콜은 무엇인가요?"
이는 일반적인 대규모 언어 모델(LLM)이 정확히 답변하기 어려울 수 있는 유형의 질문입니다. 그 이유는 CMP, A2A, AGP, ACP와 같은 최신 AI 프로토콜 대부분이 모델이 처음 훈련될 당시 존재하지 않았기 때문입니다.
자세한 처리 과정은 다음과 같습니다:

위에서 볼 수 있듯이, CrewAI는 요청을 다음과 같이 처리합니다:
연구에이전트가 실행되며, 이는:- 사용자 입력을 구조화된 쿼리
"new AI protocols"로 변환 SerpSearchTool을통해 Bright Data의 SERP API로 쿼리를 전송합니다.- API로부터 결과를 수신하여
output/serp_data.json파일에 저장합니다.
- 사용자 입력을 구조화된 쿼리
보고서 분석에이전트가 트리거되어 다음 작업을 수행합니다:serp_data.json파일에서 구조화된 데이터를 읽습니다.- 이 최신 정보를 사용하여 Markdown 형식의 컨텍스트 인식 보고서를 생성합니다.
- 최종 구조화된 보고서를
output/report.md에 저장합니다.
Markdown 뷰어로 report.md를 열면 다음과 같은 내용을 볼 수 있습니다:

이 보고서는 관련 컨텍스트 정보와 심층 분석을 위한 링크까지 포함합니다.
자, 이제 SERP API 연동을 통해 CrewAI에서 RAG 워크플로를 구현했습니다.
다음 단계
Crew에 통합된 Bright Data SERP API 도구를 통해 에이전트는 최신 검색 엔진 결과를 받을 수 있습니다. 해당 SERP에서 얻은 URL을 사용하여 다른 스크래핑 API를 호출해 링크된 페이지의 원시 콘텐츠를 추출할 수 있습니다. 이 콘텐츠는 처리되지 않은 형태(Markdown으로 변환하여 에이전트에 제공) 또는 이미 JSON으로 파싱된 형태로 얻을 수 있습니다.
이를 통해 에이전트가 신뢰할 수 있는 출처를 자동으로 발견하고 최신 정보를 검색할 수 있습니다. 또한 Agent Browser와 같은 솔루션을 통합하여 에이전트가 모든 실시간 웹 페이지와 동적으로 상호작용할 수 있도록 할 수도 있습니다.
이것들은 단지 몇 가지 예시일 뿐이며, 잠재적인 시나리오와 사용 사례는 사실상 무한합니다.
결론
이 블로그 게시물에서는 Bright Data의 SERP API를 사용한 RAG 설정을 통합하여 CrewAI 에이전트의 상황 인식을 향상시키는 방법을 알아보았습니다.
설명한 바와 같이, 이는 에이전트를 외부 스크래핑 API나 자동화 도구와 연결하여 탐색할 수 있는 수많은 가능성 중 하나에 불과합니다. 특히 Bright Data의 솔루션은 지능형 AI 워크플로우를 위한 강력한 구성 요소 역할을 할 수 있습니다.
Bright Data의 도구로 AI 인프라를 한 단계 업그레이드하세요:
- 자율 AI 에이전트: 강력한 API 세트를 사용하여 실시간으로 모든 웹사이트를 검색, 접근 및 상호작용하세요.
- 수직 AI 애플리케이션: 산업별 소스에서 웹 데이터를 추출하기 위한 안정적이고 맞춤형 데이터 파이프라인 구축.
- 파운데이션 모델: 사전 훈련, 평가 및 미세 조정을 위한 규정 준수 웹 규모 데이터셋에 접근하세요.
- 다중 모드 AI: AI에 최적화된 세계 최대 규모의 이미지, 동영상, 오디오 저장소를 활용하세요.
- 데이터 공급자: 신뢰할 수 있는 공급자와 연결하여 대규모로 고품질의 AI 활용 가능한 데이터셋을 확보하세요.
- 데이터 패키지: 선별되고 즉시 사용 가능한 구조화, 보강 및 주석이 달린 데이터 세트를 확보하세요.
자세한 내용은 AI 허브를 살펴보세요.
Bright Data 계정을 생성하고 AI 에이전트 개발을 위한 모든 제품과 서비스를 체험해 보세요!