File tree Expand file tree Collapse file tree 2 files changed +25
-2
lines changed
Expand file tree Collapse file tree 2 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -23,13 +23,16 @@ import {
2323 escapeStr ,
2424 unEscapeStr ,
2525 matchTemplate ,
26+ serialiseTemplate ,
27+ deserialiseTemplate ,
2628} from './template' ;
2729import { FewShotTemplate , matchFewShotTemplate } from './fewshot_template' ;
28- import { NamedVar } from './variable' ;
30+ import { NamedVar , RegExpVar } from './variable' ;
2931
3032export = {
3133 Template,
3234 NamedVar,
35+ RegExpVar,
3336 TemplVar,
3437 escapeStr,
3538 template,
@@ -38,4 +41,6 @@ export = {
3841 matchTemplate,
3942 FewShotTemplate,
4043 matchFewShotTemplate,
44+ serialiseTemplate,
45+ deserialiseTemplate,
4146} ;
Original file line number Diff line number Diff line change @@ -63,7 +63,6 @@ allows parsing of outputs from an LLM to be well typed and know what variable
6363will come next.
6464
6565*/
66-
6766import {
6867 RegExpVar ,
6968 NamedVar ,
@@ -552,3 +551,22 @@ export function template<
552551 [ ...varSet ]
553552 ) ;
554553}
554+
555+ // Serialization / Deserialization tools
556+ export type SerialisedTemplate = {
557+ escaped : string ;
558+ vars : string [ ] ;
559+ } ;
560+
561+ export function serialiseTemplate ( templ : Template < string > ) : SerialisedTemplate {
562+ return { vars : Object . keys ( templ . vars ) , escaped : templ . escaped } ;
563+ }
564+
565+ export function deserialiseTemplate < Ns extends string > (
566+ serialised : SerialisedTemplate
567+ ) : Template < Ns > {
568+ return new Template (
569+ serialised . escaped ,
570+ serialised . vars . map ( ( v ) => new RegExpVar ( v as Ns ) )
571+ ) ;
572+ }
You can’t perform that action at this time.
0 commit comments