때때로 우리는 자연어 대신 구조 정보를 생성하기 위해 LLM (대형 언어 모델)이 필요합니다. 가장 쉬운 방법은 JSON을 사용하는 것입니다.
그러나 마지막 응답 토큰을 받기 전에 JSON이 고장납니다. 즉, JSON.parse
사용하여 해독 할 수 없습니다. 그러나 우리는 여전히 데이터를 사용자에게 스트리밍하고 싶습니다.
여기 partial-json
이 제공됩니다. 여기 데모가 있습니다.
(Python 구현도 있습니다)
npm i partial-json # or pnpm / bun / yarn
partial-json
순전히 JavaScript로 구현되며 commonjs
및 esm
빌드가 있습니다.
parse
기능과 라이브러리에서 Allow
객체를 가져올 수 있습니다.
import { parse , Allow } from "partial-json" ;
Allow
객체는 옵션을위한 열거입니다. 어떤 유형이 부분적 일 수 있는지 결정합니다. allow
에 포함되지 않은 유형은 완료된 후에 만 표시됩니다.
parse
기능은 완전한 JSON 문자열을 구문 분석 할 때 내장 JSON.parse
처럼 작동합니다.
let result = parse ( '{"key":"value"}' ) ;
console . log ( result ) ; // Outputs: { key: 'value' }
추가 매개 변수를 parse
기능에 전달하여 부분 JSON 문자열을 구문 분석 할 수 있습니다. 이 매개 변수는 비트 또는 Allow
객체의 상수입니다.
( partial-json
에서 필요한 상수를 직접 가져올 수 있습니다)
import { parse , STR , OBJ } from "partial-json" ;
result = parse ( '{"key": "v' , STR | OBJ ) ;
console . log ( result ) ; // Outputs: { key: 'v' }
이 예에서 Allow.STR
구문자에게 문자열이 불완전한 경우 괜찮다고 말하고 Allow.OBJ
파서에게 객체로서 구문자를 알려줍니다. 그런 다음 파서는 가능한 한 많은 데이터를 반환하려고합니다.
부분 문자열을 허용하지 않으면 "v
가까이 있지 않기 때문에 객체에 "key"
추가되지 않습니다.
result = parse ( '{"key": "v' , OBJ ) ;
console . log ( result ) ; // Outputs: {}
result = parse ( '{"key": "value"' , OBJ ) ;
console . log ( result ) ; // Outputs: { key: 'value' }
유사성, 당신은 그것을 허용하는 경우 부분 배열 또는 부분 특수 값을 구문 분석 할 수 있습니다.
(기본값이 Allow.ALL
되도록 allow
)
result = parse ( '[ {"key1": "value1", "key2": [ "value2' ) ;
console . log ( result ) ; // Outputs: [ { key1: 'value1', key2: [ 'value2' ] } ]
result = parse ( "-Inf" ) ;
console . log ( result ) ; // Outputs: -Infinity
JSON 문자열이 기형이 있으면 parse
기능에 오류가 발생합니다.
parse ( "wrong" ) ; // MalformedJSON [Error]: SyntaxError: Unexpected token 'w', "wrong" is not valid JSON at position 0
jsonString
<string>
: JSON 문자열이 구문 분석합니다.allowPartial
<number>
: JSON 구문 분석 중에 어떤 종류의 부분이 허용되는지 지정하십시오 (기본값 : Allow.ALL
).구문 분석 된 JavaScript 값을 반환합니다.
JSON 구문 분석 중에 어떤 종류의 부분이 허용되는지 지정하는 물체. 다음 속성이 있습니다.
STR
: 부분 문자열을 허용합니다.NUM
: 부분 번호를 허용합니다.ARR
: 부분 배열을 허용하십시오.OBJ
: 부분 객체를 허용하십시오.NULL
: 부분 null을 허용하십시오.BOOL
: 부분 부울을 허용하십시오.NAN
: 부분 NAN을 허용하십시오.INFINITY
: 부분적인 무한대를 허용하십시오._INFINITY
: 부분 -인치를 허용합니다.INF
: 부분 무한대와 -infinity를 모두 허용합니다.SPECIAL
: 모든 특별한 값을 허용합니다.ATOM
: 모든 원자 값을 허용하십시오.COLLECTION
: 모든 수집 값을 허용합니다.ALL
: 모든 값을 허용합니다. 이 라이브러리 테스트를 실행하려면 저장소를 복제하고 종속성을 설치해야합니다.
git clone https://github.com/promplate/partial-json-parser-js.git
cd partial-json-parser-js
npm i
그런 다음 Vitest를 사용하여 테스트를 실행할 수 있습니다.
npm run test
가능한 한 많은 엣지 케이스를 덮으려고 노력하는 동안 항상 어떤 경우에는 다루지 않을 수 있습니다.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다.