상담원 구축이 처음인 경우에는 먼저 상담원 소개 및 smolagent 가이드 투어.
코드 에이전트 #
여러 연구 논문 에 따르면 LLM이 액션(도구 호출)을 코드에 작성하는 것이 업계 전반에서 '사용할 도구 이름과 인수의 JSON으로 액션을 작성'하는 현재의 도구 호출 표준 형식보다 훨씬 나은 것으로 나타났습니다.
코드가 더 나은 이유는 무엇인가요? 컴퓨터가 수행하는 작업을 잘 표현할 수 있도록 코드 언어를 특별히 만들었기 때문입니다. JSON 스니펫이 더 나은 방법이었다면 이 패키지는 JSON 스니펫으로 작성되었을 것이고 악마는 우리를 비웃었을 것입니다.
코드는 컴퓨터에서 동작을 표현하는 더 나은 방법일 뿐입니다. 더 나은 방법이 있습니다:
- 구성 가능성: JSON 액션을 서로 중첩하거나 파이썬 함수를 정의하는 것과 같은 방식으로 나중에 재사용할 JSON 액션 집합을 정의할 수 있을까요?
- 개체 관리: 와 같은 작업의 출력을 어떻게 저장합니까?
생성_이미지
을 JSON으로 변환할 수 있나요? - 일반성: 코드는 컴퓨터로 할 수 있는 모든 작업을 간단하게 표현할 수 있도록 만들어졌습니다.
- LLM 교육 말뭉치에서의 대표성: 이미 많은 양질의 액션이 LLM 트레이닝 코퍼스에 포함되어 있는 이 하늘의 축복을 활용해보면 어떨까요?
이는 아래 그림에 설명되어 있으며, 다음에서 가져온 것입니다. 실행 코드 액션으로 더 나은 LLM 에이전트 유도.

그렇기 때문에 코드 에이전트(이 경우에는 파이썬 에이전트)를 제안하는 데 중점을 두었고, 이는 안전한 파이썬 인터프리터를 구축하는 데 더 많은 노력을 기울이는 것을 의미했습니다.
로컬 파이썬 인터프리터 #
기본적으로 코드 에이전트
는 사용자 환경에서 LLM 생성 코드를 실행합니다. 이 실행은 바닐라 파이썬 인터프리터에 의해 수행되지 않습니다. 로컬 파이썬 인터프리터
를 처음부터 다시 설계했습니다. 이 인터프리터는 보안을 위해 설계되었습니다:
- 사용자가 명시적으로 전달한 목록으로 가져오기를 제한하기
- 무한 루프와 리소스 폭증을 방지하기 위해 작업 수에 제한을 둡니다.
- 사전 정의되지 않은 작업을 수행하지 않습니다.
저희는 많은 사용 사례에서 이 기능을 사용해왔지만 환경에 대한 어떠한 피해도 관찰하지 못했습니다.
그러나 이 솔루션이 완벽한 것은 아닙니다. 악의적인 행동에 대해 미세 조정된 LLM이 여전히 사용자 환경을 해칠 수 있는 경우를 상상할 수 있습니다. 예를 들어 다음과 같은 무해한 패키지를 허용한 경우입니다. 베개
이미지를 처리하기 위해 LLM이 수천 개의 이미지 저장을 생성하여 하드 드라이브를 부풀릴 수 있습니다. LLM 엔진을 직접 선택했다면 그럴 가능성은 낮지만 이런 일이 발생할 수도 있습니다.
따라서 더욱 주의를 기울이고 싶다면 아래에 설명된 원격 코드 실행 옵션을 사용할 수 있습니다.
E2B 코드 실행기 #
보안을 극대화하기 위해 E2B와의 통합을 사용하여 샌드박스 환경에서 코드를 실행할 수 있습니다. 이는 격리된 컨테이너에서 코드를 실행하는 원격 실행 서비스로, 코드가 로컬 환경에 영향을 미칠 수 없도록 합니다.
이를 위해서는 E2B 계정을 설정하고 다음을 설정해야 합니다. E2B_API_KEY
를 환경 변수에 추가하세요. 로 이동합니다. E2B의 빠른 시작 문서 에서 자세한 내용을 확인하세요.
그런 다음 다음을 사용하여 설치할 수 있습니다. pip 설치 e2b-코드 인터프리터 파이썬-dotenv
.
이제 설정이 완료되었습니다!
코드 실행기를 E2B로 설정하려면 다음과 같이 플래그를 전달하면 됩니다. use_e2b_executor=true
를 초기화할 때 코드 에이전트
. 에 모든 도구의 종속성을 추가해야 합니다. 추가_승인된_수입
를 클릭하여 실행기가 설치하도록 합니다.
복사됨
smolagent에서 CodeAgent, VisitWebpageTool, HfApiModel을 가져옵니다. 에이전트 = 코드에이전트( tools = [VisitWebpageTool()], model=HfApiModel(), additional_authorized_imports=["requests", "markdownify"], use_e2b_executor=True ) agent.run("에이브러햄 링컨이 가장 좋아했던 애완동물은 무엇인가요?")
E2B 코드 실행은 현재 멀티 에이전트와 호환되지 않습니다. 에이전트가 원격으로 실행해야 하는 코드 블롭을 호출하는 것은 엉망이기 때문입니다. 하지만 이 기능을 추가하기 위해 노력 중입니다!