Skip to content

Commit bb4bce3

Browse files
authored
Merge pull request #715 from openai/release-please--branches--master--changes--next--components--openai
release: 4.29.0
2 parents beea0c7 + 993669b commit bb4bce3

31 files changed

+3168
-284
lines changed

.release-please-manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "4.28.5"
2+
".": "4.29.0"
33
}

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 4.29.0 (2024-03-13)
4+
5+
Full Changelog: [v4.28.5...v4.29.0](https://github.com/openai/openai-node/compare/v4.28.5...v4.29.0)
6+
7+
### Features
8+
9+
* **assistants:** add support for streaming ([#714](https://github.com/openai/openai-node/issues/714)) ([7d27d28](https://github.com/openai/openai-node/commit/7d27d286876d0a575d91a4752f401126fe93d2a3))
10+
311
## 4.28.5 (2024-03-13)
412

513
Full Changelog: [v4.28.4...v4.28.5](https://github.com/openai/openai-node/compare/v4.28.4...v4.28.5)

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ You can import in Deno via:
1919
<!-- x-release-please-start-version -->
2020

2121
```ts
22-
import OpenAI from 'https://deno.land/x/openai@v4.28.5/mod.ts';
22+
import OpenAI from 'https://deno.land/x/openai@v4.29.0/mod.ts';
2323
```
2424

2525
<!-- x-release-please-end -->

api.md

+49-9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
Types:
44

5+
- <code><a href="./src/resources/shared.ts">ErrorObject</a></code>
56
- <code><a href="./src/resources/shared.ts">FunctionDefinition</a></code>
67
- <code><a href="./src/resources/shared.ts">FunctionParameters</a></code>
78

@@ -177,6 +178,15 @@ Types:
177178

178179
- <code><a href="./src/resources/beta/assistants/assistants.ts">Assistant</a></code>
179180
- <code><a href="./src/resources/beta/assistants/assistants.ts">AssistantDeleted</a></code>
181+
- <code><a href="./src/resources/beta/assistants/assistants.ts">AssistantStreamEvent</a></code>
182+
- <code><a href="./src/resources/beta/assistants/assistants.ts">AssistantTool</a></code>
183+
- <code><a href="./src/resources/beta/assistants/assistants.ts">CodeInterpreterTool</a></code>
184+
- <code><a href="./src/resources/beta/assistants/assistants.ts">FunctionTool</a></code>
185+
- <code><a href="./src/resources/beta/assistants/assistants.ts">MessageStreamEvent</a></code>
186+
- <code><a href="./src/resources/beta/assistants/assistants.ts">RetrievalTool</a></code>
187+
- <code><a href="./src/resources/beta/assistants/assistants.ts">RunStepStreamEvent</a></code>
188+
- <code><a href="./src/resources/beta/assistants/assistants.ts">RunStreamEvent</a></code>
189+
- <code><a href="./src/resources/beta/assistants/assistants.ts">ThreadStreamEvent</a></code>
180190

181191
Methods:
182192

@@ -214,6 +224,7 @@ Methods:
214224
- <code title="post /threads/{thread_id}">client.beta.threads.<a href="./src/resources/beta/threads/threads.ts">update</a>(threadId, { ...params }) -> Thread</code>
215225
- <code title="delete /threads/{thread_id}">client.beta.threads.<a href="./src/resources/beta/threads/threads.ts">del</a>(threadId) -> ThreadDeleted</code>
216226
- <code title="post /threads/runs">client.beta.threads.<a href="./src/resources/beta/threads/threads.ts">createAndRun</a>({ ...params }) -> Run</code>
227+
- <code>client.beta.threads.<a href="./src/resources/beta/threads/threads.ts">createAndRunStream</a>(body, options?) -> AssistantStream</code>
217228

218229
### Runs
219230

@@ -231,16 +242,29 @@ Methods:
231242
- <code title="get /threads/{thread_id}/runs">client.beta.threads.runs.<a href="./src/resources/beta/threads/runs/runs.ts">list</a>(threadId, { ...params }) -> RunsPage</code>
232243
- <code title="post /threads/{thread_id}/runs/{run_id}/cancel">client.beta.threads.runs.<a href="./src/resources/beta/threads/runs/runs.ts">cancel</a>(threadId, runId) -> Run</code>
233244
- <code title="post /threads/{thread_id}/runs/{run_id}/submit_tool_outputs">client.beta.threads.runs.<a href="./src/resources/beta/threads/runs/runs.ts">submitToolOutputs</a>(threadId, runId, { ...params }) -> Run</code>
245+
- <code>client.beta.threads.runs.<a href="./src/resources/beta/threads/runs/runs.ts">createAndStream</a>(threadId, body, options?) -> AssistantStream</code>
246+
- <code>client.beta.threads.runs.<a href="./src/resources/beta/threads/runs/runs.ts">submitToolOutputsStream</a>(threadId, runId, body, options?) -> AssistantStream</code>
234247

235248
#### Steps
236249

237250
Types:
238251

239-
- <code><a href="./src/resources/beta/threads/runs/steps.ts">CodeToolCall</a></code>
252+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">CodeInterpreterLogs</a></code>
253+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">CodeInterpreterOutputImage</a></code>
254+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">CodeInterpreterToolCall</a></code>
255+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">CodeInterpreterToolCallDelta</a></code>
240256
- <code><a href="./src/resources/beta/threads/runs/steps.ts">FunctionToolCall</a></code>
257+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">FunctionToolCallDelta</a></code>
241258
- <code><a href="./src/resources/beta/threads/runs/steps.ts">MessageCreationStepDetails</a></code>
242259
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RetrievalToolCall</a></code>
260+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RetrievalToolCallDelta</a></code>
243261
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RunStep</a></code>
262+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RunStepDelta</a></code>
263+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RunStepDeltaEvent</a></code>
264+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">RunStepDeltaMessageDelta</a></code>
265+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">ToolCall</a></code>
266+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">ToolCallDelta</a></code>
267+
- <code><a href="./src/resources/beta/threads/runs/steps.ts">ToolCallDeltaObject</a></code>
244268
- <code><a href="./src/resources/beta/threads/runs/steps.ts">ToolCallsStepDetails</a></code>
245269

246270
Methods:
@@ -252,17 +276,33 @@ Methods:
252276

253277
Types:
254278

255-
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageContentImageFile</a></code>
256-
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageContentText</a></code>
257-
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ThreadMessage</a></code>
258-
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ThreadMessageDeleted</a></code>
279+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">Annotation</a></code>
280+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">AnnotationDelta</a></code>
281+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">FileCitationAnnotation</a></code>
282+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">FileCitationDeltaAnnotation</a></code>
283+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">FilePathAnnotation</a></code>
284+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">FilePathDeltaAnnotation</a></code>
285+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ImageFile</a></code>
286+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ImageFileContentBlock</a></code>
287+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ImageFileDelta</a></code>
288+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">ImageFileDeltaBlock</a></code>
289+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">Message</a></code>
290+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageContent</a></code>
291+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageContentDelta</a></code>
292+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageDeleted</a></code>
293+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageDelta</a></code>
294+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">MessageDeltaEvent</a></code>
295+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">Text</a></code>
296+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">TextContentBlock</a></code>
297+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">TextDelta</a></code>
298+
- <code><a href="./src/resources/beta/threads/messages/messages.ts">TextDeltaBlock</a></code>
259299

260300
Methods:
261301

262-
- <code title="post /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">create</a>(threadId, { ...params }) -> ThreadMessage</code>
263-
- <code title="get /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">retrieve</a>(threadId, messageId) -> ThreadMessage</code>
264-
- <code title="post /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">update</a>(threadId, messageId, { ...params }) -> ThreadMessage</code>
265-
- <code title="get /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">list</a>(threadId, { ...params }) -> ThreadMessagesPage</code>
302+
- <code title="post /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">create</a>(threadId, { ...params }) -> Message</code>
303+
- <code title="get /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">retrieve</a>(threadId, messageId) -> Message</code>
304+
- <code title="post /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">update</a>(threadId, messageId, { ...params }) -> Message</code>
305+
- <code title="get /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/resources/beta/threads/messages/messages.ts">list</a>(threadId, { ...params }) -> MessagesPage</code>
266306

267307
#### Files
268308

build-deno

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This is a build produced from https://github.com/openai/openai-node – please g
1414
Usage:
1515
1616
\`\`\`ts
17-
import OpenAI from "https://deno.land/x/openai@v4.28.5/mod.ts";
17+
import OpenAI from "https://deno.land/x/openai@v4.29.0/mod.ts";
1818
1919
const client = new OpenAI();
2020
\`\`\`

examples/assistant-stream-raw.ts

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import OpenAI from 'openai';
2+
3+
const openai = new OpenAI();
4+
5+
async function main() {
6+
const assistant = await openai.beta.assistants.create({
7+
model: 'gpt-4-1106-preview',
8+
name: 'Math Tutor',
9+
instructions: 'You are a personal math tutor. Write and run code to answer math questions.',
10+
});
11+
12+
const thread = await openai.beta.threads.create({
13+
messages: [
14+
{
15+
role: 'user',
16+
content: '"I need to solve the equation `3x + 11 = 14`. Can you help me?"',
17+
},
18+
],
19+
});
20+
21+
const stream = await openai.beta.threads.runs.create(thread.id, {
22+
assistant_id: assistant.id,
23+
additional_instructions: 'Please address the user as Jane Doe. The user has a premium account.',
24+
stream: true,
25+
});
26+
27+
for await (const event of stream) {
28+
if (event.event === 'thread.message.delta') {
29+
const chunk = event.data.delta.content?.[0];
30+
if (chunk && 'text' in chunk) {
31+
process.stdout.write(chunk.text.value);
32+
}
33+
}
34+
}
35+
36+
console.log();
37+
}
38+
39+
main();

examples/assistant-stream.ts

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env -S npm run tsn -T
2+
3+
import OpenAI from 'openai';
4+
5+
/**
6+
* Example of streaming a response from an assistant
7+
*/
8+
9+
const openai = new OpenAI();
10+
11+
async function main() {
12+
const assistant = await openai.beta.assistants.create({
13+
model: 'gpt-4-1106-preview',
14+
name: 'Math Tutor',
15+
instructions: 'You are a personal math tutor. Write and run code to answer math questions.',
16+
});
17+
18+
let assistantId = assistant.id;
19+
console.log('Created Assistant with Id: ' + assistantId);
20+
21+
const thread = await openai.beta.threads.create({
22+
messages: [
23+
{
24+
role: 'user',
25+
content: '"I need to solve the equation `3x + 11 = 14`. Can you help me?"',
26+
},
27+
],
28+
});
29+
30+
let threadId = thread.id;
31+
console.log('Created thread with Id: ' + threadId);
32+
33+
const run = openai.beta.threads.runs
34+
.createAndStream(threadId, {
35+
assistant_id: assistantId,
36+
})
37+
//Subscribe to streaming events and log them
38+
.on('event', (event) => console.log(event))
39+
.on('textDelta', (delta, snapshot) => console.log(snapshot))
40+
.on('messageDelta', (delta, snapshot) => console.log(snapshot))
41+
.on('run', (run) => console.log(run))
42+
.on('messageDelta', (delta, snapshot) => console.log(snapshot))
43+
.on('connect', () => console.log());
44+
const result = await run.finalRun();
45+
console.log('Run Result' + result);
46+
}
47+
48+
main();

examples/assistants.ts

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env -S npm run tsn -T
2+
3+
import OpenAI from 'openai';
4+
import { sleep } from 'openai/core';
5+
6+
/**
7+
* Example of polling for a complete response from an assistant
8+
*/
9+
10+
const openai = new OpenAI();
11+
12+
async function main() {
13+
const assistant = await openai.beta.assistants.create({
14+
model: 'gpt-4-1106-preview',
15+
name: 'Math Tutor',
16+
instructions: 'You are a personal math tutor. Write and run code to answer math questions.',
17+
// tools = [],
18+
});
19+
20+
let assistantId = assistant.id;
21+
console.log('Created Assistant with Id: ' + assistantId);
22+
23+
const thread = await openai.beta.threads.create({
24+
messages: [
25+
{
26+
role: 'user',
27+
content: '"I need to solve the equation `3x + 11 = 14`. Can you help me?"',
28+
},
29+
],
30+
});
31+
32+
let threadId = thread.id;
33+
console.log('Created thread with Id: ' + threadId);
34+
35+
const run = await openai.beta.threads.runs.create(thread.id, {
36+
assistant_id: assistantId,
37+
additional_instructions: 'Please address the user as Jane Doe. The user has a premium account.',
38+
});
39+
40+
console.log('Created run with Id: ' + run.id);
41+
42+
while (true) {
43+
const result = await openai.beta.threads.runs.retrieve(thread.id, run.id);
44+
if (result.status == 'completed') {
45+
const messages = await openai.beta.threads.messages.list(thread.id);
46+
for (const message of messages.getPaginatedItems()) {
47+
console.log(message);
48+
}
49+
break;
50+
} else {
51+
console.log('Waiting for completion. Current status: ' + result.status);
52+
await sleep(5000);
53+
}
54+
}
55+
}
56+
57+
main();

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openai",
3-
"version": "4.28.5",
3+
"version": "4.29.0",
44
"description": "The official TypeScript library for the OpenAI API",
55
"author": "OpenAI <[email protected]>",
66
"types": "dist/index.d.ts",

src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ export namespace OpenAI {
285285

286286
export import Beta = API.Beta;
287287

288+
export import ErrorObject = API.ErrorObject;
288289
export import FunctionDefinition = API.FunctionDefinition;
289290
export import FunctionParameters = API.FunctionParameters;
290291
}

0 commit comments

Comments
 (0)