From df7047db50d5fbb0c5ae94eaf5703c4556de2e91 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Tue, 26 Nov 2024 13:56:04 +0500 Subject: [PATCH] add skip response action with guided prompt injection for agent chat reply decision making --- .../react-agents/default-components.tsx | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/default-components.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/default-components.tsx index 7d6d2b31e..bcd2192dc 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/default-components.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/default-components.tsx @@ -146,6 +146,103 @@ export const DefaultAgentComponents = () => { ); }; + +// + +interface ConversationMember { + playerSpec: { + name: string; + id: string; + }; +} + +const SkipResponseActionPrompt = () => { + const conversation = useConversation(); + const agent = useAgent(); + const historyLength = 10; + const defaultThreshold = 0.6; + + // Get conversation members + const conversationMembers = conversation.getAgents(); + const membersList = (conversationMembers as ConversationMember[]).map(m => m.playerSpec.name).join(", "); + + // Calculate current back-and-forth penalty + const messages = conversation.messageCache.getMessages() + .slice(-historyLength); + const backAndForthCount = messages.reduce((count, msg, i) => { + if (i === 0) return count; + const prevMsg = messages[i-1]; + const isBackAndForth = msg.name === agent.name && + prevMsg.name === messages[messages.length - 1]?.name; + return isBackAndForth ? count + 1 : count; + }, 0); + + const backAndForthPenalty = conversationMembers.length > 2 ? + Math.min(backAndForthCount * 0.2, 0.8) : 0; + + return ( + { + console.log('self-conscious action: explicitly choosing not to respond'); + await e.commit(); + }} + /> + ); +}; + // actions const ChatActions = () => { @@ -659,6 +756,7 @@ export const DefaultPrompts = () => { + ); };