저자:
(1) Kexun Zhang, UC Santa Barbara 및 균등 기여;
(2) Hongqiao Chen, Northwood 고등학교 및 균등 기여;
(3) 카네기멜론대학교 레이 리(Lei Li);
(4) 윌리엄 양 왕(UC Santa Barbara).
구문적으로 올바른 도구 호출은 기존 도구 이름을 참조하고 유형을 준수하는 인수를 전달해야 합니다. FSM(Finite-State Machine)을 사용하여 도구 호출의 구문을 검증하는 것이 간단하다는 사실에 착안하여 FSM이 안내하는 제한된 디코딩 알고리즘인 TOOLDEC을 제안합니다. 각 디코딩 단계에서 모델은 구문적으로 올바른 토큰만 포함하는 어휘 하위 집합에서 샘플링합니다. 토큰 하위 집합을 지정하는 FSM은 도구 설명서에서 구성할 수 있습니다. 예를 들어, 그림 2에서는 add, exp, square 및 sqrt 함수에 대해 FSM이 구성되었습니다. 표 2는 TOOLDEC이 "정사각형의 한 변의 길이는 5입니다. 그 면적은 얼마입니까?"라는 질문에 어떻게 대답하는지 보여줍니다. FSM을 사용합니다. FSM의 지침에 따라 TOOLDEC은 다음 목표를 달성합니다.
• 전환 모드. 모델이 텍스트를 자유롭게 생성할 수 있는 경우 "텍스트 모드"와 모델이 유효한 도구 호출만 생성할 수 있는 경우 "도구 모드" 사이를 전환합니다.
• 도구 이름 생성. 도구 호출 시작 시 사전 정의된 도구 목록에서 올바른 기존 도구 이름만 생성하십시오.
• 인수 통과. 유형을 준수하는 인수만 도구에 전달합니다.
TOOLDEC은 유한 상태 기계(FSM)에 의해 안내됩니다. FSM은 유한 상태 집합 S, 알파벳 V, 전이 함수 g: S ×V → S, 초기 상태 s0 및 다음 집합으로 구성된 5튜플(S, V, g, s0, R)입니다. 상태 R을 수락합니다. 우리의 경우 S와 g는 도구 서명에서 구성됩니다. V는 언어 모델의 토큰 어휘입니다. R은 ''와 같이 LM이 작업을 완료했는지 확인할 수 있는 사전 정의된 토큰에 해당합니다.
각 디코딩 단계 t에서 TOOLDEC은 현재 상태 s를 유지합니다. FSM이 허용하는 토큰, 즉 g(s, ·)가 정의된 토큰만 생성할 수 있습니다. 이것들
트라이를 구성하려면 모든 문자열을 하나씩 삽입합니다. 트리에 문자열을 삽입한다는 것은 루트에서 문자열이 만든 경로로 이동하고 경로의 다음 단계가 존재하지 않을 때 새 노드를 만드는 것을 의미합니다. 예를 들어, 그림 3의 트리에 exp10 및 확장이라는 두 가지 도구 이름을 추가하는 방법을 보여줍니다.
trie의 구성은 한 가지 가정에 따라 달라집니다. 즉, 두 도구의 이름이 동일하지 않습니다. 이는 합리적인 가정이지만 실제 응용 프로그램에서는 예외가 있을 수 있습니다. 이 경우 도구 이름을 다시 작성하여 도구 이름을 명확하게 하기 위해 더 많은 세부 정보를 포함할 수 있습니다. 추상적이고 이해하기 어려운 도구 이름을 다시 작성하면 언어 모델이 이름별로 도구를 선택하기가 더 쉬워질 수도 있습니다.
구문적으로 유효한 도구 인수 생성. 도구 인수에는 지정된 유형이 있습니다. 프로그램의 인수와 마찬가지로 특정 문법 규칙을 따라야 합니다. 이러한 규칙은 유한 상태 기계로 지정할 수 있습니다. 예를 들어, 그림 2의 "IntFSM"은 정수 리터럴만 허용하는 유한 상태 머신을 나타냅니다. 도구의 모든 인수에 대해 해당 FSM을 함께 연결하고 도구 이름에 해당하는 마지막 상태를 이 FSM 체인의 초기 상태로 사용합니다. 실제로는 이 FSM을 명시적으로 구성할 필요가 없습니다. 유효한 다음 토큰 세트를 알려주는 문법 검사기로 충분합니다.
이 문서는 CC 4.0 DEED 라이선스에 따라 arxiv에서 볼 수 있습니다.