이 튜토리얼에서 배우게 될 내용:
- Haystack이 무엇이며 Bright Data 통합이 AI 파이프라인과 에이전트를 한 단계 업그레이드하는 이유.
- 시작하는 방법.
- – 커스텀 도구를 사용해 Haystack과 Bright Data를 통합하는 방법.
- 웹 MCP를 통해 이용 가능한 60개 이상의 도구와 Haystack을 연결하는 방법.
자, 시작해 보겠습니다!
Haystack: 정의와 웹 데이터 검색 도구의 필요성
Haystack은 LLM을 활용해 생산 환경에 바로 적용 가능한 애플리케이션을 구축하기 위한 오픈소스 AI 프레임워크입니다. 모델, 벡터 데이터베이스, 도구 등의 구성 요소를 모듈식 워크플로로 연결하여 RAG 시스템, AI 에이전트, 고급 데이터 파이프라인을 생성할 수 있게 합니다.
Haystack은 AI 프로젝트를 개념 단계에서 배포 단계까지 진행하는 데 필요한 유연성, 맞춤화 및 확장성을 제공합니다. 이 모든 것이 23,000개 이상의 GitHub 스타를 보유한 오픈 소스 라이브러리에서 가능합니다.
그러나 아무리 정교한 Haystack 애플리케이션이라도 LLM의 핵심 한계인 정적 훈련 데이터 로 인한 지식의 시의성 부족과 실시간 웹 접근성 결여를 피할 수 없습니다!
해결책은 Bright Data와 같은 AI용 웹 데이터 제공업체와의 통합입니다. Bright Data는 웹 스크래핑, 검색, 브라우저 자동화 등을 위한 도구를 제공하여 AI 시스템의 잠재력을 최대한 발휘할 수 있게 합니다!
필수 조건
이 튜토리얼을 따라하려면 다음이 필요합니다:
- 로컬에 설치된 Python 3.9 이상
- API 키가 설정된 Bright Data 계정.
- OpenAI API 키 (또는 Haystack에서 지원하는 다른 LLM의 API 키).
아직 설정하지 않으셨다면 공식 가이드를 따라 계정을 설정하고 Bright Data API 키를 생성하세요. 곧 필요할 수 있으니 안전한 곳에 보관하십시오.
Bright Data의 제품 및 서비스에 대한 기본적인 이해와 Haystack에서 도구 및 MCP 통합이 작동하는 방식에 대한 기초 지식이 있으면 도움이 됩니다.
간편함을 위해 가상 환경이 설정된 Python 프로젝트가 이미 존재한다고 가정하겠습니다. 다음 명령어로 Haystack을 설치하세요:
pip install haystack-ai
이제 Haystack에서 Bright Data 통합을 시작하는 데 필요한 모든 준비가 완료되었습니다. 여기서는 두 가지 접근 방식을 살펴보겠습니다:
Haystack에서 Bright Data 기반 커스텀 도구 정의하기
Haystack에서 Bright Data 기능을 활용하는 한 가지 방법은 커스텀 툴을 정의하는 것입니다. 이러한 툴은 커스텀 함수 내 API를 통해 Bright Data 제품과 통합됩니다.
이 과정을 간소화하기 위해 Bright Data Python SDK를 활용합니다. 이 SDK는 Python API를 제공하여 다음을 쉽게 호출할 수 있게 합니다:
- 웹 언락커 API: 단일 요청으로 모든 웹사이트를 스크래핑하여 깨끗한 HTML 또는 JSON을 수신하며, 모든 프록시, 차단 해제, 헤더 및 CAPTCHA 처리가 자동화됩니다.
- SERP API: 차단 걱정 없이 Google, Bing 등 다양한 검색 엔진의 결과를 대규모로 수집합니다.
- 웹 스크래핑 API: Amazon, Instagram, LinkedIn, Yahoo Finance 등 인기 사이트에서 구조화되고 파싱된 데이터를 추출합니다.
- 기타 Bright Data 솔루션…
주요 SDK 메서드를 Haystack 호환 도구로 전환하여 모든 AI 에이전트나 파이프라인이 Bright Data 기반 웹 데이터 수집의 혜택을 누릴 수 있도록 할 예정입니다!
1단계: Bright Data Python SDK 설치 및 설정
brightdata-sdk PyPI 패키지를 통해 Bright Data Python SDK를 설치하세요:
pip install brightdata-sdk
라이브러리를 임포트하고 BrightDataClient 인스턴스를 초기화합니다:
import os
from brightdata import BrightDataClient
os.environ["BRIGHTDATA_API_TOKEN"] = "<YOUR_BRIGHT_DATA_API_KEY>" # 본인의 Bright Data API 키로 대체
# Bright Data Python SDK 클라이언트 초기화
client = BrightDataClient(
token=BRIGHT_DATA_API_KEY,
)
<YOUR_BRIGHT_DATA_API_KEY> 자리 표시자를 “사전 준비 사항” 섹션에서 생성한 API 키로 대체하세요.
실행 가능한 코드의 경우 스크립트에 API 키를 하드코딩하지 마십시오. Bright Data Python SDK는 BRIGHTDATA_API_TOKEN 환경 변수에서 API 키를 가져오므로, 환경 변수를 전역적으로 Bright Data API 키로 설정하거나 python-dotenv 패키지를 사용하여 .env 파일에서 로드하십시오.
BrightDataClient는 Bright Data 계정에 기본 Web Unlocker 및 SERP API 영역을 자동으로 설정합니다:
이 두 영역은 SDK가 60개 이상의 도구를 노출하는 데 필수적입니다.
사용자 지정 영역이 이미 설정된 경우, 문서에 설명된 대로 지정하십시오:
client = BrightDataClient(
serp_zone="serp_api", # SERP API 존 이름으로 대체
web_unlocker_zone="web_unlocker", # Web Unlocker API 존 이름으로 대체
)
훌륭합니다! 이제 Bright Data Python SDK 메서드를 Haystack 도구로 변환할 준비가 되었습니다.
2단계: SDK 함수를 도구로 변환하기
이 가이드 섹션에서는 Bright Data Python SDK의 SERP API 및 Web Unlocker 메서드를 Haystack 도구로 변환하는 방법을 보여드립니다. 이를 배우면 다른 SDK 메서드나 직접 API 호출도 쉽게 Haystack 도구로 변환할 수 있습니다.
SERP API 메서드를 AI 지원 도구로 실행하도록 변환하는 것으로 시작하세요:
from brightdata import SearchResult
from typing import Union, List
import json
from haystack.tools import Tool
parameters = {
"type": "object",
"properties": {
"query": {
"type": ["string", "array"],
"items": {"type": "string"},
"description": "Google에서 실행할 검색 쿼리 또는 쿼리 목록입니다."
},
"kwargs": {
"type": "object",
"description": "검색에 대한 추가 선택적 매개변수(예: 위치, 언어, 기기, num_results)."
}
},
"required": ["query"]
}
def serp_api_output_handler(results: Union[SearchResult, List[SearchResult]]) -> str:
if isinstance(results, list):
# SearchResult 인스턴스 목록 처리
output = [result.data for result in results]
else:
# 단일 SearchResult 처리
output = results.data
return json.dumps(output)
serp_api_tool = Tool(
name="serp_api_tool",
description="Bright Data SERP API를 호출하여 웹 검색을 수행하고 Google에서 SERP 데이터를 가져옵니다.",
parameters=parameters,
function=client.search.google,
outputs_to_string={ "handler": serp_api_output_handler },
outputs_to_state= {
"documents": {"handler": serp_api_output_handler }
}
)
위의 스니펫은 Bright Data SERP API용 Haystack 도구를 정의합니다. 도구 생성을 위해서는 이름, 설명, 입력 매개변수와 일치하는 JSON 스키마, 그리고 도구로 변환할 함수가 필요합니다.
이제 client.search.google() 은 특수 객체를 반환합니다. 따라서 함수 출력을 문자열로 변환하려면 사용자 정의 출력 핸들러가 필요합니다. 이 핸들러는 결과를 JSON으로 변환하고 문자열 출력 및 에이전트 상태로 매핑합니다.
방금 정의한 이 도구는 이제 AI 에이전트나 파이프라인에서 Google 검색을 실행하고 구조화된 SERP 데이터를 가져오는 데 사용할 수 있습니다.
마찬가지로 Web Unlocker 메서드를 호출하는 도구를 생성합니다:
parameters = {
"type": "object",
"properties": {
"url": {
"type": ["string", "array"],
"items": {"type": "string"},
"description": "스크래핑할 URL 또는 URL 목록입니다."
},
"country": {
"type": "string",
"description": "스크래핑을 지역화하기 위한 선택적 국가 코드."
},
},
"required": ["url"]
}
def web_unlocker_output_handler(results: Union[ScrapeResult, List[ScrapeResult]]) -> str:
if isinstance(results, list):
# ScrapeResult 인스턴스 목록 처리
output = [result.data for result in results]
else:
# 단일 ScrapeResult 처리
output = results.data
return json.dumps(output)
web_unlocker_tool = Tool(
name="web_unlocker_tool",
description="Bright Data Web Unlocker API를 호출하여 웹 페이지를 스크래핑하고 콘텐츠를 가져옵니다.",
parameters=parameters,
function=client.scrape.generic.url,
outputs_to_string={"handler": web_unlocker_output_handler},
outputs_to_state={"scraped_data": {"handler": web_unlocker_output_handler}}
)
이 새로운 도구를 통해 AI 에이전트는 웹 페이지가 스크래핑 방지 또는 봇 방지 솔루션으로 보호되어 있더라도 해당 콘텐츠를 스크래핑하고 접근할 수 있습니다.
멋지네요! 이제 두 개의 Bright Data Haystack 도구를 사용할 수 있습니다.
3단계: Haystack AI 에이전트에 도구 전달하기
위 도구는 직접 호출하거나, 채팅 생성기에 전달하거나, Haystack 파이프라인에서 사용하거나, AI 에이전트에 통합할 수 있습니다. 여기서는 AI 에이전트 방식을 보여드리지만, 문서를 따라 다른 세 가지 방법도 쉽게 테스트할 수 있습니다.
먼저, Haystack AI 에이전트에는 LLM 엔진이 필요합니다. 이 예시에서는 OpenAI 모델을 사용하지만, 지원되는 다른 LLM도 사용 가능합니다:
from haystack.components.generators.chat import OpenAIChatGenerator
os.environ["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>" # OpenAI API 키로 대체
# LLM 엔진 초기화
chat_generator = OpenAIChatGenerator(
model="gpt-5-mini"
)
앞서 강조한 바와 같이, 프로덕션 스크립트에서는 환경 변수에서 OpenAI API 키를 불러오세요. 여기서는 gpt-5-mini 모델을 구성했지만, 도구 호출을 지원하는 모든 OpenAI 모델이 작동합니다. 다른 지원되는 생성기도 호환됩니다.
다음으로 LLM 엔진과 도구를 함께 사용하여 Haystack AI 에이전트를 생성합니다:
from haystack.components.agents import Agent
agent = Agent(
chat_generator=chat_generator,
tools=[serp_api_tool, web_unlocker_tool], # Bright Data 도구
)
두 Bright Data 도구가 에이전트의 tools 인수로 전달되는 방식에 주목하세요. 이를 통해 OpenAI GPT-5 Mini로 구동되는 AI 에이전트가 맞춤형 Bright Data 도구를 호출할 수 있게 됩니다. 미션 완료!
4단계: AI 에이전트 실행
Haystack과 Bright Data의 통합을 테스트하려면 웹 검색 및 스크래핑이 포함된 작업을 고려해 보세요. 예를 들어, 다음 프롬프트를 사용하세요:
구글 회사에 관한 최신 주식 시장 뉴스 상위 3개를 서로 다른 주제로 식별하고, 해당 기사에 접근하여 각각에 대한 간략한 요약을 제공하세요.
이는 구글 투자에 관심 있는 분들에게 신속한 정보를 제공합니다.
Bright Data 기반 Haystack 에이전트에서 해당 프롬프트를 실행하려면 아래 코드 조각을 사용하세요:
from haystack.dataclasses import ChatMessage
agent.warm_up()
prompt = """
구글 회사에 관한 서로 다른 주제의 최신 주식 시장 뉴스 상위 3개를 찾아내고, 해당 기사에 접근하여 각각에 대한 간략한 요약을 제공하세요.
"""
chat_message = ChatMessage.from_user(prompt)
response = agent.run(messages=[chat_message])
그런 다음 AI 에이전트가 생성한 응답과 도구 사용에 대한 세부 정보를 다음과 같이 출력합니다:
for msg in response["messages"]:
role = msg._role.value
if role == "tool":
# 도구 출력 기록
for content in msg._content:
print("=== 도구 출력 ===")
print(json.dumps(content.result, indent=2))
elif role == "assistant":
# 어시스턴트 최종 메시지 기록
for content in msg._content:
if hasattr(content, "text"):
print("=== Assistant Response ===")
print(content.text)
완벽합니다! 이제 전체 코드를 확인하고 실행하여 작동하는지 검증하기만 하면 됩니다.
단계 #5: 완성된 코드
Bright Data 도구와 연결된 Haystack AI 에이전트의 최종 코드는 다음과 같습니다:
# pip install haystack-ai brightdata-sdk
import os
from brightdata import BrightDataClient, SearchResult, ScrapeResult
from typing import Union, List
import json
from haystack.tools import Tool
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.agents import Agent
from haystack.dataclasses import ChatMessage
# 필요한 환경 변수 설정
os.environ["BRIGHTDATA_API_TOKEN"] = "<YOUR_BRIGHT_DATA_API_KEY>" # 본인의 Bright Data API 키로 대체
os.environ["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>" # 본인의 OpenAI API 키로 대체
# Bright Data Python SDK 클라이언트 초기화
client = BrightDataClient(
serp_zone="serp_api", # SERP API 영역 이름으로 대체
web_unlocker_zone="web_unlocker", # Web Unlocker API 영역 이름으로 대체
)
# Bright Data Python SDK의 client.search.google()을 Haystack 도구로 변환
parameters = {
"type": "object",
"properties": {
"query": {
"type": ["string", "array"],
"items": {"type": "string"},
"description": "Google에서 실행할 검색 쿼리 또는 쿼리 목록입니다."
},
"kwargs": {
"type": "object",
"description": "검색에 대한 추가 선택적 매개변수(예: 위치, 언어, 기기, num_results)."
}
},
"required": ["query"]
}
def serp_api_output_handler(results: Union[SearchResult, List[SearchResult]]) -> str:
if isinstance(results, list):
# SearchResult 인스턴스 목록 처리
output = [result.data for result in results]
else:
# 단일 SearchResult 처리
output = results.data
return json.dumps(output)
serp_api_tool = Tool(
name="serp_api_tool",
description="Bright Data SERP API를 호출하여 웹 검색을 수행하고 Google에서 SERP 데이터를 가져옵니다.",
parameters=parameters,
function=client.search.google,
outputs_to_string={ "handler": serp_api_output_handler },
outputs_to_state= {
"documents": {"handler": serp_api_output_handler }
})
# Bright Data Python SDK의 client.scrape.generic.url()을 Haystack 도구로 변환
parameters = {
"type": "object",
"properties": {
"url": {
"type": ["string", "array"],
"items": {"type": "string"},
"description": "스크래핑할 URL 또는 URL 목록입니다."
},
"country": {
"type": "string",
"description": "스크래핑을 지역화하기 위한 선택적 국가 코드."
},
},
"required": ["url"]
}
def web_unlocker_output_handler(results: Union[ScrapeResult, List[ScrapeResult]]) -> str:
if isinstance(results, list):
# ScrapeResult 인스턴스 목록 처리
output = [result.data for result in results]
else:
# 단일 ScrapeResult 처리
output = results.data
return json.dumps(output)
web_unlocker_tool = Tool(
name="web_unlocker_tool",
description="Bright Data Web Unlocker API를 호출하여 웹 페이지를 스크래핑하고 콘텐츠를 가져옵니다.",
parameters=parameters,
function=client.scrape.generic.url,
outputs_to_string={"handler": web_unlocker_output_handler},
outputs_to_state={"scraped_data": {"handler": web_unlocker_output_handler}}
)
# LLM 엔진 초기화
chat_generator = OpenAIChatGenerator(
model="gpt-5-mini")
# Haystack AI 에이전트 초기화
agent = Agent(
chat_generator=chat_generator,
tools=[serp_api_tool, web_unlocker_tool], # Bright Data 도구
)
## 에이전트 실행
agent.warm_up()
prompt = """
구글 회사에 관한 다양한 주제의 최신 주식 시장 뉴스 상위 3개를 식별하고, 해당 기사에 접근하여 각각에 대한 간략한 요약을 제공하세요.
"""
chat_message = ChatMessage.from_user(prompt)
response = agent.run(messages=[chat_message])
## 도구 사용 정보와 함께 구조화된 형식으로 출력 인쇄
for msg in response["messages"]:
role = msg._role.value
if role == "tool":
# 도구 출력 기록
for content in msg._content:
print("=== 도구 출력 ===")
print(json.dumps(content.result, indent=2))
elif role == "assistant":
# 어시스턴트 최종 메시지 기록
for content in msg._content:
if hasattr(content, "text"):
print("=== 어시스턴트 응답 ===")
print(content.text)
자, 이제 완성되었습니다! 약 130줄의 코드로 웹 검색 및 스크래핑이 가능하며 다양한 작업을 수행하고 여러 사용 사례를 커버하는 AI 에이전트를 구축했습니다.
6단계: 통합 테스트
스크립트를 실행하면 다음과 같은 결과를 확인할 수 있습니다:
이는 오늘의 “Google 주식 시장 뉴스” 쿼리에 대한 결과로, 정확히 예상한 대로입니다!
일반적인 AI 에이전트만으로는 이런 작업을 수행할 수 없습니다. 기본 LLM은 외부 도구 없이는 실시간 웹과 검색 엔진에 직접 접근할 수 없습니다. 내장된 그라운딩 도구조차도 보통 제한적이고 느리며, Bright Data처럼 모든 웹사이트에 접근할 수 있는 확장성을 갖추지 못합니다.
로그에는 SERP API 호출의 모든 세부 정보가 포함됩니다:
또한 Google 검색 결과에서 선택한 뉴스 기사에 대한 Web Unlocker 호출도 확인할 수 있습니다:
자, 이제 Bright Data 도구와 완벽하게 통합된 Haystack AI 에이전트를 보유하게 되었습니다.
Haystack 내 Bright Data Web MCP 통합
Haystack을 Bright Data에 연결하는 또 다른 방법은 Web MCP를 이용하는 것입니다. 이 MCP 서버는 Bright Data의 가장 강력한 기능 다수를 AI 활용이 가능한 대규모 도구 모음으로 제공합니다.
Web MCP에는 Bright Data의 웹 자동화 및 데이터 수집 인프라 위에 구축된 60개 이상의 도구가 포함됩니다. 무료 계정에서도 두 가지 매우 유용한 도구를 이용할 수 있습니다:
| 도구 | 설명 |
|---|---|
search_engine |
Google, Bing 또는 Yandex 결과를 JSON 또는 Markdown 형식으로 가져옵니다. |
scrape_as_markdown |
모든 웹페이지를 깨끗한 마크다운으로 스크랩하면서 봇 방지 조치를 우회합니다. |
프리미엄 등급(Pro 모드)을 활성화하면 Web MCP는 Amazon, Zillow, LinkedIn, YouTube, TikTok, Google Maps 등 주요 플랫폼에 대한 구조화된 데이터 추출 기능을 제공합니다. 또한 자동화된 브라우저 작업 도구가 함께 제공됩니다.
Haystack에서 Bright Data의 Web MCP를 활용하는 방법을 살펴보겠습니다!
필수 조건
오픈 소스 Web MCP 패키지는 Node.js 기반으로 구축되었습니다. 즉, Web MCP를 로컬에서 실행하고 Haystack AI 에이전트를 연결하려면 컴퓨터에 Node.js가 설치되어 있어야 합니다.
또는 로컬 설정이 전혀 필요 없는 원격 Web MCP 인스턴스에 연결할 수도 있습니다.
1단계: MCP–Haystack 통합 설치
Python 프로젝트에서 다음 명령어를 실행하여 MCP–Haystack 통합을 설치하세요:
pip install mcp-haystack
이 패키지는 로컬 또는 원격 MCP 서버에 연결할 수 있는 클래스에 접근하기 위해 필요합니다.
2단계: 로컬에서 웹 MCP 테스트
Haystack을 Bright Data의 Web MCP에 연결하기 전에, 로컬 머신에서 MCP 서버를 로컬로 실행할 수 있는지 확인하십시오.
참고: 웹 MCP는 원격 서버 ( SSE 및 스트리밍 HTTP를 통해)로도 사용할 수 있습니다. 이 옵션은 기업용 시나리오에 더 적합합니다.
Bright Data 계정을 생성하여 시작하세요. 이미 계정이 있다면 로그인하세요. 빠른 설정을 위해 대시보드의 “MCP” 섹션에 있는 지침을 따르세요:
추가 안내가 필요한 경우 아래 지침을 참조하십시오.
먼저 Bright Data API 키를 생성하세요. 로컬 Web MCP 인스턴스 인증에 곧 필요하므로 안전한 곳에 보관하십시오.
그런 다음 @brightdata/mcp 패키지를 통해 Web MCP를 컴퓨터에 전역 설치하세요:
npm install -g @brightdata/mcp
다음 명령어를 실행하여 MCP 서버가 작동하는지 확인하세요:
API_TOKEN="<YOUR_BRIGHT_DATA_API>" npx -y @brightdata/mcp
또는 PowerShell에서 동일하게 실행:
$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; npx -y @brightdata/mcp
<YOUR_BRIGHT_DATA_API> 자리 표시자를 Bright Data API 키로 대체하세요. 두 명령어(동등한 효과)는 필수 API_TOKEN 환경 변수를 설정하고 웹 MCP 서버를 실행합니다.
성공 시 다음과 유사한 로그가 표시됩니다:
첫 실행 시 Web MCP는 Bright Data 계정에 두 개의 영역을 생성합니다:
이 두 서비스는 Web MCP의 60개 이상의 도구를 구동하는 데 필수적입니다.
존이 생성되었는지 확인하려면 대시보드의 “프록시 및 스크래핑 인프라”페이지로 이동하세요. 테이블에 두 존이 모두 표시되어야 합니다:
참고: Web MCP 무료 계층 에서는 search_engine 및 scrape_as_markdown 도구만 이용할 수 있습니다.
모든 도구를 사용하려면 PRO_MODE="true" 환경 변수를 설정하여 Pro 모드를 활성화하세요:
API_TOKEN="<YOUR_BRIGHT_DATA_API>" PRO_MODE="true" npx -y @brightdata/mcp
또는 Windows의 경우:
$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; $Env:PRO_MODE="true"; npx -y @brightdata/mcp
프로 모드는 60개 이상의 모든 도구를 사용할 수 있게 하지만, 무료 계정에는 포함되지 않으며 추가 요금이 발생할 수 있습니다.
잘하셨습니다! 이제 웹 MCP 서버가 컴퓨터에서 정상적으로 실행되는 것을 확인했습니다. Haystack을 로컬에서 서버를 실행하고 연결하도록 구성할 예정이므로 프로세스를 종료하세요.
3단계: Haystack에서 Web MCP에 연결하기
다음 코드 줄을 사용하여 Web MCP에 연결하세요:
from haystack_integrations.tools.mcp import StdioServerInfo, MCPToolset
BRIGHT_DATA_API_KEY = "<YOUR_BRIGHT_DATA_API_KEY>" # 본인의 Bright Data API 키로 대체
# STDIO를 통해 웹 MCP 서버에 연결하기 위한 구성
web_mcp_server_info = StdioServerInfo(
command="npx",
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_KEY,
"PRO_MODE": "true" # Pro 도구 활성화 (선택 사항)
}
)
위의 StdioServerInfo 객체는 앞서 테스트한 npx 명령어를 반영하지만, Haystack이 사용할 수 있는 형태로 래핑합니다. 또한 웹 MCP 서버 구성을 위해 필요한 환경 변수를 포함합니다:
API_TOKEN: 필수. 이전에 생성한 Bright Data API 키로 설정하세요.PRO_MODE: 선택 사항. 무료 계층을 유지하고search_engine및scrape_as_markdown도구만 사용하려면 제거하세요.
다음으로 Web MCP가 제공하는 모든 도구에 접근하려면:
web_mcp_toolset = MCPToolset(
server_info=web_mcp_server_info,
invocation_timeout=180 # 3분
)
모든 도구를 로드하고 정보를 출력하여 통합이 정상 작동하는지 확인하세요:
web_mcp_toolset.warm_up()
for tool in web_mcp_toolset.tools:
print(f"Name: {tool.name}")
print(f"Description: {tool.name}n")
Pro 모드를 사용 중이라면 60개 이상의 모든 도구가 표시됩니다:
자, 이제 시작합니다! Haystack의 Bright Data Web MCP 통합이 완벽하게 작동합니다.
4단계: 통합 테스트
모든 도구를 설정했으면, AI 에이전트 (앞서 시연한 대로)나 Haystack 파이프라인에서 사용하세요. 예를 들어, AI 에이전트가 다음 프롬프트를 처리하도록 하려면:
다음 Crunchbase 회사 URL에서 유용한 인사이트를 포함한 마크다운 보고서를 반환하세요:
"https://www.crunchbase.com/organization/apple"
이는 Web MCP 도구가 필요한 작업의 예시입니다.
에이전트에서 다음과 같이 실행하세요:
agent = Agent(
chat_generator=chat_generator,
tools=web_mcp_toolset, # Bright Data Web MCP 도구
)
## 에이전트 실행
agent.warm_up()
prompt = """
다음 Crunchbase 기업 URL에서 유용한 인사이트를 포함한 Markdown 보고서를 반환하세요:
"https://www.crunchbase.com/organization/apple"
"""
chat_message = ChatMessage.from_user(prompt)
response = agent.run(messages=[chat_message])
결과는 다음과 같습니다:
호출되는 도구는 web_data_crunchbase_company Pro 도구입니다:
내부적으로는 해당 도구가 Bright Data Crunchbase Scraper를 활용하여 지정된 Crunchbase 페이지에서 구조화된 정보를 추출합니다.
Crunchbase 스크래핑은 일반 LLM이 단독으로 처리할 수 없는 작업입니다! 이는 다양한 사용 사례를 지원하는 Haystack의 Web MCP 통합 기능의 강력한 성능을 입증합니다.
단계 #5: 완성된 코드
Haystack에서 Bright Data Web MCP를 연결하는 완성된 코드는 다음과 같습니다:
# pip install haystack-ai mcp-haystack
from haystack_integrations.tools.mcp import StdioServerInfo, MCPToolset
import os
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.agents import Agent
from haystack.dataclasses import ChatMessage
import json
os.environ["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>" # Bright Data API 키로 대체하세요
BRIGHT_DATA_API_KEY = "<YOUR_BRIGHT_DATA_API_KEY>" # Bright Data API 키로 대체하세요
# STDIO를 통해 Web MCP 서버에 연결하기 위한 구성
web_mcp_server_info = StdioServerInfo(
command="npx",
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_KEY,
"PRO_MODE": "true" # Pro 도구 활성화 (선택 사항)
})
# 웹 MCP 서버에서 노출된 사용 가능한 MCP 도구 로드
web_mcp_toolset = MCPToolset(
server_info=web_mcp_server_info,
invocation_timeout=180, # 3분
tool_names=["web_data_crunchbase_company"]
)
# LLM 엔진 초기화
chat_generator = OpenAIChatGenerator(
model="gpt-5-mini")
# Haystack AI 에이전트 초기화
agent = Agent(
chat_generator=chat_generator,
tools=web_mcp_toolset, # Bright Data 웹 MCP 도구
)
## 에이전트 실행
agent.warm_up()
prompt = """
다음 Crunchbase 회사 URL에서 유용한 인사이트를 포함한 Markdown 보고서를 반환하세요:
"https://www.crunchbase.com/organization/apple"
"""
chat_message = ChatMessage.from_user(prompt)
response = agent.run(messages=[chat_message])
## 도구 사용 정보와 함께 구조화된 형식으로 출력
for msg in response["messages"]:
role = msg._role.value
if role == "tool":
# 도구 출력 기록
for content in msg._content:
print("=== 도구 출력 ===")
print(json.dumps(content.result, indent=2))
elif role == "assistant":
# 어시스턴트 최종 메시지 기록
for content in msg._content:
if hasattr(content, "text"):
print("=== Assistant Response ===")
print(content.text)
결론
이 가이드에서는 Haystack에서 Bright Data 통합을 활용하는 방법을 배웠습니다. 사용자 정의 도구를 통해서든 MCP를 통해서든 말이죠.
이 설정은 Haystack 에이전트 및 파이프라인의 AI 모델이 웹 검색 수행, 구조화된 데이터 추출, 실시간 웹 데이터 피드 접근, 웹 상호작용 자동화를 가능하게 합니다. 이 모든 것은 Bright Data의 AI 생태계 내 전체 서비스 제품군 덕분에 실현됩니다.
Bright Data 계정을 무료로 생성하고 강력한 AI 지원 웹 데이터 도구를 탐색해 보세요!