From 4a31c0543357458afbc588df9dcb2d4ea75f92b7 Mon Sep 17 00:00:00 2001 From: an-lee Date: Thu, 19 Sep 2024 06:33:25 +0800 Subject: [PATCH] Improve chat (#1084) * refactor chat prompt * update style --- enjoy/src/constants/index.ts | 2 -- enjoy/src/main/db/models/chat-member.ts | 10 ++++++++++ .../renderer/components/chats/chat-user-message.tsx | 2 +- enjoy/src/renderer/context/chat-session-provider.tsx | 7 ++++++- enjoy/src/types/chat.d.ts | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/enjoy/src/constants/index.ts b/enjoy/src/constants/index.ts index 803a1893..2818f674 100644 --- a/enjoy/src/constants/index.ts +++ b/enjoy/src/constants/index.ts @@ -60,8 +60,6 @@ export const NOT_SUPPORT_JSON_FORMAT_MODELS = [ export const CHAT_SYSTEM_PROMPT_TEMPLATE = `You are {name}. {agent_prompt} - -You are chatting in an online chat room. {agent_chat_prompt} [Rules must be followed] diff --git a/enjoy/src/main/db/models/chat-member.ts b/enjoy/src/main/db/models/chat-member.ts index b91c53fe..018af3fa 100644 --- a/enjoy/src/main/db/models/chat-member.ts +++ b/enjoy/src/main/db/models/chat-member.ts @@ -66,6 +66,16 @@ export class ChatMember extends Model { }) agent: ChatAgent; + @Column(DataType.VIRTUAL) + get name(): string { + if (this.userType === "User") { + return this.user.name; + } else if (this.userType === "Agent") { + return this.agent.name; + } + return ""; + } + @Column(DataType.VIRTUAL) get user(): { name: string; diff --git a/enjoy/src/renderer/components/chats/chat-user-message.tsx b/enjoy/src/renderer/components/chats/chat-user-message.tsx index 08ca9934..fdf13e77 100644 --- a/enjoy/src/renderer/components/chats/chat-user-message.tsx +++ b/enjoy/src/renderer/components/chats/chat-user-message.tsx @@ -385,7 +385,7 @@ const ChatUserMessageActions = (props: { -
+
{refinement} diff --git a/enjoy/src/renderer/context/chat-session-provider.tsx b/enjoy/src/renderer/context/chat-session-provider.tsx index 631bf2ae..d87df7c3 100644 --- a/enjoy/src/renderer/context/chat-session-provider.tsx +++ b/enjoy/src/renderer/context/chat-session-provider.tsx @@ -203,6 +203,7 @@ export const ChatSessionProvider = ({ const chain = prompt.pipe(llm); setSubmitting(true); + const lastChatMessage = chatMessages[chatMessages.length - 1]; const reply = await chain.invoke({ name: member.agent.name, agent_prompt: member.agent.config.prompt || "", @@ -219,6 +220,7 @@ export const ChatSessionProvider = ({ }) .join("\n"), history: chatMessages + .slice(0, chatMessages.length - 1) .map( (message) => `- ${(message.member.user || message.member.agent).name}: ${ @@ -226,7 +228,10 @@ export const ChatSessionProvider = ({ }(${dayjs(message.createdAt).fromNow()})` ) .join("\n"), - input: chatMessages.length > 0 ? "Continue" : "Start the conversation", + input: + (lastChatMessage + ? `${lastChatMessage.member.name}: ${lastChatMessage.content}\n` + : "") + `${member.agent.name}:`, }); // the reply may contain the member's name like "Agent: xxx". We need to remove it. diff --git a/enjoy/src/types/chat.d.ts b/enjoy/src/types/chat.d.ts index 0556524f..e567a822 100644 --- a/enjoy/src/types/chat.d.ts +++ b/enjoy/src/types/chat.d.ts @@ -43,6 +43,7 @@ type ChatMemberType = { introduction?: string; [key: string]: any; }; + name: string; agent?: ChatAgentType; user?: UserType; };