Skip to content

Commit 33bdfd1

Browse files
committed
feat: format of request has been changed
1 parent 6d983fb commit 33bdfd1

6 files changed

Lines changed: 718 additions & 154 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@rapidaai/react",
3-
"version": "1.1.37",
3+
"version": "1.1.38",
44
"description": "An easy to use react client for building generative ai application using Rapida platform.",
55
"repository": {
66
"type": "git",

src/agents/index.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { AgentConfig } from "@/rapida/types/agent-config";
2727
import { AgentCallback } from "@/rapida/types/agent-callback";
2828
import {
2929
AssistantConversationConfiguration,
30+
AssistantConversationMessageTextContent,
3031
AssistantConversationUserMessage,
3132
AssistantDefinition,
3233
AssistantMessagingRequest,
@@ -39,7 +40,7 @@ import { ConnectionState } from "@/rapida/types/connection-state";
3940
import { AgentEventCallback } from "@/rapida/types/agent-event-callback";
4041
import { EventEmitter } from "events";
4142
import type TypedEmitter from "typed-emitter";
42-
import { Content, Message, Metric } from "@/rapida/clients/protos/common_pb";
43+
import { Metric } from "@/rapida/clients/protos/common_pb";
4344
import { Message as LocalMessage, MessageRole } from "@/rapida/types/message";
4445
import { AgentEvent } from "@/rapida/types/agent-event";
4546
import {
@@ -61,6 +62,7 @@ import {
6162
} from "@/rapida/types/agent-deployment";
6263
import { HEADER_SOURCE_KEY } from "@/rapida/utils/rapida_header";
6364
import * as google_protobuf_any_pb from "google-protobuf/google/protobuf/any_pb";
65+
import { AssistantConversationMessageAudioContent } from "../clients/protos/talk-api_pb";
6466

6567
/**
6668
* Rapida Agent SDK
@@ -380,16 +382,31 @@ export class Agent extends (EventEmitter as new () => TypedEmitter<AgentEventCal
380382
* @param contents - Message contents
381383
* @returns Configured messaging request
382384
*/
383-
protected createAssistantRequest(
384-
role: string,
385-
contents: Content[]
385+
protected createAssistantTextMessage(
386+
content: string
386387
): AssistantMessagingRequest {
387388
const request = new AssistantMessagingRequest();
388389
const userMessage = new AssistantConversationUserMessage();
389-
const message = new Message();
390-
message.setRole(role);
391-
message.setContentsList(contents);
392-
userMessage.setMessage(message);
390+
const message = new AssistantConversationMessageTextContent();
391+
message.setContent(content);
392+
userMessage.setText(message);
393+
request.setMessage(userMessage);
394+
return request;
395+
}
396+
397+
/**
398+
*
399+
* @param content
400+
* @returns
401+
*/
402+
protected createAssistantAudioMessage(
403+
content: Uint8Array | string
404+
): AssistantMessagingRequest {
405+
const request = new AssistantMessagingRequest();
406+
const userMessage = new AssistantConversationUserMessage();
407+
const message = new AssistantConversationMessageAudioContent();
408+
message.setContent(content);
409+
userMessage.setAudio(message);
393410
request.setMessage(userMessage);
394411
return request;
395412
}

src/agents/voice-agent.ts

Lines changed: 87 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ export class VoiceAgent extends Agent {
180180
const maxVolume = event.data[1];
181181
if (this.inputChannel == Channel.Audio)
182182
this.talkingConnection?.write(
183-
this.createAssistantRequest("user", [
184-
toStreamAudioContent(arrayBufferToUint8(rawAudioPcmData.buffer)),
185-
])
183+
this.createAssistantAudioMessage(
184+
arrayBufferToUint8(rawAudioPcmData.buffer)
185+
)
186186
);
187187
};
188188

@@ -268,9 +268,7 @@ export class VoiceAgent extends Agent {
268268
if (!this.isConnected) await this.connect();
269269
if (this.inputChannel == Channel.Text) {
270270
// only send text when you know the channel is text
271-
this.talkingConnection?.write(
272-
this.createAssistantRequest("user", [toTextContent(text)])
273-
);
271+
this.talkingConnection?.write(this.createAssistantTextMessage(text));
274272
}
275273
};
276274

@@ -381,29 +379,34 @@ export class VoiceAgent extends Agent {
381379
userContent: AssistantConversationUserMessage | undefined
382380
) => {
383381
if (userContent) {
384-
const agentTranscript = toContentText(
385-
userContent.getMessage()?.getContentsList()
386-
);
387-
if (agentTranscript) {
388-
if (this.agentMessages.length > 0) {
389-
const lastMessage = this.agentMessages[this.agentMessages.length - 1];
390-
if (
391-
lastMessage.role === MessageRole.User &&
392-
lastMessage.id === userContent.getId()
393-
) {
394-
this.agentMessages.pop();
382+
switch (userContent.getMessageCase()) {
383+
case AssistantConversationUserMessage.MessageCase.MESSAGE_NOT_SET:
384+
case AssistantConversationUserMessage.MessageCase.AUDIO:
385+
case AssistantConversationUserMessage.MessageCase.TEXT:
386+
const agentTranscript = userContent.getText()?.getContent();
387+
if (agentTranscript) {
388+
if (this.agentMessages.length > 0) {
389+
const lastMessage =
390+
this.agentMessages[this.agentMessages.length - 1];
391+
if (
392+
lastMessage.role === MessageRole.User &&
393+
lastMessage.id === userContent.getId()
394+
) {
395+
this.agentMessages.pop();
396+
}
397+
}
398+
this.agentMessages.push({
399+
id: userContent.getId(),
400+
role: MessageRole.User,
401+
messages: [agentTranscript],
402+
time: toDate(userContent?.getTime()),
403+
status: userContent.getCompleted()
404+
? MessageStatus.Complete
405+
: MessageStatus.Pending,
406+
});
395407
}
396-
}
397-
this.agentMessages.push({
398-
id: userContent.getId(),
399-
role: MessageRole.User,
400-
messages: [agentTranscript],
401-
time: toDate(userContent?.getTime()),
402-
status: userContent.getCompleted()
403-
? MessageStatus.Complete
404-
: MessageStatus.Pending,
405-
});
406408
}
409+
407410
this.emit(
408411
AgentEvent.ConversationEvent,
409412
AssistantMessagingResponse.DataCase.USER,
@@ -416,30 +419,42 @@ export class VoiceAgent extends Agent {
416419
systemContent: AssistantConversationAssistantMessage | undefined
417420
) => {
418421
if (systemContent) {
419-
const responseContent =
420-
systemContent?.getMessage()?.getContentsList() || [];
421-
if (
422-
responseContent.filter((x) => x.getContenttype() == "text").length > 0
423-
) {
424-
const systemTranscript = toContentText(
425-
responseContent.filter((x) => x.getContenttype() == "text")
426-
);
427-
if (systemTranscript) {
428-
if (systemContent.getCompleted()) {
429-
// Complete message
430-
if (this.agentMessages.length > 0) {
431-
const lastMessage =
432-
this.agentMessages[this.agentMessages.length - 1];
433-
if (
434-
lastMessage.role === MessageRole.System &&
435-
lastMessage.status === MessageStatus.Pending
436-
) {
437-
// Update the existing message to complete
438-
lastMessage.messages = [systemTranscript]; // Replace with complete message
439-
lastMessage.status = MessageStatus.Complete;
440-
lastMessage.time = toDate(systemContent?.getTime());
422+
//
423+
switch (systemContent.getMessageCase()) {
424+
case AssistantConversationAssistantMessage.MessageCase.MESSAGE_NOT_SET:
425+
case AssistantConversationAssistantMessage.MessageCase.AUDIO:
426+
const content = systemContent.getAudio();
427+
if (content) {
428+
const audioData = content.getContent_asU8();
429+
this.addAudioChunk(new Uint8Array(audioData).buffer);
430+
}
431+
case AssistantConversationAssistantMessage.MessageCase.TEXT:
432+
const systemTranscript = systemContent.getText()?.getContent();
433+
if (systemTranscript) {
434+
if (systemContent.getCompleted()) {
435+
// Complete message
436+
if (this.agentMessages.length > 0) {
437+
const lastMessage =
438+
this.agentMessages[this.agentMessages.length - 1];
439+
if (
440+
lastMessage.role === MessageRole.System &&
441+
lastMessage.status === MessageStatus.Pending
442+
) {
443+
// Update the existing message to complete
444+
lastMessage.messages = [systemTranscript]; // Replace with complete message
445+
lastMessage.status = MessageStatus.Complete;
446+
lastMessage.time = toDate(systemContent?.getTime());
447+
} else {
448+
// Unexpected case: complete message without pending, create new
449+
this.agentMessages.push({
450+
id: systemContent.getId(),
451+
role: MessageRole.System,
452+
messages: [systemTranscript],
453+
time: toDate(systemContent?.getTime()),
454+
status: MessageStatus.Complete,
455+
});
456+
}
441457
} else {
442-
// Unexpected case: complete message without pending, create new
443458
this.agentMessages.push({
444459
id: systemContent.getId(),
445460
role: MessageRole.System,
@@ -449,28 +464,29 @@ export class VoiceAgent extends Agent {
449464
});
450465
}
451466
} else {
452-
this.agentMessages.push({
453-
id: systemContent.getId(),
454-
role: MessageRole.System,
455-
messages: [systemTranscript],
456-
time: toDate(systemContent?.getTime()),
457-
status: MessageStatus.Complete,
458-
});
459-
}
460-
} else {
461-
// Chunk
462-
if (this.agentMessages.length > 0) {
463-
const lastMessage =
464-
this.agentMessages[this.agentMessages.length - 1];
465-
if (
466-
lastMessage.role === MessageRole.System &&
467-
lastMessage.status === MessageStatus.Pending
468-
) {
469-
// Update existing message with new chunk
470-
lastMessage.messages[0] += systemTranscript; // Merge strings
471-
lastMessage.time = toDate(systemContent?.getTime());
467+
// Chunk
468+
if (this.agentMessages.length > 0) {
469+
const lastMessage =
470+
this.agentMessages[this.agentMessages.length - 1];
471+
if (
472+
lastMessage.role === MessageRole.System &&
473+
lastMessage.status === MessageStatus.Pending
474+
) {
475+
// Update existing message with new chunk
476+
lastMessage.messages[0] += systemTranscript; // Merge strings
477+
lastMessage.time = toDate(systemContent?.getTime());
478+
} else {
479+
// Create new pending message for chunk
480+
this.agentMessages.push({
481+
id: systemContent.getId(),
482+
role: MessageRole.System,
483+
messages: [systemTranscript],
484+
time: toDate(systemContent?.getTime()),
485+
status: MessageStatus.Pending,
486+
});
487+
}
472488
} else {
473-
// Create new pending message for chunk
489+
// Create new pending message for chunk if no messages exist
474490
this.agentMessages.push({
475491
id: systemContent.getId(),
476492
role: MessageRole.System,
@@ -479,29 +495,8 @@ export class VoiceAgent extends Agent {
479495
status: MessageStatus.Pending,
480496
});
481497
}
482-
} else {
483-
// Create new pending message for chunk if no messages exist
484-
this.agentMessages.push({
485-
id: systemContent.getId(),
486-
role: MessageRole.System,
487-
messages: [systemTranscript],
488-
time: toDate(systemContent?.getTime()),
489-
status: MessageStatus.Pending,
490-
});
491498
}
492499
}
493-
}
494-
}
495-
496-
if (
497-
responseContent.filter((x) => x.getContenttype() == "audio").length > 0
498-
) {
499-
for (const content of responseContent) {
500-
if (content.getContenttype() === "audio") {
501-
const audioData = content.getContent_asU8();
502-
this.addAudioChunk(new Uint8Array(audioData).buffer);
503-
}
504-
}
505500
}
506501
this.emit(
507502
AgentEvent.ConversationEvent,

src/clients/protos/artifacts

0 commit comments

Comments
 (0)