Skip to content

Commit dda0b5c

Browse files
authored
Add frequencePenalty and presencePenalty parameters support for gener… (#264)
* Add frequencePenalty and presencePenalty parameters support for generate content. * Change frequence to frequency * Update format * Update parameter description * Update the parameter doc.
1 parent 85d1eb1 commit dda0b5c

12 files changed

+97
-2
lines changed

.changeset/cyan-pants-move.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@google/generative-ai": minor
3+
---
4+
5+
Add `frequencyPenalty` and `presencePenalty` parameters support for `generateContent()`

common/api-review/generative-ai.api.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
// @public
88
export interface BaseParams {
9+
frequencyPenalty?: number;
910
// (undocumented)
1011
generationConfig?: GenerationConfig;
12+
presencePenalty?: number;
1113
// (undocumented)
1214
safetySettings?: SafetySetting[];
1315
}
@@ -458,13 +460,17 @@ export class GenerativeModel {
458460
cachedContent: CachedContent;
459461
countTokens(request: CountTokensRequest | string | Array<string | Part>, requestOptions?: SingleRequestOptions): Promise<CountTokensResponse>;
460462
embedContent(request: EmbedContentRequest | string | Array<string | Part>, requestOptions?: SingleRequestOptions): Promise<EmbedContentResponse>;
463+
// (undocumented)
464+
frequencyPenalty?: number;
461465
generateContent(request: GenerateContentRequest | string | Array<string | Part>, requestOptions?: SingleRequestOptions): Promise<GenerateContentResult>;
462466
generateContentStream(request: GenerateContentRequest | string | Array<string | Part>, requestOptions?: SingleRequestOptions): Promise<GenerateContentStreamResult>;
463467
// (undocumented)
464468
generationConfig: GenerationConfig;
465469
// (undocumented)
466470
model: string;
467471
// (undocumented)
472+
presencePenalty?: number;
473+
// (undocumented)
468474
safetySettings: SafetySetting[];
469475
startChat(startChatParams?: StartChatParams): ChatSession;
470476
// (undocumented)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [@google/generative-ai](./generative-ai.md) &gt; [BaseParams](./generative-ai.baseparams.md) &gt; [frequencyPenalty](./generative-ai.baseparams.frequencypenalty.md)
4+
5+
## BaseParams.frequencyPenalty property
6+
7+
Frequency penalty applied to the next token's logprobs, multiplied by the number of times each token has been seen in the respponse so far.
8+
9+
**Signature:**
10+
11+
```typescript
12+
frequencyPenalty?: number;
13+
```

docs/reference/main/generative-ai.baseparams.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export interface BaseParams
1616

1717
| Property | Modifiers | Type | Description |
1818
| --- | --- | --- | --- |
19+
| [frequencyPenalty?](./generative-ai.baseparams.frequencypenalty.md) | | number | _(Optional)_ Frequency penalty applied to the next token's logprobs, multiplied by the number of times each token has been seen in the respponse so far. |
1920
| [generationConfig?](./generative-ai.baseparams.generationconfig.md) | | [GenerationConfig](./generative-ai.generationconfig.md) | _(Optional)_ |
21+
| [presencePenalty?](./generative-ai.baseparams.presencepenalty.md) | | number | _(Optional)_ Presence penalty applied to the next token's logprobs if the token has already been seen in the response. |
2022
| [safetySettings?](./generative-ai.baseparams.safetysettings.md) | | [SafetySetting](./generative-ai.safetysetting.md)<!-- -->\[\] | _(Optional)_ |
2123

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [@google/generative-ai](./generative-ai.md) &gt; [BaseParams](./generative-ai.baseparams.md) &gt; [presencePenalty](./generative-ai.baseparams.presencepenalty.md)
4+
5+
## BaseParams.presencePenalty property
6+
7+
Presence penalty applied to the next token's logprobs if the token has already been seen in the response.
8+
9+
**Signature:**
10+
11+
```typescript
12+
presencePenalty?: number;
13+
```
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [@google/generative-ai](./generative-ai.md) &gt; [GenerativeModel](./generative-ai.generativemodel.md) &gt; [frequencyPenalty](./generative-ai.generativemodel.frequencypenalty.md)
4+
5+
## GenerativeModel.frequencyPenalty property
6+
7+
**Signature:**
8+
9+
```typescript
10+
frequencyPenalty?: number;
11+
```

docs/reference/main/generative-ai.generativemodel.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ export declare class GenerativeModel
2424
| --- | --- | --- | --- |
2525
| [apiKey](./generative-ai.generativemodel.apikey.md) | | string | |
2626
| [cachedContent](./generative-ai.generativemodel.cachedcontent.md) | | [CachedContent](./generative-ai.cachedcontent.md) | |
27+
| [frequencyPenalty?](./generative-ai.generativemodel.frequencypenalty.md) | | number | _(Optional)_ |
2728
| [generationConfig](./generative-ai.generativemodel.generationconfig.md) | | [GenerationConfig](./generative-ai.generationconfig.md) | |
2829
| [model](./generative-ai.generativemodel.model.md) | | string | |
30+
| [presencePenalty?](./generative-ai.generativemodel.presencepenalty.md) | | number | _(Optional)_ |
2931
| [safetySettings](./generative-ai.generativemodel.safetysettings.md) | | [SafetySetting](./generative-ai.safetysetting.md)<!-- -->\[\] | |
3032
| [systemInstruction?](./generative-ai.generativemodel.systeminstruction.md) | | [Content](./generative-ai.content.md) | _(Optional)_ |
3133
| [toolConfig?](./generative-ai.generativemodel.toolconfig.md) | | [ToolConfig](./generative-ai.toolconfig.md) | _(Optional)_ |
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [@google/generative-ai](./generative-ai.md) &gt; [GenerativeModel](./generative-ai.generativemodel.md) &gt; [presencePenalty](./generative-ai.generativemodel.presencepenalty.md)
4+
5+
## GenerativeModel.presencePenalty property
6+
7+
**Signature:**
8+
9+
```typescript
10+
presencePenalty?: number;
11+
```

src/methods/generate-content.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const fakeRequestParams: GenerateContentRequest = {
4242
threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
4343
},
4444
],
45+
presencePenalty: 0.5,
46+
frequencyPenalty: 0.1,
4547
};
4648

4749
describe("generateContent()", () => {

src/models/generative-model.test.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ describe("GenerativeModel", () => {
7171
threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
7272
},
7373
],
74+
presencePenalty: 0.6,
75+
frequencyPenalty: 0.5,
7476
tools: [{ functionDeclarations: [{ name: "myfunc" }] }],
7577
toolConfig: {
7678
functionCallingConfig: { mode: FunctionCallingMode.NONE },
@@ -92,6 +94,8 @@ describe("GenerativeModel", () => {
9294
genModel.generationConfig?.responseSchema.properties.testField.type,
9395
).to.equal(SchemaType.STRING);
9496
expect(genModel.safetySettings?.length).to.equal(1);
97+
expect(genModel.presencePenalty).to.equal(0.6);
98+
expect(genModel.frequencyPenalty).to.equal(0.5);
9599
expect(genModel.tools?.length).to.equal(1);
96100
expect(genModel.toolConfig?.functionCallingConfig.mode).to.equal(
97101
FunctionCallingMode.NONE,
@@ -116,7 +120,9 @@ describe("GenerativeModel", () => {
116120
value.includes("be friendly") &&
117121
value.includes("temperature") &&
118122
value.includes("testField") &&
119-
value.includes(HarmBlockThreshold.BLOCK_LOW_AND_ABOVE)
123+
value.includes(HarmBlockThreshold.BLOCK_LOW_AND_ABOVE) &&
124+
value.includes("presencePenalty") &&
125+
value.includes("frequencyPenalty")
120126
);
121127
}),
122128
match((value) => {
@@ -210,6 +216,8 @@ describe("GenerativeModel", () => {
210216
threshold: HarmBlockThreshold.BLOCK_NONE,
211217
},
212218
],
219+
presencePenalty: 0.6,
220+
frequencyPenalty: 0.5,
213221
contents: [{ role: "user", parts: [{ text: "hello" }] }],
214222
tools: [{ functionDeclarations: [{ name: "otherfunc" }] }],
215223
toolConfig: { functionCallingConfig: { mode: FunctionCallingMode.AUTO } },
@@ -228,7 +236,9 @@ describe("GenerativeModel", () => {
228236
value.includes("topK") &&
229237
value.includes("newTestField") &&
230238
!value.includes("testField") &&
231-
value.includes(HarmCategory.HARM_CATEGORY_HARASSMENT)
239+
value.includes(HarmCategory.HARM_CATEGORY_HARASSMENT) &&
240+
value.includes("presencePenalty") &&
241+
value.includes("frequencyPenalty")
232242
);
233243
}),
234244
{},

0 commit comments

Comments
 (0)