meilisearch
Version:
The Meilisearch JS client for Node.js and the browser.
78 lines (71 loc) • 2.1 kB
text/typescript
import type { HttpRequests } from "./http-requests.js";
import type {
ChatWorkspaceSettings,
ChatCompletionRequest,
} from "./types/types.js";
/**
* Class for handling chat workspaces.
*
* @see {@link https://www.meilisearch.com/docs/reference/api/chats}
*/
export class ChatWorkspace {
readonly #httpRequest: HttpRequests;
readonly #workspace: string;
constructor(httpRequests: HttpRequests, workspace: string) {
this.#httpRequest = httpRequests;
this.#workspace = workspace;
}
/**
* Get the settings of a chat workspace.
*
* @experimental
* @see {@link https://www.meilisearch.com/docs/reference/api/chats#get-chat-workspace-settings}
*/
async get(): Promise<ChatWorkspaceSettings> {
return await this.#httpRequest.get({
path: `chats/${this.#workspace}/settings`,
});
}
/**
* Update the settings of a chat workspace.
*
* @experimental
* @see {@link https://www.meilisearch.com/docs/reference/api/chats#update-chat-workspace-settings}
*/
async update(
settings: Partial<ChatWorkspaceSettings>,
): Promise<ChatWorkspaceSettings> {
return await this.#httpRequest.patch({
path: `chats/${this.#workspace}/settings`,
body: settings,
});
}
/**
* Reset the settings of a chat workspace.
*
* @experimental
* @see {@link https://www.meilisearch.com/docs/reference/api/chats#reset-chat-workspace-settings}
*/
async reset(): Promise<void> {
await this.#httpRequest.delete({
path: `chats/${this.#workspace}/settings`,
});
}
/**
* Create a chat completion using an OpenAI-compatible interface.
*
* @experimental
* @see {@link https://www.meilisearch.com/docs/reference/api/chats#chat-completions}
*/
async streamCompletion(
completion: ChatCompletionRequest,
): Promise<ReadableStream<Uint8Array>> {
if (!completion.stream) {
throw new Error("The SDK only supports streaming");
}
return await this.#httpRequest.postStream({
path: `chats/${this.#workspace}/chat/completions`,
body: completion,
});
}
}