Skip to content

Commit c8789df

Browse files
Batch message add API + return message uuids when adding messages (#153)
* SDK regeneration * chore: Version bump * chore: Version bump * SDK regeneration * wip * chore: Add support for user and graph specific entity/edge types * chore: Add support for ontology target * SDK regeneration * chore: Add support for multiple ontology targets * SDK regeneration * fix: redundant default to empty list * fix: comment * fix: comment * chore: Bump version * SDK regeneration * feat: Update context string utility to include entity attributes and episodes * SDK regeneration * chore: Version bump * SDK regeneration --------- Co-authored-by: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
1 parent 6ffd865 commit c8789df

18 files changed

Lines changed: 490 additions & 35 deletions

File tree

.fernignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ examples
33
src/wrapper
44
src/index.ts
55
src/contextString.ts
6+
tests/unit/contextString.test.ts
67
package.json
78
yarn.lock
89
.github

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@getzep/zep-cloud",
3-
"version": "3.2.0",
3+
"version": "3.4.0",
44
"private": false,
55
"repository": "https://github.com/getzep/zep-js",
66
"description": "Zep: Fast, scalable building blocks for production LLM apps",

reference.md

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ await client.graph.create({
471471
<dl>
472472
<dd>
473473

474-
List all graphs. In order to list users, use user.list_ordered instead
474+
Returns all graphs. In order to list users, use user.list_ordered instead
475475

476476
</dd>
477477
</dl>
@@ -1198,6 +1198,84 @@ await client.thread.addMessages("threadId", {
11981198
</dl>
11991199
</details>
12001200

1201+
<details><summary><code>client.thread.<a href="/src/api/resources/thread/client/Client.ts">addMessagesBatch</a>(threadId, { ...params }) -> Zep.AddThreadMessagesResponse</code></summary>
1202+
<dl>
1203+
<dd>
1204+
1205+
#### 📝 Description
1206+
1207+
<dl>
1208+
<dd>
1209+
1210+
<dl>
1211+
<dd>
1212+
1213+
Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
1214+
1215+
</dd>
1216+
</dl>
1217+
</dd>
1218+
</dl>
1219+
1220+
#### 🔌 Usage
1221+
1222+
<dl>
1223+
<dd>
1224+
1225+
<dl>
1226+
<dd>
1227+
1228+
```typescript
1229+
await client.thread.addMessagesBatch("threadId", {
1230+
messages: [
1231+
{
1232+
content: "content",
1233+
role: "norole",
1234+
},
1235+
],
1236+
});
1237+
```
1238+
1239+
</dd>
1240+
</dl>
1241+
</dd>
1242+
</dl>
1243+
1244+
#### ⚙️ Parameters
1245+
1246+
<dl>
1247+
<dd>
1248+
1249+
<dl>
1250+
<dd>
1251+
1252+
**threadId:** `string` — The ID of the thread to which messages should be added.
1253+
1254+
</dd>
1255+
</dl>
1256+
1257+
<dl>
1258+
<dd>
1259+
1260+
**request:** `Zep.AddThreadMessagesRequest`
1261+
1262+
</dd>
1263+
</dl>
1264+
1265+
<dl>
1266+
<dd>
1267+
1268+
**requestOptions:** `Thread.RequestOptions`
1269+
1270+
</dd>
1271+
</dl>
1272+
</dd>
1273+
</dl>
1274+
1275+
</dd>
1276+
</dl>
1277+
</details>
1278+
12011279
## User
12021280

12031281
<details><summary><code>client.user.<a href="/src/api/resources/user/client/Client.ts">add</a>({ ...params }) -> Zep.User</code></summary>

src/Client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ export class ZepClient {
4545
{
4646
"X-Fern-Language": "JavaScript",
4747
"X-Fern-SDK-Name": "zep-cloud",
48-
"X-Fern-SDK-Version": "3.2.0",
49-
"User-Agent": "zep-cloud/3.2.0",
48+
"X-Fern-SDK-Version": "3.4.0",
49+
"User-Agent": "zep-cloud/3.4.0",
5050
"X-Fern-Runtime": core.RUNTIME.type,
5151
"X-Fern-Runtime-Version": core.RUNTIME.version,
5252
},

src/api/resources/graph/client/Client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ export class Graph {
852852
}
853853

854854
/**
855-
* List all graphs. In order to list users, use user.list_ordered instead
855+
* Returns all graphs. In order to list users, use user.list_ordered instead
856856
*
857857
* @param {Zep.GraphListAllRequest} request
858858
* @param {Graph.RequestOptions} requestOptions - Request-specific configuration.

src/api/resources/thread/client/Client.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,113 @@ export class Thread {
722722
}
723723
}
724724

725+
/**
726+
* Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
727+
*
728+
* @param {string} threadId - The ID of the thread to which messages should be added.
729+
* @param {Zep.AddThreadMessagesRequest} request
730+
* @param {Thread.RequestOptions} requestOptions - Request-specific configuration.
731+
*
732+
* @throws {@link Zep.InternalServerError}
733+
*
734+
* @example
735+
* await client.thread.addMessagesBatch("threadId", {
736+
* messages: [{
737+
* content: "content",
738+
* role: "norole"
739+
* }]
740+
* })
741+
*/
742+
public addMessagesBatch(
743+
threadId: string,
744+
request: Zep.AddThreadMessagesRequest,
745+
requestOptions?: Thread.RequestOptions,
746+
): core.HttpResponsePromise<Zep.AddThreadMessagesResponse> {
747+
return core.HttpResponsePromise.fromPromise(this.__addMessagesBatch(threadId, request, requestOptions));
748+
}
749+
750+
private async __addMessagesBatch(
751+
threadId: string,
752+
request: Zep.AddThreadMessagesRequest,
753+
requestOptions?: Thread.RequestOptions,
754+
): Promise<core.WithRawResponse<Zep.AddThreadMessagesResponse>> {
755+
const _response = await (this._options.fetcher ?? core.fetcher)({
756+
url: core.url.join(
757+
(await core.Supplier.get(this._options.baseUrl)) ??
758+
(await core.Supplier.get(this._options.environment)) ??
759+
environments.ZepEnvironment.Default,
760+
`threads/${encodeURIComponent(threadId)}/messages-batch`,
761+
),
762+
method: "POST",
763+
headers: mergeHeaders(
764+
this._options?.headers,
765+
mergeOnlyDefinedHeaders({ ...(await this._getCustomAuthorizationHeaders()) }),
766+
requestOptions?.headers,
767+
),
768+
contentType: "application/json",
769+
requestType: "json",
770+
body: serializers.AddThreadMessagesRequest.jsonOrThrow(request, {
771+
unrecognizedObjectKeys: "strip",
772+
omitUndefined: true,
773+
}),
774+
timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
775+
maxRetries: requestOptions?.maxRetries,
776+
abortSignal: requestOptions?.abortSignal,
777+
});
778+
if (_response.ok) {
779+
return {
780+
data: serializers.AddThreadMessagesResponse.parseOrThrow(_response.body, {
781+
unrecognizedObjectKeys: "passthrough",
782+
allowUnrecognizedUnionMembers: true,
783+
allowUnrecognizedEnumValues: true,
784+
skipValidation: true,
785+
breadcrumbsPrefix: ["response"],
786+
}),
787+
rawResponse: _response.rawResponse,
788+
};
789+
}
790+
791+
if (_response.error.reason === "status-code") {
792+
switch (_response.error.statusCode) {
793+
case 500:
794+
throw new Zep.InternalServerError(
795+
serializers.ApiError.parseOrThrow(_response.error.body, {
796+
unrecognizedObjectKeys: "passthrough",
797+
allowUnrecognizedUnionMembers: true,
798+
allowUnrecognizedEnumValues: true,
799+
skipValidation: true,
800+
breadcrumbsPrefix: ["response"],
801+
}),
802+
_response.rawResponse,
803+
);
804+
default:
805+
throw new errors.ZepError({
806+
statusCode: _response.error.statusCode,
807+
body: _response.error.body,
808+
rawResponse: _response.rawResponse,
809+
});
810+
}
811+
}
812+
813+
switch (_response.error.reason) {
814+
case "non-json":
815+
throw new errors.ZepError({
816+
statusCode: _response.error.statusCode,
817+
body: _response.error.rawBody,
818+
rawResponse: _response.rawResponse,
819+
});
820+
case "timeout":
821+
throw new errors.ZepTimeoutError(
822+
"Timeout exceeded when calling POST /threads/{threadId}/messages-batch.",
823+
);
824+
case "unknown":
825+
throw new errors.ZepError({
826+
message: _response.error.errorMessage,
827+
rawResponse: _response.rawResponse,
828+
});
829+
}
830+
}
831+
725832
protected async _getCustomAuthorizationHeaders() {
726833
const apiKeyValue = (await core.Supplier.get(this._options.apiKey)) ?? process?.env["ZEP_API_KEY"];
727834
return { Authorization: `Api-Key ${apiKeyValue}` };

src/api/resources/thread/client/requests/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@ export { type ThreadListAllRequest } from "./ThreadListAllRequest.js";
22
export { type CreateThreadRequest } from "./CreateThreadRequest.js";
33
export { type ThreadGetUserContextRequest } from "./ThreadGetUserContextRequest.js";
44
export { type ThreadGetRequest } from "./ThreadGetRequest.js";
5-
export { type AddThreadMessagesRequest } from "./AddThreadMessagesRequest.js";

src/api/resources/thread/client/requests/AddThreadMessagesRequest.ts renamed to src/api/types/AddThreadMessagesRequest.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,8 @@
22
* This file was auto-generated by Fern from our API Definition.
33
*/
44

5-
import * as Zep from "../../../../index.js";
5+
import * as Zep from "../index.js";
66

7-
/**
8-
* @example
9-
* {
10-
* messages: [{
11-
* content: "content",
12-
* role: "norole"
13-
* }]
14-
* }
15-
*/
167
export interface AddThreadMessagesRequest {
178
/**
189
* Optional list of role types to ignore when adding messages to graph memory.

src/api/types/AddThreadMessagesResponse.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44

55
export interface AddThreadMessagesResponse {
66
context?: string;
7+
messageUuids?: string[];
78
}

src/api/types/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from "./ApiError.js";
2+
export * from "./AddThreadMessagesRequest.js";
23
export * from "./AddThreadMessagesResponse.js";
34
export * from "./CloneGraphResponse.js";
45
export * from "./EdgeType.js";

0 commit comments

Comments
 (0)