데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      똑똑한 Agent를 만드는 방법: 툴 (Tool) 사용

      한성원 24.04.19
      684 6 0
      DEVOTEE 요약
      툴 사용은 에이전트(Agent) 개발의 주요 설계 패턴 중 하나로, LLM이 다양한 작업을 수행할 수 있도록 지원합니다. 이는 정보 수집, 액션 실행, 데이터 조작 등을 포함하여 사용자 질문에 대한 답변 생성, 웹 검색, 이메일 보내기 등에 활용됩니다. 또한, 툴의 효과적인 사용을 위해 추론 방법이 개발되고 있으며, 이는 에이전트의 성능 향상에 중요한 역할을 합니다.
      DEVOTEE 추천 블로그

      툴 (Tool) 사용은 Agent 개발의 주요 설계 패턴 중 하나로, 정보를 수집하거나 액션을 실행하거나 데이터를 조작하기 위해 호출할 수 있는 함수를 LLM에게 제공하는 것입니다.

      사용자가 Agent에게 “세계에서 인구가 가장 많은 나라는 어디인가요?”라고 질문하면, LLM은 아래의 과정을 통해 사용자에 제공할 답변을 생성하게 됩니다.

      1. 요청 분석: LLM은 사용자 질문을 분석하여 관련 정보가 필요하다는 것을 파악합니다.

      2. 툴 선택: LLM은 자신이 가지고 있는 툴 중에서 웹 검색 툴이 이 작업에 적합하다고 판단합니다.

        그리고 툴을 호출하기 위해 특정 형식의 명령어를 생성합니다. (예: {tool: web-search, query: “세계에서 가장 인구가 많은 나라"})

      3. 툴 실행: LLM은 생성된 명령어를 Agent 내부의 툴 실행 모듈에게 전달하여 실행하도록 합니다.

      4. 응답 생성: LLM은 툴 실행 결과를 기반으로 사용자 질문에 대한 답변을 생성합니다.

      최근에는 툴 활용의 범위가 더욱 확장되고 있습니다.

      LLM은 웹 사이트, 위키피디아, 논문 등 다양한 출처로부터 정보를 탐색할 수 있고, 이메일 보내기, 일정 관리 등의 생산성 도구와 연동하며,

      이미지를 생성하거나 및 해석하는 등 다양한 작업을 수행하기 위해 툴을 사용하고 있습니다.


      툴 선택을 위한 컨텍스트

      LLM이 작업을 완료하기 위해 필요한 적절한 툴을 선택할 수 있도록 하기 위해서는 컨텍스트 (context)를 통해 툴 기능에 대한 상세 설명을 제공해야 합니다.

      이 컨텍스트에는 해당 툴이 수행하는 작업 설명과 툴이 요구하는 인자 (argument)에 대한 세부 정보가 포함되어야 합니다.

      이를 통해 LLM은 주어진 작업을 완료하기 위해 호출해야 하는 올바른 툴을 선택할 수 있도록 학습할 수 있습니다.


      LLM이 활용할 수 있는 툴의 개수가 수백개 수준으로 많아진다면, 모든 툴에 대한 설명을 LLM의 컨텍스트에 포함시키는 것은 비효율적입니다.

      이런 경우에는, Gorilla 논문에서 제안하는 바와 같이 현재 수행 중인 작업 단계와 가장 관련성이 높은 툴들만 LLM의 컨텍스트에 포함시키는 기법을 사용할 수 있습니다.

      이는 RAG (Retrieval Augmented Generation) 시스템에서 사용자의 질문과 관련성이 높은 텍스트만 검색하여 컨텍스트에 포함시키는 것과 유사한 방법입니다.


      다단계 추론 작업 (Multi-Step Reasoning Task)에서의 툴 활용

      단순한 정보 검색이나 액션 실행을 넘어, 여러 단계의 추론 과정을 통해 최종 결과를 도출해내는 다단계 추론 작업에서는, 여러 개의 툴을 조합하여 복잡한 문제를 해결하게 됩니다.

      예를 들어, 영화 예매 작업을 수행하는 Agent는 “내일 건대입구에서 파묘 영화 예매"라는 사용자 요청에 대해

      아래와 같은 CoT (Chain-of-Thought) 추론 과정을 통해 여러 툴을 사용하며 작업을 완료하게 됩니다.

      1. 툴 선택: “내일"의 실제 날짜 조회

      2. 툴 실행: {tool: “extract_date_time”, arguments: {query: “내일"}} → “2024-04-07”

      3. 툴 선택: “건대입구"에서 “2024-04-07” 날짜에 “파묘"를 상영하는 영화관 조회

      4. 툴 실행: {tool: “get_movie_theaters”, arguments: {location: “건대입구", movie: “파묘", date: “2024-04-07”}} → “cgv 건대입구"

      5. 툴 선택: “cgv 건대입구"에서 “2024-04-07” 날짜의 “파묘" 상영 시간표 검색

      6. 툴 실행: {tool: “get_movie_schedules”, arguments: {theater: “cgv 건대입구", movie: “파묘", date: “2024-04-07”}} → “5관 4층: 20240407 09:00 ~ 11:24”

      7. 응답 생성: “내일 건대입구에서 파묘 영화의 상영 시간표를 조회 했어요. 상영 시간표를 선택해 주세요. 5관 4층: 20240407 09:00 ~ 11:24”

      위에서 설명한 CoT 추론 방법은 각 단계마다 필요한 툴을 호출하고, 툴 실행 결과를 구체적인 값으로 명시하는 방식으로 추론 과정을 수행합니다.

      각 단계에서 필요한 툴을 호출하고, 이전 단계의 결과를 다음 단계의 입력으로 사용하기 때문에, 이전 단계의 툴 실행이 완료되어야 다음 단계의 추론을 시작할 수 있어 비효율적일 수 있습니다.

      또한 LLM은 특정 시점의 도메인 지식에 맞춰 툴을 사용하도록 학습이 되어, 도메인 지식이 변경된다면 툴 사용의 정확도가 저하될 수 있습니다.


      CoA (Chain-of-Abstraction) 는 다단계 추론 작업에서 LLM이 툴을 안정적이고 효율적으로 사용하도록 제안된 추론 방법입니다.

      CoA 추론 방법은 다음과 같은 두 단계로 구성됩니다.

      1. 추상 추론 체인 생성: LLM은 먼저 추상적인 개념만으로 구성된 추론 체인을 생성합니다.

        이 단계에서 LLM은 특정 도메인 지식 대신 추상적인 변수 (예: y1, y2, y3 등)를 사용합니다.

        이러한 방식을 통해 LLM은 모델 파라미터에 특정 예시 지식을 포함하지 않고도 일반적인 추론 전략을 학습할 수 있습니다.

      2. 툴 호출을 통한 추론 체인 구체화: 생성된 추상 추론 체인을 기반으로 LLM은 각 단계에서 필요한 툴을 호출합니다.

        툴로부터 얻은 실제 정보로 추상적인 변수를 대체하여 추론 체인을 구체화 합니다.

      영화 예매 Agent의 예제에 CoA 추론 방법을 적용하면 아래와 같은 과정을 통해 작업을 완료하게 됩니다.

      1. 추상 추론 체인 생성

        (1) 날짜 확인 [“내일"의 실제 날짜 -> y1]

        (2) 상영관 검색 [“건대입구"에서 y1에 “파묘"를 상영하는 상영관 -> y2]

        (3) 상영 시간 조회 [y2에서 y1의 “파묘" 시간표 검색 -> y3]

      2. 툴 호출을 통한 추론 체인 구체화

        (1) y1 = {tool: “extract_date_time”, arguments: {query: “내일"}}

        (2) y2 = {tool: “get_movie_theaters”, arguments: {location: “건대입구", movie: “파묘", date: y1}}

        (3) y3 = {tool: “get_movie_schedules”, arguments: {theater: y2, movie: “파묘", date: y1}}

      3. 응답 생성: “내일 건대입구에서 파묘 영화의 상영 시간표를 조회 했어요. 상영 시간표를 선택해 주세요. 5관 4층: 20240407 09:00 ~ 11:24”

      CoA 추론 방법은 추상적인 개념만으로 구성된 추론 체인을 생성하여 특정 도메인 지식에 대한 의존성을 줄이고 일반적인 추론 전략을 학습할 수 있습니다.

      또한 추상 추론 체인을 기반으로 필요한 툴을 병렬적으로 실행할 수 있어 전체적인 추론 속도를 향상 시킬 수 있습니다.


      Agent 개발에서 툴 사용은 정보 수집, 액션 실행, 데이터 조작 등 다양한 작업에서 활용되는 중요한 설계 패턴입니다.

      Agent는 툴을 통해 외부 세계와 상호 작용하고 다양한 정보와 기능에 접근하여 사용자에게 더욱 유용하고 지능적인 서비스를 제공할 수 있습니다.

      툴 사용은 Agent 개발의 핵심 요소이며, LLM이 툴을 효과적으로 활용하는 능력은 Agent의 성능을 결정하는 중요한 요소입니다.

      Agent의 능력을 더욱 향상시켜나가기 위해서는 발전된 툴과 추론 방법의 개발이 필요합니다.


      참고 자료

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      한성원 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기