@ksw8954/git-ai-commit 1.0.10 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/commands/ai.d.ts +5 -0
- package/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +76 -9
- package/dist/commands/ai.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/ai.test.ts +78 -4
- package/src/commands/ai.ts +117 -9
package/CHANGELOG.md
ADDED
package/dist/commands/ai.d.ts
CHANGED
|
@@ -28,6 +28,11 @@ export declare class AIService {
|
|
|
28
28
|
private verbose;
|
|
29
29
|
constructor(config: AIServiceConfig);
|
|
30
30
|
private debugLog;
|
|
31
|
+
private isUnsupportedTokenParamError;
|
|
32
|
+
private isUnsupportedValueError;
|
|
33
|
+
private swapTokenParam;
|
|
34
|
+
private removeTemperature;
|
|
35
|
+
private createChatCompletion;
|
|
31
36
|
/**
|
|
32
37
|
* Remove think/thinking tags and other XML-style tags from AI response
|
|
33
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,eAAe;IAUnC,OAAO,CAAC,QAAQ;IAMhB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,eAAe;IAUnC,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,4BAA4B;IA8BpC,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,iBAAiB;YAOX,oBAAoB;IA6BlC;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgKhG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsD9G,0BAA0B,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,2BAA2B,CAAC;CAqDxC"}
|
package/dist/commands/ai.js
CHANGED
|
@@ -23,6 +23,76 @@ class AIService {
|
|
|
23
23
|
console.log(...args);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
isUnsupportedTokenParamError(error, param) {
|
|
27
|
+
if (!error || typeof error !== 'object') {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const errorObj = error;
|
|
31
|
+
const message = errorObj.error?.message ?? errorObj.message;
|
|
32
|
+
const code = errorObj.error?.code ?? errorObj.code;
|
|
33
|
+
const errorParam = errorObj.error?.param ?? errorObj.param;
|
|
34
|
+
if (code === 'unsupported_parameter' && errorParam === param) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (typeof message === 'string') {
|
|
38
|
+
return message.includes('Unsupported parameter') && message.includes(param);
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
isUnsupportedValueError(error, param) {
|
|
43
|
+
if (!error || typeof error !== 'object') {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const errorObj = error;
|
|
47
|
+
const message = errorObj.error?.message ?? errorObj.message;
|
|
48
|
+
const code = errorObj.error?.code ?? errorObj.code;
|
|
49
|
+
const errorParam = errorObj.error?.param ?? errorObj.param;
|
|
50
|
+
if (code === 'unsupported_value' && errorParam === param) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (typeof message === 'string') {
|
|
54
|
+
return message.includes('Unsupported value') && message.includes(param);
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
swapTokenParam(request, targetParam) {
|
|
59
|
+
const { max_tokens, max_completion_tokens, ...rest } = request;
|
|
60
|
+
const tokenValue = max_completion_tokens ?? max_tokens;
|
|
61
|
+
if (tokenValue === undefined || tokenValue === null) {
|
|
62
|
+
return { ...rest };
|
|
63
|
+
}
|
|
64
|
+
if (targetParam === 'max_tokens') {
|
|
65
|
+
return { ...rest, max_tokens: tokenValue };
|
|
66
|
+
}
|
|
67
|
+
return { ...rest, max_completion_tokens: tokenValue };
|
|
68
|
+
}
|
|
69
|
+
removeTemperature(request) {
|
|
70
|
+
const { temperature, ...rest } = request;
|
|
71
|
+
return { ...rest };
|
|
72
|
+
}
|
|
73
|
+
async createChatCompletion(request, attempt = 0) {
|
|
74
|
+
try {
|
|
75
|
+
return await this.openai.chat.completions.create(request);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (attempt < 3 && this.isUnsupportedValueError(error, 'temperature')) {
|
|
79
|
+
const fallbackRequest = this.removeTemperature(request);
|
|
80
|
+
this.debugLog('Retrying without temperature due to unsupported value error.');
|
|
81
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
82
|
+
}
|
|
83
|
+
if (this.isUnsupportedTokenParamError(error, 'max_completion_tokens')) {
|
|
84
|
+
const fallbackRequest = this.swapTokenParam(request, 'max_tokens');
|
|
85
|
+
this.debugLog('Retrying with max_tokens due to unsupported max_completion_tokens error.');
|
|
86
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
87
|
+
}
|
|
88
|
+
if (this.isUnsupportedTokenParamError(error, 'max_tokens')) {
|
|
89
|
+
const fallbackRequest = this.swapTokenParam(request, 'max_completion_tokens');
|
|
90
|
+
this.debugLog('Retrying with max_completion_tokens due to unsupported max_tokens error.');
|
|
91
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
26
96
|
/**
|
|
27
97
|
* Remove think/thinking tags and other XML-style tags from AI response
|
|
28
98
|
*/
|
|
@@ -56,7 +126,7 @@ class AIService {
|
|
|
56
126
|
const customInstructions = extraInstructions && extraInstructions.trim().length > 0
|
|
57
127
|
? `Git diff will be provided separately in the user message.\n\n## Additional User Instructions\n${extraInstructions.trim()}`
|
|
58
128
|
: 'Git diff will be provided separately in the user message.';
|
|
59
|
-
const response = await this.
|
|
129
|
+
const response = await this.createChatCompletion({
|
|
60
130
|
model: this.model,
|
|
61
131
|
messages: [
|
|
62
132
|
{
|
|
@@ -68,8 +138,7 @@ class AIService {
|
|
|
68
138
|
content: `Git diff:\n${diff}`
|
|
69
139
|
}
|
|
70
140
|
],
|
|
71
|
-
|
|
72
|
-
temperature: 0.1
|
|
141
|
+
max_completion_tokens: 3000
|
|
73
142
|
});
|
|
74
143
|
this.debugLog('API Response received:', JSON.stringify(response, null, 2));
|
|
75
144
|
const choice = response.choices[0];
|
|
@@ -200,7 +269,7 @@ class AIService {
|
|
|
200
269
|
const customInstructions = extraInstructions && extraInstructions.trim().length > 0
|
|
201
270
|
? `${extraInstructions.trim()}`
|
|
202
271
|
: '';
|
|
203
|
-
const response = await this.
|
|
272
|
+
const response = await this.createChatCompletion({
|
|
204
273
|
model: this.model,
|
|
205
274
|
messages: [
|
|
206
275
|
{
|
|
@@ -212,8 +281,7 @@ class AIService {
|
|
|
212
281
|
content: `Commit log:\n${commitLog}`
|
|
213
282
|
}
|
|
214
283
|
],
|
|
215
|
-
|
|
216
|
-
temperature: 0.2
|
|
284
|
+
max_completion_tokens: 3000
|
|
217
285
|
});
|
|
218
286
|
const choice = response.choices[0];
|
|
219
287
|
const message = choice?.message?.content?.trim();
|
|
@@ -245,7 +313,7 @@ class AIService {
|
|
|
245
313
|
this.debugLog('Sending request to AI API for pull request message...');
|
|
246
314
|
this.debugLog('Model:', this.model);
|
|
247
315
|
this.debugLog('Base URL:', this.openai.baseURL);
|
|
248
|
-
const response = await this.
|
|
316
|
+
const response = await this.createChatCompletion({
|
|
249
317
|
model: this.model,
|
|
250
318
|
messages: [
|
|
251
319
|
{
|
|
@@ -257,8 +325,7 @@ class AIService {
|
|
|
257
325
|
content: `Git diff between ${baseBranch} and ${compareBranch}:\n${diff}`
|
|
258
326
|
}
|
|
259
327
|
],
|
|
260
|
-
|
|
261
|
-
temperature: 0.2
|
|
328
|
+
max_completion_tokens: 4000
|
|
262
329
|
});
|
|
263
330
|
const choice = response.choices[0];
|
|
264
331
|
const message = choice?.message?.content?.trim();
|
package/dist/commands/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/__tests__/ai.test.ts
CHANGED
|
@@ -66,8 +66,7 @@ describe('AIService', () => {
|
|
|
66
66
|
content: `Git diff:\n${diff}`
|
|
67
67
|
}
|
|
68
68
|
],
|
|
69
|
-
|
|
70
|
-
temperature: 0.1
|
|
69
|
+
max_completion_tokens: 3000
|
|
71
70
|
});
|
|
72
71
|
});
|
|
73
72
|
|
|
@@ -104,6 +103,82 @@ describe('AIService', () => {
|
|
|
104
103
|
});
|
|
105
104
|
});
|
|
106
105
|
|
|
106
|
+
it('should retry with max_tokens when max_completion_tokens is unsupported', async () => {
|
|
107
|
+
const error = Object.assign(
|
|
108
|
+
new Error('Unsupported parameter: \'max_completion_tokens\' is not supported with this model. Use \'max_tokens\' instead.'),
|
|
109
|
+
{
|
|
110
|
+
error: {
|
|
111
|
+
message:
|
|
112
|
+
'Unsupported parameter: \'max_completion_tokens\' is not supported with this model. Use \'max_tokens\' instead.',
|
|
113
|
+
type: 'invalid_request_error',
|
|
114
|
+
param: 'max_completion_tokens',
|
|
115
|
+
code: 'unsupported_parameter'
|
|
116
|
+
},
|
|
117
|
+
code: 'unsupported_parameter',
|
|
118
|
+
param: 'max_completion_tokens',
|
|
119
|
+
type: 'invalid_request_error'
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
const mockResponse = {
|
|
124
|
+
choices: [{
|
|
125
|
+
message: {
|
|
126
|
+
content: 'feat: add retry fallback'
|
|
127
|
+
}
|
|
128
|
+
}]
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
(mockOpenai.chat.completions.create as jest.Mock)
|
|
132
|
+
.mockRejectedValueOnce(error)
|
|
133
|
+
.mockResolvedValueOnce(mockResponse);
|
|
134
|
+
|
|
135
|
+
const diff = 'diff --git a/file.txt b/file.txt\nnew file mode 100644';
|
|
136
|
+
const result = await aiService.generateCommitMessage(diff);
|
|
137
|
+
|
|
138
|
+
expect(result).toEqual({
|
|
139
|
+
success: true,
|
|
140
|
+
message: 'feat: add retry fallback'
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
expect(mockOpenai.chat.completions.create).toHaveBeenNthCalledWith(1, {
|
|
144
|
+
model: 'gpt-4',
|
|
145
|
+
messages: [
|
|
146
|
+
{
|
|
147
|
+
role: 'system',
|
|
148
|
+
content: generateCommitPrompt(
|
|
149
|
+
'',
|
|
150
|
+
'Git diff will be provided separately in the user message.',
|
|
151
|
+
'ko'
|
|
152
|
+
)
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
role: 'user',
|
|
156
|
+
content: `Git diff:\n${diff}`
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
max_completion_tokens: 3000
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
expect(mockOpenai.chat.completions.create).toHaveBeenNthCalledWith(2, {
|
|
163
|
+
model: 'gpt-4',
|
|
164
|
+
messages: [
|
|
165
|
+
{
|
|
166
|
+
role: 'system',
|
|
167
|
+
content: generateCommitPrompt(
|
|
168
|
+
'',
|
|
169
|
+
'Git diff will be provided separately in the user message.',
|
|
170
|
+
'ko'
|
|
171
|
+
)
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
role: 'user',
|
|
175
|
+
content: `Git diff:\n${diff}`
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
max_tokens: 3000
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
|
|
107
182
|
it('should strip markdown formatting from commit header', async () => {
|
|
108
183
|
const mockResponse = {
|
|
109
184
|
choices: [{
|
|
@@ -183,8 +258,7 @@ describe('AIService', () => {
|
|
|
183
258
|
content: `Git diff between main and feature/cache:\n${diff}`
|
|
184
259
|
}
|
|
185
260
|
],
|
|
186
|
-
|
|
187
|
-
temperature: 0.2
|
|
261
|
+
max_completion_tokens: 4000
|
|
188
262
|
});
|
|
189
263
|
});
|
|
190
264
|
|
package/src/commands/ai.ts
CHANGED
|
@@ -52,6 +52,117 @@ export class AIService {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
private isUnsupportedTokenParamError(
|
|
56
|
+
error: unknown,
|
|
57
|
+
param: 'max_tokens' | 'max_completion_tokens'
|
|
58
|
+
): boolean {
|
|
59
|
+
if (!error || typeof error !== 'object') {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const errorObj = error as {
|
|
64
|
+
error?: { message?: string; param?: string; code?: string };
|
|
65
|
+
message?: string;
|
|
66
|
+
param?: string;
|
|
67
|
+
code?: string;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const message = errorObj.error?.message ?? errorObj.message;
|
|
71
|
+
const code = errorObj.error?.code ?? errorObj.code;
|
|
72
|
+
const errorParam = errorObj.error?.param ?? errorObj.param;
|
|
73
|
+
|
|
74
|
+
if (code === 'unsupported_parameter' && errorParam === param) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (typeof message === 'string') {
|
|
79
|
+
return message.includes('Unsupported parameter') && message.includes(param);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private isUnsupportedValueError(error: unknown, param: string): boolean {
|
|
86
|
+
if (!error || typeof error !== 'object') {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const errorObj = error as {
|
|
91
|
+
error?: { message?: string; param?: string; code?: string };
|
|
92
|
+
message?: string;
|
|
93
|
+
param?: string;
|
|
94
|
+
code?: string;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const message = errorObj.error?.message ?? errorObj.message;
|
|
98
|
+
const code = errorObj.error?.code ?? errorObj.code;
|
|
99
|
+
const errorParam = errorObj.error?.param ?? errorObj.param;
|
|
100
|
+
|
|
101
|
+
if (code === 'unsupported_value' && errorParam === param) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (typeof message === 'string') {
|
|
106
|
+
return message.includes('Unsupported value') && message.includes(param);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private swapTokenParam(
|
|
113
|
+
request: OpenAI.ChatCompletionCreateParamsNonStreaming,
|
|
114
|
+
targetParam: 'max_tokens' | 'max_completion_tokens'
|
|
115
|
+
): OpenAI.ChatCompletionCreateParamsNonStreaming {
|
|
116
|
+
const { max_tokens, max_completion_tokens, ...rest } = request;
|
|
117
|
+
const tokenValue = max_completion_tokens ?? max_tokens;
|
|
118
|
+
|
|
119
|
+
if (tokenValue === undefined || tokenValue === null) {
|
|
120
|
+
return { ...rest };
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (targetParam === 'max_tokens') {
|
|
124
|
+
return { ...rest, max_tokens: tokenValue };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return { ...rest, max_completion_tokens: tokenValue };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private removeTemperature(
|
|
131
|
+
request: OpenAI.ChatCompletionCreateParamsNonStreaming
|
|
132
|
+
): OpenAI.ChatCompletionCreateParamsNonStreaming {
|
|
133
|
+
const { temperature, ...rest } = request;
|
|
134
|
+
return { ...rest };
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private async createChatCompletion(
|
|
138
|
+
request: OpenAI.ChatCompletionCreateParamsNonStreaming,
|
|
139
|
+
attempt = 0
|
|
140
|
+
): Promise<OpenAI.ChatCompletion> {
|
|
141
|
+
try {
|
|
142
|
+
return await this.openai.chat.completions.create(request);
|
|
143
|
+
} catch (error) {
|
|
144
|
+
if (attempt < 3 && this.isUnsupportedValueError(error, 'temperature')) {
|
|
145
|
+
const fallbackRequest = this.removeTemperature(request);
|
|
146
|
+
this.debugLog('Retrying without temperature due to unsupported value error.');
|
|
147
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (this.isUnsupportedTokenParamError(error, 'max_completion_tokens')) {
|
|
151
|
+
const fallbackRequest = this.swapTokenParam(request, 'max_tokens');
|
|
152
|
+
this.debugLog('Retrying with max_tokens due to unsupported max_completion_tokens error.');
|
|
153
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (this.isUnsupportedTokenParamError(error, 'max_tokens')) {
|
|
157
|
+
const fallbackRequest = this.swapTokenParam(request, 'max_completion_tokens');
|
|
158
|
+
this.debugLog('Retrying with max_completion_tokens due to unsupported max_tokens error.');
|
|
159
|
+
return await this.createChatCompletion(fallbackRequest, attempt + 1);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
55
166
|
/**
|
|
56
167
|
* Remove think/thinking tags and other XML-style tags from AI response
|
|
57
168
|
*/
|
|
@@ -94,7 +205,7 @@ export class AIService {
|
|
|
94
205
|
? `Git diff will be provided separately in the user message.\n\n## Additional User Instructions\n${extraInstructions.trim()}`
|
|
95
206
|
: 'Git diff will be provided separately in the user message.';
|
|
96
207
|
|
|
97
|
-
const response = await this.
|
|
208
|
+
const response = await this.createChatCompletion({
|
|
98
209
|
model: this.model,
|
|
99
210
|
messages: [
|
|
100
211
|
{
|
|
@@ -110,8 +221,7 @@ export class AIService {
|
|
|
110
221
|
content: `Git diff:\n${diff}`
|
|
111
222
|
}
|
|
112
223
|
],
|
|
113
|
-
|
|
114
|
-
temperature: 0.1
|
|
224
|
+
max_completion_tokens: 3000
|
|
115
225
|
});
|
|
116
226
|
|
|
117
227
|
this.debugLog('API Response received:', JSON.stringify(response, null, 2));
|
|
@@ -255,7 +365,7 @@ export class AIService {
|
|
|
255
365
|
? `${extraInstructions.trim()}`
|
|
256
366
|
: '';
|
|
257
367
|
|
|
258
|
-
const response = await this.
|
|
368
|
+
const response = await this.createChatCompletion({
|
|
259
369
|
model: this.model,
|
|
260
370
|
messages: [
|
|
261
371
|
{
|
|
@@ -267,8 +377,7 @@ export class AIService {
|
|
|
267
377
|
content: `Commit log:\n${commitLog}`
|
|
268
378
|
}
|
|
269
379
|
],
|
|
270
|
-
|
|
271
|
-
temperature: 0.2
|
|
380
|
+
max_completion_tokens: 3000
|
|
272
381
|
});
|
|
273
382
|
|
|
274
383
|
const choice = response.choices[0];
|
|
@@ -310,7 +419,7 @@ export class AIService {
|
|
|
310
419
|
this.debugLog('Model:', this.model);
|
|
311
420
|
this.debugLog('Base URL:', this.openai.baseURL);
|
|
312
421
|
|
|
313
|
-
const response = await this.
|
|
422
|
+
const response = await this.createChatCompletion({
|
|
314
423
|
model: this.model,
|
|
315
424
|
messages: [
|
|
316
425
|
{
|
|
@@ -327,8 +436,7 @@ export class AIService {
|
|
|
327
436
|
content: `Git diff between ${baseBranch} and ${compareBranch}:\n${diff}`
|
|
328
437
|
}
|
|
329
438
|
],
|
|
330
|
-
|
|
331
|
-
temperature: 0.2
|
|
439
|
+
max_completion_tokens: 4000
|
|
332
440
|
});
|
|
333
441
|
|
|
334
442
|
const choice = response.choices[0];
|