28 lines
667 B
TypeScript
28 lines
667 B
TypeScript
import { JSONSchema7 } from 'json-schema';
|
|
|
|
const DEFAULT_SCHEMA_PREFIX = 'JSON schema:';
|
|
const DEFAULT_SCHEMA_SUFFIX =
|
|
'You MUST answer with a JSON object that matches the JSON schema above.';
|
|
|
|
export function injectJsonSchemaIntoSystem({
|
|
system,
|
|
schema,
|
|
schemaPrefix = DEFAULT_SCHEMA_PREFIX,
|
|
schemaSuffix = DEFAULT_SCHEMA_SUFFIX,
|
|
}: {
|
|
system?: string;
|
|
schema: JSONSchema7;
|
|
schemaPrefix?: string;
|
|
schemaSuffix?: string;
|
|
}): string {
|
|
return [
|
|
system,
|
|
system != null ? '' : null, // add a newline if system is not null
|
|
schemaPrefix,
|
|
JSON.stringify(schema),
|
|
schemaSuffix,
|
|
]
|
|
.filter(line => line != null)
|
|
.join('\n');
|
|
}
|