Skip to content

Commit 30fbb0f

Browse files
authored
sdk-py: add versioning for assistants (langchain-ai#1665)
* add get_versions to python sdk * fml * add change_version to sdk * add assistant name to create * document assistant name * change method * version in payload * fml * add js methods and types * name -> assistant_name * export onconflictbehavior * add assistant name to create * add metadata/limit/offset to sdk * add assistant_name to update * assistantversion schema * export assistnatversion * add metadata/limit/offset to sdk * assistantversion schema * fmt * fmt * change version -> set version * fmt * assistant_name -> name * naming
1 parent 54ae4e2 commit 30fbb0f

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed

libs/sdk-js/src/client.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
Thread,
1010
ThreadState,
1111
Cron,
12+
AssistantVersion,
1213
} from "./schema.js";
1314
import { AsyncCaller, AsyncCallerParams } from "./utils/async_caller.js";
1415
import {
@@ -244,6 +245,7 @@ export class AssistantsClient extends BaseClient {
244245
metadata?: Metadata;
245246
assistantId?: string;
246247
ifExists?: OnConflictBehavior;
248+
name?: string;
247249
}): Promise<Assistant> {
248250
return this.fetch<Assistant>("/assistants", {
249251
method: "POST",
@@ -253,6 +255,7 @@ export class AssistantsClient extends BaseClient {
253255
metadata: payload.metadata,
254256
assistant_id: payload.assistantId,
255257
if_exists: payload.ifExists,
258+
name: payload.name,
256259
},
257260
});
258261
}
@@ -269,6 +272,7 @@ export class AssistantsClient extends BaseClient {
269272
graphId?: string;
270273
config?: Config;
271274
metadata?: Metadata;
275+
name?: string;
272276
},
273277
): Promise<Assistant> {
274278
return this.fetch<Assistant>(`/assistants/${assistantId}`, {
@@ -277,6 +281,7 @@ export class AssistantsClient extends BaseClient {
277281
graph_id: payload.graphId,
278282
config: payload.config,
279283
metadata: payload.metadata,
284+
name: payload.name,
280285
},
281286
});
282287
}
@@ -313,6 +318,47 @@ export class AssistantsClient extends BaseClient {
313318
},
314319
});
315320
}
321+
322+
/**
323+
* List all versions of an assistant.
324+
*
325+
* @param assistantId ID of the assistant.
326+
* @returns List of assistant versions.
327+
*/
328+
async getVersions(
329+
assistantId: string,
330+
payload?: {
331+
metadata?: Metadata;
332+
limit?: number;
333+
offset?: number;
334+
},
335+
): Promise<AssistantVersion[]> {
336+
return this.fetch<AssistantVersion[]>(
337+
`/assistants/${assistantId}/versions`,
338+
{
339+
method: "POST",
340+
json: {
341+
metadata: payload?.metadata ?? undefined,
342+
limit: payload?.limit ?? 10,
343+
offset: payload?.offset ?? 0,
344+
},
345+
},
346+
);
347+
}
348+
349+
/**
350+
* Change the version of an assistant.
351+
*
352+
* @param assistantId ID of the assistant.
353+
* @param version The version to change to.
354+
* @returns The updated assistant.
355+
*/
356+
async setLatest(assistantId: string, version: number): Promise<Assistant> {
357+
return this.fetch<Assistant>(`/assistants/${assistantId}/set_latest`, {
358+
method: "POST",
359+
json: { version },
360+
});
361+
}
316362
}
317363

318364
export class ThreadsClient extends BaseClient {

libs/sdk-js/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export { Client } from "./client.js";
22

33
export type {
44
Assistant,
5+
AssistantVersion,
56
AssistantGraph,
67
Config,
78
DefaultValues,
@@ -12,3 +13,5 @@ export type {
1213
ThreadState,
1314
Cron,
1415
} from "./schema.js";
16+
17+
export type { OnConflictBehavior } from "./types.js";

libs/sdk-js/src/schema.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,20 @@ export interface GraphSchema {
7575

7676
export type Metadata = Optional<Record<string, unknown>>;
7777

78-
export interface Assistant {
78+
export interface AssistantBase {
7979
assistant_id: string;
8080
graph_id: string;
8181
config: Config;
8282
created_at: string;
83-
updated_at: string;
8483
metadata: Metadata;
84+
version: number;
85+
}
86+
87+
export interface AssistantVersion extends AssistantBase {}
88+
89+
export interface Assistant extends AssistantBase {
90+
updated_at: string;
91+
name: string;
8592
}
8693
export type AssistantGraph = Record<string, Array<Record<string, unknown>>>;
8794

0 commit comments

Comments
 (0)