Skip to content

Commit 59da177

Browse files
stainless-botRobertCraigie
authored andcommitted
feat(api): add support for storing chat completions
1 parent f3d7083 commit 59da177

File tree

21 files changed

+767
-600
lines changed

21 files changed

+767
-600
lines changed

.eslintrc.js

Lines changed: 0 additions & 29 deletions
This file was deleted.

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 69
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai-dfb00c627f58e5180af7a9b29ed2f2aa0764a3b9daa6a32a1cc45bc8e48dfe15.yml
1+
configured_endpoints: 74
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai-4aa6ee65ba9efc789e05e6a5ef0883b2cadf06def8efd863dbf75e9e233067e1.yml

api.md

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,38 +32,50 @@ Types:
3232

3333
Types:
3434

35-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletion</a></code>
36-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionAssistantMessageParam</a></code>
37-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionAudio</a></code>
38-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionAudioParam</a></code>
39-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionChunk</a></code>
40-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionContentPart</a></code>
41-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionContentPartImage</a></code>
42-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionContentPartInputAudio</a></code>
43-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionContentPartRefusal</a></code>
44-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionContentPartText</a></code>
45-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionDeveloperMessageParam</a></code>
46-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionFunctionCallOption</a></code>
47-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionFunctionMessageParam</a></code>
48-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionMessage</a></code>
49-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionMessageParam</a></code>
50-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionMessageToolCall</a></code>
51-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionModality</a></code>
52-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionNamedToolChoice</a></code>
53-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionPredictionContent</a></code>
54-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionReasoningEffort</a></code>
55-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionRole</a></code>
56-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionStreamOptions</a></code>
57-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionSystemMessageParam</a></code>
58-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionTokenLogprob</a></code>
59-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionTool</a></code>
60-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionToolChoiceOption</a></code>
61-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionToolMessageParam</a></code>
62-
- <code><a href="./src/resources/chat/completions.ts">ChatCompletionUserMessageParam</a></code>
35+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletion</a></code>
36+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionAssistantMessageParam</a></code>
37+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionAudio</a></code>
38+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionAudioParam</a></code>
39+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionChunk</a></code>
40+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionContentPart</a></code>
41+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionContentPartImage</a></code>
42+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionContentPartInputAudio</a></code>
43+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionContentPartRefusal</a></code>
44+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionContentPartText</a></code>
45+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionDeleted</a></code>
46+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionDeveloperMessageParam</a></code>
47+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionFunctionCallOption</a></code>
48+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionFunctionMessageParam</a></code>
49+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionMessage</a></code>
50+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionMessageParam</a></code>
51+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionMessageToolCall</a></code>
52+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionModality</a></code>
53+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionNamedToolChoice</a></code>
54+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionPredictionContent</a></code>
55+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionReasoningEffort</a></code>
56+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionRole</a></code>
57+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionStoreMessage</a></code>
58+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionStreamOptions</a></code>
59+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionSystemMessageParam</a></code>
60+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionTokenLogprob</a></code>
61+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionTool</a></code>
62+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionToolChoiceOption</a></code>
63+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionToolMessageParam</a></code>
64+
- <code><a href="./src/resources/chat/completions/completions.ts">ChatCompletionUserMessageParam</a></code>
6365

6466
Methods:
6567

66-
- <code title="post /chat/completions">client.chat.completions.<a href="./src/resources/chat/completions.ts">create</a>({ ...params }) -> ChatCompletion</code>
68+
- <code title="post /chat/completions">client.chat.completions.<a href="./src/resources/chat/completions/completions.ts">create</a>({ ...params }) -> ChatCompletion</code>
69+
- <code title="get /chat/completions/{completion_id}">client.chat.completions.<a href="./src/resources/chat/completions/completions.ts">retrieve</a>(completionID) -> ChatCompletion</code>
70+
- <code title="post /chat/completions/{completion_id}">client.chat.completions.<a href="./src/resources/chat/completions/completions.ts">update</a>(completionID, { ...params }) -> ChatCompletion</code>
71+
- <code title="get /chat/completions">client.chat.completions.<a href="./src/resources/chat/completions/completions.ts">list</a>({ ...params }) -> ChatCompletionsPage</code>
72+
- <code title="delete /chat/completions/{completion_id}">client.chat.completions.<a href="./src/resources/chat/completions/completions.ts">delete</a>(completionID) -> ChatCompletionDeleted</code>
73+
74+
### Messages
75+
76+
Methods:
77+
78+
- <code title="get /chat/completions/{completion_id}/messages">client.chat.completions.messages.<a href="./src/resources/chat/completions/messages.ts">list</a>(completionID, { ...params }) -> ChatCompletionStoreMessagesPage</code>
6779

6880
# Embeddings
6981

eslint.config.mjs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// @ts-check
2+
import tseslint from 'typescript-eslint';
3+
import unusedImports from 'eslint-plugin-unused-imports';
4+
import prettier from 'eslint-plugin-prettier';
5+
6+
export default tseslint.config(
7+
{
8+
languageOptions: {
9+
parser: tseslint.parser,
10+
parserOptions: { sourceType: 'module' },
11+
},
12+
files: ['**/*.ts', '**/*.mts', '**/*.cts', '**/*.js', '**/*.mjs', '**/*.cjs'],
13+
ignores: ['dist/**'],
14+
plugins: {
15+
'@typescript-eslint': tseslint.plugin,
16+
'unused-imports': unusedImports,
17+
prettier,
18+
},
19+
rules: {
20+
'no-unused-vars': 'off',
21+
'prettier/prettier': 'error',
22+
'unused-imports/no-unused-imports': 'error',
23+
'no-restricted-imports': [
24+
'error',
25+
{
26+
patterns: [
27+
{
28+
regex: '^openai(/.*)?',
29+
message: 'Use a relative import, not a package import.',
30+
},
31+
],
32+
},
33+
],
34+
},
35+
},
36+
{
37+
files: ['tests/**', 'examples/**'],
38+
rules: {
39+
'no-restricted-imports': 'off',
40+
},
41+
},
42+
);

package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@
3030
"@swc/jest": "^0.2.29",
3131
"@types/jest": "^29.4.0",
3232
"@types/node": "^20.17.6",
33-
"@typescript-eslint/eslint-plugin": "^6.7.0",
34-
"@typescript-eslint/parser": "^6.0.0",
35-
"eslint": "^8.49.0",
36-
"eslint-plugin-prettier": "^5.0.1",
37-
"eslint-plugin-unused-imports": "^3.0.0",
33+
"typescript-eslint": "^8.24.0",
34+
"@typescript-eslint/eslint-plugin": "^8.24.0",
35+
"@typescript-eslint/parser": "^8.24.0",
36+
"eslint": "^9.20.1",
37+
"eslint-plugin-prettier": "^5.2.3",
38+
"eslint-plugin-unused-imports": "^4.1.4",
3839
"execa": "^5.1.1",
3940
"fast-check": "^3.22.0",
4041
"iconv-lite": "^0.6.3",

scripts/format

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ set -e
55
cd "$(dirname "$0")/.."
66

77
echo "==> Running eslint --fix"
8-
ESLINT_USE_FLAT_CONFIG="false" ./node_modules/.bin/eslint --fix --ext ts,js .
8+
./node_modules/.bin/eslint --fix .

scripts/lint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set -e
55
cd "$(dirname "$0")/.."
66

77
echo "==> Running eslint"
8-
ESLINT_USE_FLAT_CONFIG="false" ./node_modules/.bin/eslint --ext ts,js .
8+
./node_modules/.bin/eslint .
99

1010
echo "==> Building"
1111
./scripts/build # also checks types

src/client.ts

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ import { isEmptyObj } from './internal/utils/values';
8383
import { Audio, AudioModel, AudioResponseFormat } from './resources/audio/audio';
8484
import { Beta } from './resources/beta/beta';
8585
import { Chat, ChatModel } from './resources/chat/chat';
86+
import { FineTuning } from './resources/fine-tuning/fine-tuning';
87+
import {
88+
Upload,
89+
UploadCompleteParams,
90+
UploadCreateParams,
91+
Uploads as UploadsAPIUploads,
92+
} from './resources/uploads/uploads';
8693
import {
8794
ChatCompletion,
8895
ChatCompletionAssistantMessageParam,
@@ -97,9 +104,11 @@ import {
97104
ChatCompletionCreateParams,
98105
ChatCompletionCreateParamsNonStreaming,
99106
ChatCompletionCreateParamsStreaming,
107+
ChatCompletionDeleted,
100108
ChatCompletionDeveloperMessageParam,
101109
ChatCompletionFunctionCallOption,
102110
ChatCompletionFunctionMessageParam,
111+
ChatCompletionListParams,
103112
ChatCompletionMessage,
104113
ChatCompletionMessageParam,
105114
ChatCompletionMessageToolCall,
@@ -108,21 +117,17 @@ import {
108117
ChatCompletionPredictionContent,
109118
ChatCompletionReasoningEffort,
110119
ChatCompletionRole,
120+
ChatCompletionStoreMessage,
111121
ChatCompletionStreamOptions,
112122
ChatCompletionSystemMessageParam,
113123
ChatCompletionTokenLogprob,
114124
ChatCompletionTool,
115125
ChatCompletionToolChoiceOption,
116126
ChatCompletionToolMessageParam,
127+
ChatCompletionUpdateParams,
117128
ChatCompletionUserMessageParam,
118-
} from './resources/chat/completions';
119-
import { FineTuning } from './resources/fine-tuning/fine-tuning';
120-
import {
121-
Upload,
122-
UploadCompleteParams,
123-
UploadCreateParams,
124-
Uploads as UploadsAPIUploads,
125-
} from './resources/uploads/uploads';
129+
ChatCompletionsPage,
130+
} from './resources/chat/completions/completions';
126131

127132
const safeJSON = (text: string) => {
128133
try {
@@ -378,24 +383,6 @@ export class OpenAI {
378383
return url.toString();
379384
}
380385

381-
private calculateContentLength(body: unknown): string | null {
382-
if (typeof body === 'string') {
383-
if (typeof (globalThis as any).Buffer !== 'undefined') {
384-
return (globalThis as any).Buffer.byteLength(body, 'utf8').toString();
385-
}
386-
387-
if (typeof (globalThis as any).TextEncoder !== 'undefined') {
388-
const encoder = new (globalThis as any).TextEncoder();
389-
const encoded = encoder.encode(body);
390-
return encoded.length.toString();
391-
}
392-
} else if (ArrayBuffer.isView(body)) {
393-
return body.byteLength.toString();
394-
}
395-
396-
return null;
397-
}
398-
399386
/**
400387
* Used as a callback for mutating the given `FinalRequestOptions` object.
401388
*/
@@ -830,6 +817,7 @@ export declare namespace OpenAI {
830817
type ChatCompletionContentPartInputAudio as ChatCompletionContentPartInputAudio,
831818
type ChatCompletionContentPartRefusal as ChatCompletionContentPartRefusal,
832819
type ChatCompletionContentPartText as ChatCompletionContentPartText,
820+
type ChatCompletionDeleted as ChatCompletionDeleted,
833821
type ChatCompletionDeveloperMessageParam as ChatCompletionDeveloperMessageParam,
834822
type ChatCompletionFunctionCallOption as ChatCompletionFunctionCallOption,
835823
type ChatCompletionFunctionMessageParam as ChatCompletionFunctionMessageParam,
@@ -841,16 +829,20 @@ export declare namespace OpenAI {
841829
type ChatCompletionPredictionContent as ChatCompletionPredictionContent,
842830
type ChatCompletionReasoningEffort as ChatCompletionReasoningEffort,
843831
type ChatCompletionRole as ChatCompletionRole,
832+
type ChatCompletionStoreMessage as ChatCompletionStoreMessage,
844833
type ChatCompletionStreamOptions as ChatCompletionStreamOptions,
845834
type ChatCompletionSystemMessageParam as ChatCompletionSystemMessageParam,
846835
type ChatCompletionTokenLogprob as ChatCompletionTokenLogprob,
847836
type ChatCompletionTool as ChatCompletionTool,
848837
type ChatCompletionToolChoiceOption as ChatCompletionToolChoiceOption,
849838
type ChatCompletionToolMessageParam as ChatCompletionToolMessageParam,
850839
type ChatCompletionUserMessageParam as ChatCompletionUserMessageParam,
840+
type ChatCompletionsPage as ChatCompletionsPage,
851841
type ChatCompletionCreateParams as ChatCompletionCreateParams,
852842
type ChatCompletionCreateParamsNonStreaming as ChatCompletionCreateParamsNonStreaming,
853843
type ChatCompletionCreateParamsStreaming as ChatCompletionCreateParamsStreaming,
844+
type ChatCompletionUpdateParams as ChatCompletionUpdateParams,
845+
type ChatCompletionListParams as ChatCompletionListParams,
854846
};
855847

856848
export {

src/pagination.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ export abstract class AbstractPage<Item> implements AsyncIterable<Item> {
4646
}
4747

4848
async *iterPages(): AsyncGenerator<this> {
49-
// eslint-disable-next-line @typescript-eslint/no-this-alias
5049
let page: this = this;
5150
yield page;
5251
while (page.hasNextPage()) {

src/resources/chat/chat.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
import { APIResource } from '../../resource';
4-
import * as CompletionsAPI from './completions';
4+
import * as CompletionsAPI from './completions/completions';
55
import {
66
ChatCompletion,
77
ChatCompletionAssistantMessageParam,
@@ -16,9 +16,11 @@ import {
1616
ChatCompletionCreateParams,
1717
ChatCompletionCreateParamsNonStreaming,
1818
ChatCompletionCreateParamsStreaming,
19+
ChatCompletionDeleted,
1920
ChatCompletionDeveloperMessageParam,
2021
ChatCompletionFunctionCallOption,
2122
ChatCompletionFunctionMessageParam,
23+
ChatCompletionListParams,
2224
ChatCompletionMessage,
2325
ChatCompletionMessageParam,
2426
ChatCompletionMessageToolCall,
@@ -27,15 +29,18 @@ import {
2729
ChatCompletionPredictionContent,
2830
ChatCompletionReasoningEffort,
2931
ChatCompletionRole,
32+
ChatCompletionStoreMessage,
3033
ChatCompletionStreamOptions,
3134
ChatCompletionSystemMessageParam,
3235
ChatCompletionTokenLogprob,
3336
ChatCompletionTool,
3437
ChatCompletionToolChoiceOption,
3538
ChatCompletionToolMessageParam,
39+
ChatCompletionUpdateParams,
3640
ChatCompletionUserMessageParam,
41+
ChatCompletionsPage,
3742
Completions,
38-
} from './completions';
43+
} from './completions/completions';
3944

4045
export class Chat extends APIResource {
4146
completions: CompletionsAPI.Completions = new CompletionsAPI.Completions(this._client);
@@ -99,6 +104,7 @@ export declare namespace Chat {
99104
type ChatCompletionContentPartInputAudio as ChatCompletionContentPartInputAudio,
100105
type ChatCompletionContentPartRefusal as ChatCompletionContentPartRefusal,
101106
type ChatCompletionContentPartText as ChatCompletionContentPartText,
107+
type ChatCompletionDeleted as ChatCompletionDeleted,
102108
type ChatCompletionDeveloperMessageParam as ChatCompletionDeveloperMessageParam,
103109
type ChatCompletionFunctionCallOption as ChatCompletionFunctionCallOption,
104110
type ChatCompletionFunctionMessageParam as ChatCompletionFunctionMessageParam,
@@ -110,15 +116,19 @@ export declare namespace Chat {
110116
type ChatCompletionPredictionContent as ChatCompletionPredictionContent,
111117
type ChatCompletionReasoningEffort as ChatCompletionReasoningEffort,
112118
type ChatCompletionRole as ChatCompletionRole,
119+
type ChatCompletionStoreMessage as ChatCompletionStoreMessage,
113120
type ChatCompletionStreamOptions as ChatCompletionStreamOptions,
114121
type ChatCompletionSystemMessageParam as ChatCompletionSystemMessageParam,
115122
type ChatCompletionTokenLogprob as ChatCompletionTokenLogprob,
116123
type ChatCompletionTool as ChatCompletionTool,
117124
type ChatCompletionToolChoiceOption as ChatCompletionToolChoiceOption,
118125
type ChatCompletionToolMessageParam as ChatCompletionToolMessageParam,
119126
type ChatCompletionUserMessageParam as ChatCompletionUserMessageParam,
127+
type ChatCompletionsPage as ChatCompletionsPage,
120128
type ChatCompletionCreateParams as ChatCompletionCreateParams,
121129
type ChatCompletionCreateParamsNonStreaming as ChatCompletionCreateParamsNonStreaming,
122130
type ChatCompletionCreateParamsStreaming as ChatCompletionCreateParamsStreaming,
131+
type ChatCompletionUpdateParams as ChatCompletionUpdateParams,
132+
type ChatCompletionListParams as ChatCompletionListParams,
123133
};
124134
}

0 commit comments

Comments
 (0)