|
17 | 17 |
|
18 | 18 | import {
|
19 | 19 | Content,
|
| 20 | + CountTokensRequest, |
| 21 | + CountTokensRequestInternal, |
20 | 22 | EmbedContentRequest,
|
21 | 23 | GenerateContentRequest,
|
22 | 24 | Part,
|
23 | 25 | } from "../../types";
|
24 |
| -import { GoogleGenerativeAIError } from "../errors"; |
| 26 | +import { |
| 27 | + GoogleGenerativeAIError, |
| 28 | + GoogleGenerativeAIRequestInputError, |
| 29 | +} from "../errors"; |
25 | 30 |
|
26 | 31 | export function formatSystemInstruction(
|
27 | 32 | input?: string | Part | Content,
|
@@ -104,6 +109,31 @@ function assignRoleToPartsAndValidateSendMessageRequest(
|
104 | 109 | return functionContent;
|
105 | 110 | }
|
106 | 111 |
|
| 112 | +export function formatCountTokensInput( |
| 113 | + params: CountTokensRequest | string | Array<string | Part>, |
| 114 | + model: string, |
| 115 | +): CountTokensRequestInternal { |
| 116 | + let formattedRequest: CountTokensRequestInternal = {}; |
| 117 | + const containsGenerateContentRequest = |
| 118 | + (params as CountTokensRequest).generateContentRequest != null; |
| 119 | + if ((params as CountTokensRequest).contents) { |
| 120 | + if (containsGenerateContentRequest) { |
| 121 | + throw new GoogleGenerativeAIRequestInputError( |
| 122 | + "CountTokensRequest must have one of contents or generateContentRequest, not both.", |
| 123 | + ); |
| 124 | + } |
| 125 | + formattedRequest = { ...(params as CountTokensRequest) }; |
| 126 | + } else if (containsGenerateContentRequest) { |
| 127 | + formattedRequest = { ...(params as CountTokensRequest) }; |
| 128 | + formattedRequest.generateContentRequest.model = model; |
| 129 | + } else { |
| 130 | + // Array or string |
| 131 | + const content = formatNewContent(params as string | Array<string | Part>); |
| 132 | + formattedRequest.contents = [content]; |
| 133 | + } |
| 134 | + return formattedRequest; |
| 135 | +} |
| 136 | + |
107 | 137 | export function formatGenerateContentInput(
|
108 | 138 | params: GenerateContentRequest | string | Array<string | Part>,
|
109 | 139 | ): GenerateContentRequest {
|
|
0 commit comments