이 노트북에서는 멀티 에이전트 웹 브라우저: 여러 에이전트가 협업하여 웹을 사용하여 문제를 해결하는 에이전트 시스템!
간단한 계층 구조가 될 것입니다. 관리 에이전트
객체를 사용하여 관리되는 웹 검색 에이전트를 래핑합니다:
복사됨
+----------------+ | 관리자 상담원 | +----------------+ | _______________|______________ | | 코드 인터프리터 +--------------------------------+ 도구 | 관리 에이전트 | | +------------------+ | | | 웹 검색 에이전트 | | | +------------------+ | | | | | | 웹 검색 도구 | | 웹페이지 방문 도구 | | +--------------------------------+
이 시스템을 설정해 보겠습니다.
아래 줄을 실행하여 필요한 종속성을 설치합니다:
복사됨
!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.
우리에게는 상당한 규모의 동력원이 필요할 것 같습니다. 스케일링 가설 는 계속 유효합니다.
에이전트들이 효율적으로 협업하여 과제를 해결했습니다! ✅
💡 이 오케스트레이션을 더 많은 에이전트로 쉽게 확장할 수 있습니다. 하나는 코드 실행을, 하나는 웹 검색을, 하나는 파일 로딩을 처리하는 식으로...