in src/requests/request-helpers.ts [114:150]
export function formatCountTokensInput(
params: CountTokensRequest | string | Array<string | Part>,
modelParams?: ModelParams,
): _CountTokensRequestInternal {
let formattedGenerateContentRequest: _GenerateContentRequestInternal = {
model: modelParams?.model,
generationConfig: modelParams?.generationConfig,
safetySettings: modelParams?.safetySettings,
tools: modelParams?.tools,
toolConfig: modelParams?.toolConfig,
systemInstruction: modelParams?.systemInstruction,
cachedContent: modelParams?.cachedContent?.name,
contents: [],
};
const containsGenerateContentRequest =
(params as CountTokensRequest).generateContentRequest != null;
if ((params as CountTokensRequest).contents) {
if (containsGenerateContentRequest) {
throw new GoogleGenerativeAIRequestInputError(
"CountTokensRequest must have one of contents or generateContentRequest, not both.",
);
}
formattedGenerateContentRequest.contents = (
params as CountTokensRequest
).contents;
} else if (containsGenerateContentRequest) {
formattedGenerateContentRequest = {
...formattedGenerateContentRequest,
...(params as CountTokensRequest).generateContentRequest,
};
} else {
// Array or string
const content = formatNewContent(params as string | Array<string | Part>);
formattedGenerateContentRequest.contents = [content];
}
return { generateContentRequest: formattedGenerateContentRequest };
}