@redhat-cloud-services/ai-client-common 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -13
- package/package.json +1 -1
- package/src/lib/ai-client-common.d.ts +10 -5
- package/src/lib/ai-client-common.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -33,10 +33,10 @@ interface IAIClient<AP extends Record<string, unknown> = Record<string, unknown>
|
|
|
33
33
|
initialConversationId: string;
|
|
34
34
|
conversations: IConversation[];
|
|
35
35
|
}>;
|
|
36
|
-
sendMessage<TChunk = unknown>(
|
|
36
|
+
sendMessage<TChunk = unknown, T extends Record<string, unknown> = Record<string, unknown>>(
|
|
37
37
|
conversationId: string,
|
|
38
38
|
message: string,
|
|
39
|
-
options?: ISendMessageOptions<
|
|
39
|
+
options?: ISendMessageOptions<T>
|
|
40
40
|
): Promise<TChunk | IMessageResponse<AP> | void>;
|
|
41
41
|
getDefaultStreamingHandler?<TChunk = unknown>(): IStreamingHandler<TChunk> | undefined;
|
|
42
42
|
getConversationHistory(conversationId: string, options?: IRequestOptions): Promise<IConversationHistoryResponse<AP>>;
|
|
@@ -84,17 +84,34 @@ const config: IBaseClientConfig = {
|
|
|
84
84
|
|
|
85
85
|
### Streaming Support
|
|
86
86
|
|
|
87
|
+
The streaming interface has been updated to standardize chunk handling across all AI clients. The `afterChunk` callback now receives an `IStreamChunk` object with standardized structure.
|
|
88
|
+
|
|
89
|
+
#### IStreamChunk Interface
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { IStreamChunk } from '@redhat-cloud-services/ai-client-common';
|
|
93
|
+
|
|
94
|
+
interface IStreamChunk<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
95
|
+
answer: string;
|
|
96
|
+
additionalAttributes: T;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
87
100
|
#### Implementing a Custom Streaming Handler
|
|
88
101
|
|
|
89
102
|
```typescript
|
|
90
|
-
import { IStreamingHandler } from '@redhat-cloud-services/ai-client-common';
|
|
103
|
+
import { IStreamingHandler, AfterChunkCallback, IStreamChunk } from '@redhat-cloud-services/ai-client-common';
|
|
91
104
|
|
|
92
|
-
class CustomStreamingHandler implements IStreamingHandler<
|
|
93
|
-
onChunk(chunk:
|
|
105
|
+
class CustomStreamingHandler<TChunk = unknown> implements IStreamingHandler<TChunk> {
|
|
106
|
+
onChunk(chunk: TChunk, afterChunk?: AfterChunkCallback): void {
|
|
94
107
|
console.log('Received chunk:', chunk);
|
|
95
|
-
|
|
108
|
+
|
|
109
|
+
// Process the chunk and call afterChunk with standardized format
|
|
96
110
|
if (afterChunk) {
|
|
97
|
-
afterChunk(
|
|
111
|
+
afterChunk({
|
|
112
|
+
answer: extractAnswer(chunk), // Extract answer from chunk
|
|
113
|
+
additionalAttributes: extractAttributes(chunk) // Extract additional data
|
|
114
|
+
});
|
|
98
115
|
}
|
|
99
116
|
}
|
|
100
117
|
|
|
@@ -102,7 +119,7 @@ class CustomStreamingHandler implements IStreamingHandler<string> {
|
|
|
102
119
|
console.log('Stream started', { conversationId, messageId });
|
|
103
120
|
}
|
|
104
121
|
|
|
105
|
-
onComplete?(finalChunk:
|
|
122
|
+
onComplete?(finalChunk: TChunk): void {
|
|
106
123
|
console.log('Stream completed:', finalChunk);
|
|
107
124
|
}
|
|
108
125
|
|
|
@@ -119,15 +136,17 @@ class CustomStreamingHandler implements IStreamingHandler<string> {
|
|
|
119
136
|
#### Streaming Request Options
|
|
120
137
|
|
|
121
138
|
```typescript
|
|
122
|
-
import { ISendMessageOptions } from '@redhat-cloud-services/ai-client-common';
|
|
139
|
+
import { ISendMessageOptions, IStreamChunk } from '@redhat-cloud-services/ai-client-common';
|
|
123
140
|
|
|
124
|
-
const streamingOptions: ISendMessageOptions
|
|
141
|
+
const streamingOptions: ISendMessageOptions = {
|
|
125
142
|
stream: true,
|
|
126
143
|
headers: { 'Custom-Header': 'value' },
|
|
127
144
|
signal: abortController.signal,
|
|
128
|
-
afterChunk: (chunk) => {
|
|
129
|
-
// Process each chunk as it arrives
|
|
130
|
-
|
|
145
|
+
afterChunk: (chunk: IStreamChunk) => {
|
|
146
|
+
// Process each standardized chunk as it arrives
|
|
147
|
+
console.log('Answer:', chunk.answer);
|
|
148
|
+
console.log('Additional data:', chunk.additionalAttributes);
|
|
149
|
+
updateUI(chunk.answer);
|
|
131
150
|
}
|
|
132
151
|
};
|
|
133
152
|
```
|
package/package.json
CHANGED
|
@@ -59,7 +59,7 @@ export interface IAIClient<AP extends Record<string, unknown> = Record<string, u
|
|
|
59
59
|
* @param options - Optional configuration for the request
|
|
60
60
|
* @returns Promise that resolves to the AI's response
|
|
61
61
|
*/
|
|
62
|
-
sendMessage<TChunk = unknown>(conversationId: string, message: string, options?: ISendMessageOptions<
|
|
62
|
+
sendMessage<TChunk = unknown, T extends Record<string, unknown> = Record<string, unknown>>(conversationId: string, message: string, options?: ISendMessageOptions<T>): Promise<TChunk | IMessageResponse<AP> | void>;
|
|
63
63
|
/**
|
|
64
64
|
* Get the default streaming handler for this client (if any)
|
|
65
65
|
* @returns The default streaming handler or undefined if not configured
|
|
@@ -130,7 +130,7 @@ export interface IStreamingHandler<TChunk = unknown> {
|
|
|
130
130
|
/**
|
|
131
131
|
* Handle a single chunk of streaming data
|
|
132
132
|
*/
|
|
133
|
-
onChunk(chunk: TChunk, afterChunk?: (chunk:
|
|
133
|
+
onChunk(chunk: TChunk, afterChunk?: (chunk: IStreamChunk) => void): void;
|
|
134
134
|
/**
|
|
135
135
|
* Called when the stream starts
|
|
136
136
|
*/
|
|
@@ -208,7 +208,7 @@ export interface IConversationMessage<T extends Record<string, unknown> = Record
|
|
|
208
208
|
answer: string;
|
|
209
209
|
role: 'user' | 'bot';
|
|
210
210
|
input: string;
|
|
211
|
-
|
|
211
|
+
additionalAttributes?: T;
|
|
212
212
|
}
|
|
213
213
|
/**
|
|
214
214
|
* Response type for conversation history requests
|
|
@@ -222,15 +222,20 @@ export interface IConversation {
|
|
|
222
222
|
export interface IErrorMessageResponse {
|
|
223
223
|
error: any;
|
|
224
224
|
}
|
|
225
|
+
export interface IStreamChunk<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
226
|
+
answer: string;
|
|
227
|
+
additionalAttributes: T;
|
|
228
|
+
}
|
|
229
|
+
export type AfterChunkCallback<T extends Record<string, unknown> = Record<string, unknown>> = (chunk: IStreamChunk<T>) => void;
|
|
225
230
|
/**
|
|
226
231
|
* Options for sending messages, supporting both streaming and non-streaming modes
|
|
227
232
|
*/
|
|
228
|
-
export interface ISendMessageOptions<
|
|
233
|
+
export interface ISendMessageOptions<T extends Record<string, unknown> = Record<string, unknown>> extends IRequestOptions {
|
|
229
234
|
/**
|
|
230
235
|
* Whether to use streaming mode for the response
|
|
231
236
|
* When true, the client's default streaming handler will be used
|
|
232
237
|
*/
|
|
233
238
|
stream?: boolean;
|
|
234
|
-
afterChunk?:
|
|
239
|
+
afterChunk?: AfterChunkCallback<T>;
|
|
235
240
|
}
|
|
236
241
|
//# sourceMappingURL=ai-client-common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-client-common.d.ts","sourceRoot":"","sources":["../../../../../packages/ai-client-common/src/lib/ai-client-common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,MAAM,GAAG,OAAO;IACjD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,EAAE,cAAc,CAAC;IAE9B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrF;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC;QACd,qBAAqB,EAAE,MAAM,CAAC;QAC9B,aAAa,EAAE,aAAa,EAAE,CAAC;KAChC,CAAC,CAAC;IAEH;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"ai-client-common.d.ts","sourceRoot":"","sources":["../../../../../packages/ai-client-common/src/lib/ai-client-common.ts"],"names":[],"mappings":"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"}
|