paint-brush
LLM을 위한 구문 오류가 없고 일반화 가능한 도구 사용: ToolDec~에 의해@textmodels

LLM을 위한 구문 오류가 없고 일반화 가능한 도구 사용: ToolDec

너무 오래; 읽다

연구원들은 오류를 줄이고 도구 사용을 개선하는 LLM용 유한 상태 기계 유도 디코딩인 TOOLDEC을 제안합니다.
featured image - LLM을 위한 구문 오류가 없고 일반화 가능한 도구 사용: ToolDec
Writings, Papers and Blogs on Text Models HackerNoon profile picture
0-item

저자:

(1) Kexun Zhang, UC Santa Barbara 및 균등 기여;

(2) Hongqiao Chen, Northwood 고등학교 및 균등 기여;

(3) 카네기멜론대학교 레이 리(Lei Li);

(4) 윌리엄 양 왕(UC Santa Barbara).

링크 표

3. TOOLDEC: 유한 상태 디코딩을 통한 LLM 도구 사용

구문적으로 올바른 도구 호출은 기존 도구 이름을 참조하고 유형을 준수하는 인수를 전달해야 합니다. FSM(Finite-State Machine)을 사용하여 도구 호출의 구문을 검증하는 것이 간단하다는 사실에 착안하여 FSM이 안내하는 제한된 디코딩 알고리즘인 TOOLDEC을 제안합니다. 각 디코딩 단계에서 모델은 구문적으로 올바른 토큰만 포함하는 어휘 하위 집합에서 샘플링합니다. 토큰 하위 집합을 지정하는 FSM은 도구 설명서에서 구성할 수 있습니다. 예를 들어, 그림 2에서는 add, exp, square 및 sqrt 함수에 대해 FSM이 구성되었습니다. 표 2는 TOOLDEC이 "정사각형의 한 변의 길이는 5입니다. 그 면적은 얼마입니까?"라는 질문에 어떻게 대답하는지 보여줍니다. FSM을 사용합니다. FSM의 지침에 따라 TOOLDEC은 다음 목표를 달성합니다.


• 전환 모드. 모델이 텍스트를 자유롭게 생성할 수 있는 경우 "텍스트 모드"와 모델이 유효한 도구 호출만 생성할 수 있는 경우 "도구 모드" 사이를 전환합니다.


• 도구 이름 생성. 도구 호출 시작 시 사전 정의된 도구 목록에서 올바른 기존 도구 이름만 생성하십시오.


• 인수 통과. 유형을 준수하는 인수만 도구에 전달합니다.

3.1 유한상태 디코딩

TOOLDEC은 유한 상태 기계(FSM)에 의해 안내됩니다. FSM은 유한 상태 집합 S, 알파벳 V, 전이 함수 g: S ×V → S, 초기 상태 s0 및 다음 집합으로 구성된 5튜플(S, V, g, s0, R)입니다. 상태 R을 수락합니다. 우리의 경우 S와 g는 도구 서명에서 구성됩니다. V는 언어 모델의 토큰 어휘입니다. R은 ''와 같이 LM이 작업을 완료했는지 확인할 수 있는 사전 정의된 토큰에 해당합니다.


그림 2: 정수를 인수로 사용하는 수학 함수 add, exp, square, sqrt용으로 구성된 TOOLDEC용 유한 상태 머신입니다. 도구 이름은 트라이 구조로 표시됩니다. "IntFSM"은 정수를 구문 분석하는 하위 모듈입니다.


각 디코딩 단계 t에서 TOOLDEC은 현재 상태 s를 유지합니다. FSM이 허용하는 토큰, 즉 g(s, ·)가 정의된 토큰만 생성할 수 있습니다. 이것들


표 2: TOOLDEC은 그림 2의 FSM을 사용하여 "정사각형의 한 변의 길이는 5입니다. 그 면적은 얼마입니까?"라는 질문에 답하는 방법입니다. 각 시간 단계에서 머신의 상태는 유효한 다음 토큰 세트에 해당합니다. 다른 모든 토큰을 0으로 만들고 다음 토큰 배포를 다시 정규화하여 LLM이 유효한 토큰만 샘플링하도록 합니다.


3.2 구문적으로 올바른 도구 호출을 보장하는 FSMS 구축



트라이를 구성하려면 모든 문자열을 하나씩 삽입합니다. 트리에 문자열을 삽입한다는 것은 루트에서 문자열이 만든 경로로 이동하고 경로의 다음 단계가 존재하지 않을 때 새 노드를 만드는 것을 의미합니다. 예를 들어, 그림 3의 트리에 exp10 및 확장이라는 두 가지 도구 이름을 추가하는 방법을 보여줍니다.


trie의 구성은 한 가지 가정에 따라 달라집니다. 즉, 두 도구의 이름이 동일하지 않습니다. 이는 합리적인 가정이지만 실제 응용 프로그램에서는 예외가 있을 수 있습니다. 이 경우 도구 이름을 다시 작성하여 도구 이름을 명확하게 하기 위해 더 많은 세부 정보를 포함할 수 있습니다. 추상적이고 이해하기 어려운 도구 이름을 다시 작성하면 언어 모델이 이름별로 도구를 선택하기가 더 쉬워질 수도 있습니다.


구문적으로 유효한 도구 인수 생성. 도구 인수에는 지정된 유형이 있습니다. 프로그램의 인수와 마찬가지로 특정 문법 규칙을 따라야 합니다. 이러한 규칙은 유한 상태 기계로 지정할 수 있습니다. 예를 들어, 그림 2의 "IntFSM"은 정수 리터럴만 허용하는 유한 상태 머신을 나타냅니다. 도구의 모든 인수에 대해 해당 FSM을 함께 연결하고 도구 이름에 해당하는 마지막 상태를 이 FSM 체인의 초기 상태로 사용합니다. 실제로는 이 FSM을 명시적으로 구성할 필요가 없습니다. 유효한 다음 토큰 세트를 알려주는 문법 검사기로 충분합니다.



이 문서는 CC 4.0 DEED 라이선스에 따라 arxiv에서 볼 수 있습니다.