이 노트북에서는 멀티 에이전트 웹 브라우저: 여러 에이전트가 협업하여 웹을 사용하여 문제를 해결하는 에이전트 시스템!
간단한 계층 구조가 될 것입니다. 관리 에이전트 객체를 사용하여 관리되는 웹 검색 에이전트를 래핑합니다:
복사됨
+----------------+
| 관리자 상담원 |
+----------------+
|
_______________|______________
| |
코드 인터프리터 +--------------------------------+
도구 | 관리 에이전트 |
| +------------------+ |
| | 웹 검색 에이전트 | |
| +------------------+ |
| | | |
| 웹 검색 도구 | |
웹페이지 방문 도구 | |
+--------------------------------+이 시스템을 설정해 보겠습니다.
아래 줄을 실행하여 필요한 종속성을 설치합니다:
복사됨
!pip 설치 마크다운파이 덕덕고-검색 smolagents -업그레이드 -q
HF 추론 API를 호출하기 위해 로그인해 보겠습니다:
복사됨
huggingface_hub에서 로그인 가져오기 login()
⚡️ 에이전트는 다음에 의해 구동됩니다. Qwen/Qwen2.5-Coder-32B-Instruct 사용 HfApiModel 클래스: 추론 API를 사용하면 모든 OS 모델을 빠르고 쉽게 실행할 수 있습니다.
참고: 추론 API는 다양한 기준에 따라 모델을 호스팅하며, 배포된 모델은 사전 통지 없이 업데이트되거나 교체될 수 있습니다. 자세히 알아보기 여기.
복사됨
model_id = "Qwen/Qwen2.5-Coder-32B-Instruct"
🔍 웹 검색 도구 만들기 #
웹 브라우징의 경우 이미 기존에 사용하던 덕덕고 검색 도구 도구를 사용하여 Google 검색에 상응하는 기능을 제공합니다.
그러나 그 다음에는 다음과 같은 페이지로 이동할 수 있어야 합니다. 덕덕고 검색 도구. 이를 위해 라이브러리의 내장된 웹페이지 도구 방문하지만 어떻게 작동하는지 다시 빌드해 보겠습니다.
이제 웹페이지 도구 방문 도구를 사용하여 처음부터 마크다운파이.
복사됨
import re
요청 가져오기
에서 마크다운파이 가져오기 마크다운파이
요청.예외에서 요청 예외 가져오기
에서 smolagent 가져오기 도구
@tool
def visit_webpage(url: str) -> str:
"""지정된 URL의 웹페이지를 방문하고 그 내용을 마크다운 문자열로 반환합니다.
Args:
url: 방문할 웹페이지의 URL입니다.
반환값:
마크다운으로 변환된 웹페이지의 콘텐츠 또는 요청이 실패한 경우 오류 메시지입니다.
"""
try:
# URL로 GET 요청 보내기
response = requests.get(url)
response.raise_for_status() # 불량 상태 코드에 대한 예외 발생
# HTML 콘텐츠를 마크다운으로 변환하기
마크다운_콘텐츠 = 마크다운파이(응답.텍스트).스트립()
# 여러 줄 바꿈 제거
마크다운_콘텐츠 = re.sub(r"\n{3,}", "\n\n", 마크다운_콘텐츠)
반환 마크다운_콘텐츠
요청 예외를 e로 제외합니다:
반환 f"웹 페이지를 가져오는 동안 오류가 발생했습니다: {str(e)}"
예외를 e로 제외합니다:
return f"예기치 않은 오류가 발생했습니다: {str(e)}"이제 도구를 초기화하고 테스트해 보겠습니다!
복사됨
print(visit_webpage("https://en.wikipedia.org/wiki/Hugging_Face")[:500])멀티 에이전트 시스템 구축 🤖🤝🤖 #
이제 모든 도구를 갖추었으니 검색 그리고 방문_웹페이지를 사용하여 웹 에이전트를 만들 수 있습니다.
이 에이전트에 대해 어떤 구성을 선택해야 하나요?
- 웹 브라우징은 병렬 도구 호출이 필요하지 않은 단일 타임라인 작업이므로 JSON 도구 호출이 잘 작동합니다. 따라서 우리는
JsonAgent. - 또한 웹 검색의 경우 정답을 찾기 전에 여러 페이지를 탐색해야 하는 경우가 있기 때문에
max_steps를 10으로 설정합니다.
복사됨
에서 smolagent 가져오기(
CodeAgent,
ToolCallingAgent,
HfApiModel,
ManagedAgent,
DuckDuckGoSearchTool,
LiteLLMModel,
)
모델 = HfApiModel(model_id)
웹에이전트 = 도구 호출 에이전트(
tools=[DuckDuckGoSearchTool(), visit_webpage],
model=model,
max_steps=10,
)그런 다음 이 에이전트를 관리 에이전트 를 호출하여 관리자 에이전트가 호출할 수 있도록 합니다.
복사됨
managed_web_agent = ManagedAgent(
에이전트=웹에이전트,
name="search",
description="웹 검색을 실행합니다. 쿼리를 인수로 전달하세요.",
)마지막으로 관리자 에이전트를 생성하고 초기화 시 관리 에이전트를 해당 관리자 에이전트에 전달합니다. 관리되는 에이전트 인수입니다.
이 에이전트는 계획과 사고를 담당하기 때문에 고급 추론이 도움이 될 것입니다. 코드 에이전트 가 최선의 선택이 될 것입니다.
또한 현재 연도를 포함하며 추가 데이터 계산을 수행하는 질문을 하고 싶으므로 다음과 같이 추가해 보겠습니다. 추가_승인된_수입=["시간", "눔피", "판다"]를 사용하여 상담원에게 이러한 패키지가 필요한 경우를 대비하세요.
복사됨
관리자_에이전트 = 코드에이전트(
tools=[],
model=model,
managed_agents=[managed_web_agent],
additional_authorized_imports=["time", "numpy", "pandas"],
)여기까지입니다! 이제 시스템을 실행해 봅시다! 계산과 조사가 모두 필요한 질문을 선택합니다:
복사됨
answer = manager_agent.run("LLM 교육이 2030년까지 현재 리듬으로 계속 확장된다면 2030년까지 가장 큰 규모의 교육을 실행하는 데 필요한 전력은 GW 단위로 얼마인가요? 이는 다른 국가와 비교했을 때 어느 정도에 해당하나요? 사용된 수치의 출처를 알려주세요.")이 보고서가 그 해답입니다:
복사됨
현재 성장 전망과 에너지 소비량 추정에 따르면, LLM 교육이 현재와 같은 속도로 계속 확장될 경우 2030년까지 현재 속도로 계속 확장된다면 1. 2030년까지 가장 큰 규모의 트레이닝을 진행하는 데 필요한 전력은 약 303.74GW이며, 이는 이는 연간 약 2,660,762GWh로 환산됩니다. 2. 이를 각국의 전력 소비량과 비교해보면: - 이는 중국 전체 전력 소비량의 약 34%에 해당하는 양입니다. - 이는 인도(184%), 러시아(267%), 일본(291%)의 총 전력 소비량을 초과하는 양입니다. - 이탈리아나 멕시코와 같은 국가의 전력 소비량의 거의 9배에 달합니다. 3. 수치 출처: - 향후 LLM 교육에 필요한 5GW의 초기 추정치는 AWS의 CEO Matt Garman이 제공한 것입니다. - 성장 전망은 스프링스의 시장 조사에서 얻은 79.80%의 연평균 성장률(CAGR)을 사용했습니다. - 국가별 전력 소비 데이터는 주로 미국 에너지 정보 관리국에서 제공한 것입니다. 2021.
우리에게는 상당한 규모의 동력원이 필요할 것 같습니다. 스케일링 가설 는 계속 유효합니다.
에이전트들이 효율적으로 협업하여 과제를 해결했습니다! ✅
💡 이 오케스트레이션을 더 많은 에이전트로 쉽게 확장할 수 있습니다. 하나는 코드 실행을, 하나는 웹 검색을, 하나는 파일 로딩을 처리하는 식으로...
