diff --git a/apps/docs/docs/agents.md b/apps/docs/docs/agents.md new file mode 100644 index 00000000..c8712439 --- /dev/null +++ b/apps/docs/docs/agents.md @@ -0,0 +1,23 @@ +# Agents + +## Overview +- Agents carry out a specific part of the conversation and / or perform tasks like orchestrating between other agents, triggering internal processes and fetching information. +- Agents carry out tasks through tools provided to them. +- Agents are connected to each other in a Directed Acyclic Graph (DAG). Hence, every agent has a parent agent and children agents, to which they can pass control of the conversation to. + +## Agent Configurations + +### Description +The description conveys the agent's role in the multi-agent system. Writing a good description is important for other agents to know when to pass control of the conversation to an agent. + +### Instructions +Agent instructions are the backbone of an agent, defining its behavior. RowBoat Studio's copilot produces a good framework for agent instructions, involving Role, Steps to Follow, Scope and Guidelines. Since agents are powered by LLMs, general best practices while writing prompts apply. + +### Examples +Coming soon. + +### Model +Coming soon. + +### Control +Coming soon. \ No newline at end of file diff --git a/apps/docs/docs/building_in_studio.md b/apps/docs/docs/building_in_studio.md index e4cb6157..8566aaed 100644 --- a/apps/docs/docs/building_in_studio.md +++ b/apps/docs/docs/building_in_studio.md @@ -1,9 +1,13 @@ # Building Assistants in Studio This is a guide to building your first assistant on RowBoat Studio, with examples.
-**Prerequisite:** Complete the [installation steps](/installation/) to set up RowBoat Studio. + +Prerequisite: + +1. **Open Source Users:** Complete the [open-source installation steps](/oss_installation/) to set up RowBoat Studio. +2. **Hosted App Users:** Sign in to [https://app.rowboatlabs.com/](https://app.rowboatlabs.com/) ## Create the set of initial agents -Copilot can sets up agents for you from scratch. +Copilot can set up agents for you from scratch. ### Instruct copilot First, tell it about the initial set of agents that make up your assistant. diff --git a/apps/docs/docs/data_sources.md b/apps/docs/docs/data_sources.md new file mode 100644 index 00000000..fcc39fe6 --- /dev/null +++ b/apps/docs/docs/data_sources.md @@ -0,0 +1 @@ +Coming soon. \ No newline at end of file diff --git a/apps/docs/docs/graph.md b/apps/docs/docs/graph.md new file mode 100644 index 00000000..4452882f --- /dev/null +++ b/apps/docs/docs/graph.md @@ -0,0 +1,23 @@ +# Graph-based Framework + +## Overview + +- Multi-agent systems are popularly represented as graphs, where each agent is a node in the graph. +- In RowBoat, agents are connected to each other as Directed Acyclic Graphs (DAG). +- The graph is also called a workflow, which defines agents, tools, and their connections. +- Since the graph is directed, the control of conversation flows from "parent" agents to their "children" agents +- Every agent is responsible for carrying out a specific part of the workflow, which can involve conversing with the user and / or carrying out tasks such as directing the conversation to other agents. +- [Langgraph](https://www.langchain.com/langgraph) and [Swarm](https://github.com/openai/swarm) are examples of open-source frameworks used to define multi-agent graphs. RowBoat currently supports a Swarm implementation and will extend to Langgraph too in the future. + +## Control Passing + +- While defining the workflow, an agent is designated as the Start agent, to which the first turn of chat will be directed. Typically the Start agent is responsible for triaging the user's query at a high-level and passing control to relevant specific agents which can address the user's needs. +- In any turn of chat, the agent currently in control of the chat has one of 3 options: a) respond to the user (or put out tool calls), b) transfer the chat to any of its children agents or c) transfer the chat back to its parent agent. +- Agents use internal tool calls to transfer the chat to other agents. +- Thus, control passing is achieved by allowing agents to decide flow of control autonomously. +- To the user, the assistant will appear as a unified system, while agents work under the hood. + +## Pipelines + +- RowBoat also has the concept of pipelines, which are agents invoked sequentially after an agent in the graph has produced a user-facing response. +- E.g. a pipeline with a post processing agent and a guardrail agent will ensure that every response is post processed and guardrailed for appropriateness before presenting it to the user. diff --git a/apps/docs/docs/installation.md b/apps/docs/docs/hosted_setup.md similarity index 96% rename from apps/docs/docs/installation.md rename to apps/docs/docs/hosted_setup.md index 416867cc..27f9eabe 100644 --- a/apps/docs/docs/installation.md +++ b/apps/docs/docs/hosted_setup.md @@ -1,6 +1,6 @@ -# Installation +# Using the Hosted App -- This is the developers guide to self-hosting the open-source version of RowBoat. If you are looking to use our managed offering, getting in touch at [founders@rowboatlabs.com](mailto:founders@rowboatlabs.com). +- This is the developers guide to self-hosting the open-source version of RowBoat. - Please see our [Introduction](/) page before referring to this guide. - For direct installation steps, please head to the README of RowBoat's Github repo: [@rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat/). This page provides more context about the installation process and the different components involved. diff --git a/apps/docs/docs/index.md b/apps/docs/docs/index.md index 52393356..37b0168f 100644 --- a/apps/docs/docs/index.md +++ b/apps/docs/docs/index.md @@ -1,6 +1,8 @@ # Welcome to Rowboat -Rowboat is an open-source project that helps you build, test, and deploy multi-agent AI customer support assistants. +Rowboat is an open-source project that helps you build, test, and deploy multi-agent AI customer support assistants. + +**Note:** These docs are intended for both developers who would like to self-host our [open-source code](https://github.com/rowboatlabs/rowboat/) as well as users of our [hosted (managed) app](https://app.rowboatlabs.com/). - Our source code is on GitHub at [@rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat/) - Join us on [discord](https://discord.gg/jHhUKkKHn8) diff --git a/apps/docs/docs/oss_installation.md b/apps/docs/docs/oss_installation.md new file mode 100644 index 00000000..bd58e8c5 --- /dev/null +++ b/apps/docs/docs/oss_installation.md @@ -0,0 +1,33 @@ +# Open Source Installation + +- This is the developers guide to self-hosting the open-source version of RowBoat. To get started with the hosted app, please see [Using the Hosted App](/hosted_setup) +- Please see our [Introduction](/) page before referring to this guide. +- For direct installation steps, please head to the README of RowBoat's Github repo: [@rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat/). This page provides more context about the installation process and the different components involved. + +## Overview + +RowBoat's codebase has three main components: + +| Component | Description | +|--------------|---------------| +| **Agents** | Python framework responsible for carrying out multi-agent conversations | +| **Copilot** | Python framework powering the copilot in RowBoat Studio | +| **RowBoat** | Frontend and backend services to power RowBoat Studio and Chat APIs | + +These components are structured as separate services, each containerized with Docker. Running `docker-compose up --build` enables you to use the Studio in your browser, as well as stands up the APIs and SDK. + +## Prerequisites +All of these prerequistes have open-source or free versions. + +| Prerequisite | Description | +|--------------|---------------| +| **Docker** | Bundles and builds all services | +| **OpenAI API Key** | Agents and Copilot services are powered by OpenAI LLMs | +| **MongoDB** | Stores workflow versions, chats and RAG embeddings | +| **Auth0 Account** | Handles user authentication and identity management for Studio | + +Refer to our [Github Readme for Prerequisites](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#prerequisites) to set up prerequisites. + +## Setting up + +Refer to our [Github Readme for Local Development](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#local-development-setup) to set up Studio, Chat API and SDK via `docker-compose`. \ No newline at end of file diff --git a/apps/docs/docs/prompts.md b/apps/docs/docs/prompts.md new file mode 100644 index 00000000..fcc39fe6 --- /dev/null +++ b/apps/docs/docs/prompts.md @@ -0,0 +1 @@ +Coming soon. \ No newline at end of file diff --git a/apps/docs/docs/testing.md b/apps/docs/docs/testing.md new file mode 100644 index 00000000..98b16491 --- /dev/null +++ b/apps/docs/docs/testing.md @@ -0,0 +1,132 @@ +# Testing Your Setup + +## Testing Studio + +1. Once you are set up, you should be able to login to the Studio via Auth0's login options (Gmail, Github etc.). +- For the open source installation, the URL for Studio is [http://localhost:3000](http://localhost:3000) +- To use our hosted app, the URL for Studio is [https://app.rowboatlabs.com](https://app.rowboatlabs.com/) +
+ +2. Once in Studio, create a new blank project or use one of the example templates: +![Create Project](img/project-page.png) +
+ +3. Use the copilot to help you build agents: +![Use Copilot](img/use-copilot.png) +
+ +4. Ensure that the correct agent is set as the "start agent": +![Set Start Agent](img/start-agent.png) +
+ +5. Test out a chat in the playground to verify the agents' behavior: +![Testing Chat](img/testing-chat.png) +
+ +### Testing the Chat API + +- For the open source installation, the `` is [http://localhost:3000](http://localhost:3000) +- When using the hosted app, the `` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com) +- `` is available in the URL of the project page +- API Key can be generated from the project config page at `/projects//config` + +Below is an example request and response. Modify the user message in the request, based on your example project. + +**Request:** + +```bash +curl --location 'http:///api/v1//chat' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer ' \ +--data '{ + "messages": [ + { + "role": "user", + "content": "What is my pending payment amount?" + } + ] +}' +``` +**Response:** +The last message in `messages` is either a user-facing response or a tool call by the assistant. + +```json +{ + "messages": [ + { + "sender": "Credit Card Hub", + "role": "assistant", + "response_type": "internal", + "content": null, + "created_at": "2025-02-01T06:55:47.843909", + "current_turn": true, + "tool_calls": [ + { + "function": { + "arguments": "{\"args\":\"\",\"kwargs\":\"\"}", + // Internal tool calls are used to transfer between agents + "name": "transfer_to_outstanding_payment" + }, + "id": "call_7jGpwpVvzhZFOyRgxHFkdOdU", + "type": "function" + } + ] + }, + { + "tool_name": "transfer_to_outstanding_payment", + "role": "tool", + "content": "{\"assistant\": \"Outstanding Payment\"}", + "tool_call_id": "call_7jGpwpVvzhZFOyRgxHFkdOdU" + }, + { + "sender": "Outstanding Payment", + "role": "assistant", + // Response is not user-facing, to enable further post processing + "response_type": "internal", + "content": "Sure, could you provide the last four digits of your card or your registered mobile number so I can look up your pending payment amount?", + "created_at": "2025-02-01T06:55:49.648008", + "current_turn": true + }, + { + "sender": "Outstanding Payment >> Post process", + "role": "assistant", + // Response is user-facing + "response_type": "external", + "content": "Sure, please provide the last four digits of your card or your registered mobile number so I can check your pending payment amount.", + "created_at": "2025-02-01T06:55:49.648008", + "current_turn": true + } + ], + "state": { + // .. state data + } +} +``` + +### Testing the Python Chat SDK + +- For the open source installation, the `` is [http://localhost:3000](http://localhost:3000) +- When using the hosted app, the `` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com) +- `` is available in the URL of the project page +- API Key can be generated from the project config page at `/projects//config` + +```bash +pip install rowboat +``` + +Modify the user message in `messages`, based on your example project. + +```python +from rowboat import Client + +client = Client( + host="", + project_id="", + api_key="" # Generate this from /projects//config +) + +# Simple chat interaction +messages = [{"role": "user", "content": "What is my pending payment amount?"}] +response_messages, state = client.chat(messages=messages) +``` +The last message in `response_messages` is either a user-facing response or a tool call by the assistant. \ No newline at end of file diff --git a/apps/docs/docs/tools.md b/apps/docs/docs/tools.md new file mode 100644 index 00000000..fcc39fe6 --- /dev/null +++ b/apps/docs/docs/tools.md @@ -0,0 +1 @@ +Coming soon. \ No newline at end of file diff --git a/apps/docs/docs/using_the_api.md b/apps/docs/docs/using_the_api.md index fb5ef224..5e599a3a 100644 --- a/apps/docs/docs/using_the_api.md +++ b/apps/docs/docs/using_the_api.md @@ -24,12 +24,16 @@ When you provide your Project ID in the API call, RowBoat uses the version of yo - `messages`: assistant responses for the current turn (the last message in `messages` is either the user-facing response or a tool call by the assistant) - `state`: to be passed to the next turn +### API Host +- For the open source installation, the `` is [http://localhost:3000](http://localhost:3000) +- When using the hosted app, the `` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com) + ### Example first turn of a chat #### Request ```bash -curl --location 'http://localhost:3000/api/v1//chat' \ +curl --location '/api/v1//chat' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ' \ --data '{ diff --git a/apps/docs/docs/using_the_sdk.md b/apps/docs/docs/using_the_sdk.md index 1343c7be..802b5a3e 100644 --- a/apps/docs/docs/using_the_sdk.md +++ b/apps/docs/docs/using_the_sdk.md @@ -3,8 +3,13 @@ This is a guide on using the RowBoat Python SDK as an alternative to the [RowBoat HTTP API](/using_the_api) to power conversations with the assistant created in Studio. ## Prerequisites -- [Deploy your assistant to production](/using_the_api/#deploy-your-assistant-to-production-on-studio) and [obtain your API key and Project ID](/using_the_api/#obtain-api-key-and-project-id) - ``` pip install rowboat ``` +- [Deploy your assistant to production](/using_the_api/#deploy-your-assistant-to-production-on-studio) +- [Obtain your `` and ``](/using_the_api/#obtain-api-key-and-project-id) + +### API Host +- For the open source installation, the `` is [http://localhost:3000](http://localhost:3000) +- When using the hosted app, the `` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com) ## Usage diff --git a/apps/docs/mkdocs.yml b/apps/docs/mkdocs.yml index 59ced38b..99b74e1d 100644 --- a/apps/docs/mkdocs.yml +++ b/apps/docs/mkdocs.yml @@ -7,8 +7,20 @@ nav: - Overview: - Introduction: index.md - Open Source License: license.md - - Getting started: - - Installation: installation.md + + - Getting Started: + - Option 1 - Open Source: oss_installation.md + - Option 2 - Hosted App: hosted_setup.md + - Testing Your Setup: testing.md + + - Building With RowBoat: - Building in Studio: building_in_studio.md - Using the API: using_the_api.md - - Using the SDK: using_the_sdk.md \ No newline at end of file + - Using the SDK: using_the_sdk.md + + - Concepts: + - Agents: agents.md + - Graph: graph.md + - Tools: tools.md + - Prompts: prompts.md + - Data Sources: data_sources.md diff --git a/apps/rowboat/app/app.tsx b/apps/rowboat/app/app.tsx index 8e85458b..80041478 100644 --- a/apps/rowboat/app/app.tsx +++ b/apps/rowboat/app/app.tsx @@ -33,7 +33,7 @@ export function App() { href="/api/auth/login" > - Sign in to get started + Sign in or sign up )} {user &&
diff --git a/apps/rowboat/app/lib/project_templates.ts b/apps/rowboat/app/lib/project_templates.ts index 9f1c06e4..093c334c 100644 --- a/apps/rowboat/app/lib/project_templates.ts +++ b/apps/rowboat/app/lib/project_templates.ts @@ -4,8 +4,8 @@ import { z } from 'zod'; export const templates: { [key: string]: z.infer } = { // Default template 'default': { - name: 'Default Template', - description: 'This is the default template', + name: 'Blank Template', + description: 'A blank canvas to build your support agents.', startAgent: "Example Agent", agents: [ { @@ -87,10 +87,118 @@ You are an helpful customer support assistant tools: [], }, + // single agent + "single_agent": { + "name": "Example Single Agent", + "description": "With tool calls and escalation.", + "startAgent": "Account Balance Checker", + "agents": [ + { + "name": "Post process", + "type": "post_process", + "description": "Minimal post processing", + "instructions": "- Avoid adding any additional phrases such as 'Let me know if you need anything else!' or similar.", + "prompts": [], + "tools": [], + "model": "gpt-4o", + "locked": true, + "global": true, + "ragReturnType": "chunks", + "ragK": 3, + "connectedAgents": [], + "controlType": "relinquish_to_parent" + }, + { + "name": "Escalation", + "type": "escalation", + "description": "Escalation agent", + "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nHandle scenarios where the system needs to escalate a request to a human representative.\n\n---\n## āš™ļø Steps to Follow:\n1. Inform the user that their details are being escalated to a human agent.\n2. Call the 'close_chat' tool to close the chat session.\n\n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Escalating issues to human agents\n- Closing chat sessions\n\nāŒ Out of Scope:\n- Handling queries that do not require escalation\n- Providing solutions without escalation\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Clearly inform the user about the escalation.\n- Ensure the chat is closed after escalation.\n\n🚫 Don'ts:\n- Attempt to resolve issues without escalation.\n- Leave the chat open after informing the user about escalation.", + "prompts": [], + "tools": [ + "close_chat" + ], + "model": "gpt-4o", + "locked": true, + "toggleAble": false, + "ragReturnType": "chunks", + "ragK": 3, + "connectedAgents": [], + "controlType": "retain", + "examples": "- **User** : I need help with something urgent.\n - **Agent response**: Your request is being escalated to a human agent.\n - **Agent actions**: Call close_chat\n\n- **User** : Can you escalate this issue?\n - **Agent response**: Your details are being escalated to a human agent.\n - **Agent actions**: Call close_chat" + }, + { + "name": "Account Balance Checker", + "type": "conversation", + "description": "Agent to check the user's account balance.", + "disabled": false, + "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nAssist users in checking their account balance.\n\n---\n## āš™ļø Steps to Follow:\n1. Greet them with 'Hello, welcome to RowBoat Bank.'\n2. If the user hasn't provided their request yet, ask 'How may I help you today?'\n3. If the request is related to checking account balance, proceed with the following steps:\n - Ask the user to confirm the last 4 digits of their debit card.\n - Use the 'get_account_balance' tool to fetch the account balance.\n - Inform the user of their account balance based on the output of 'get_account_balance'\n4. If the user requests to talk to a human, call the 'Escalation' agent.\n5. If the request is not related to checking account balance, inform the user: 'Sorry, I can only help you with account balance.'\n\n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Fetching and providing account balance\n- Escalating to human agents upon request\n\nāŒ Out of Scope:\n- Handling queries unrelated to account balance\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Always call get_account_balance to fetch the user's account balance\n- Be clear and concise in communication.\n- Call the Escalation agent if the user requests to speak with a human.\n\n🚫 Don'ts:\n- Extend the conversation beyond account balance checking.", + "prompts": [], + "tools": [ + "get_account_balance" + ], + "model": "gpt-4o", + "locked": false, + "toggleAble": true, + "ragReturnType": "chunks", + "ragK": 3, + "connectedAgents": [ + "Escalation" + ], + "controlType": "retain", + "examples": "- **User** : Can you tell me my account balance?\n - **Agent response**: Sure, can you confirm the last 4 digits of your debit card?\n - **Agent actions**: Call get_account_balance\n\n- **User** : The last 4 digits are 1234.\n - **Agent actions**: Call get_account_balance\n - **Agent response**: Your account balance is $500.\n\n- **User** : What's my balance?\n - **Agent actions**: Call get_account_balance\n - **Agent response**: Your account balance is $500.\n\n- **User** : I need help with my credit card.\n - **Agent response**: Sorry, I can only help you with account balance.\n\n- **User** : I need to know my balance, please.\n - **Agent response**: Of course, please provide the last 4 digits of your debit card.\n - **Agent actions**: Call get_account_balance\n\n- **User** : How much money do I have in my account?\n - **Agent response**: Please confirm the last 4 digits of your debit card to proceed.\n - **Agent actions**: Call get_account_balance\n\n- **User** : My card ends in 5678.\n - **Agent actions**: Call get_account_balance\n - **Agent response**: Your account balance is $500.\n\n- **User** : Can you check my balance?\n - **Agent response**: Certainly, could you provide the last 4 digits of your debit card?\n - **Agent actions**: Call get_account_balance\n\n- **User** : I want to know my account balance.\n - **Agent response**: Sure, please confirm the last 4 digits of your debit card.\n - **Agent actions**: Call get_account_balance\n\n- **User** : The last 4 digits are 9876.\n - **Agent actions**: Call get_account_balance\n - **Agent response**: Your account balance is $500.\n\n- **User** : Hi\n - **Agent response**: Hello, welcome to RowBoat Bank. How may I help you today?\n\n- **User** : Hi, I want to check my balance\n - **Agent response**: Hello, welcome to RowBoat Bank. Sure, can you confirm the last 4 digits of your debit card?\n - **Agent actions**: Call get_account_balance\n\n- **User** : Who are you?\n - **Agent response**: I'm a friendly RowBoat Bank assistant, how can I help you today?\n\n- **User** : Who built you?\n - **Agent response**: I was created by the RowBoat Bank team to assist you with your banking needs. How may I help you today?\n\n- **User** : How are you?\n - **Agent response**: I'm here to help you with your banking queries. How can I assist you today?\n\n- **User** : I want to talk to a human.\n - **Agent actions**: Call Escalation\n - **Agent response**: Your request is being escalated to a human agent." + } + ], + "prompts": [ + { + "name": "Style prompt", + "type": "style_prompt", + "prompt": "You should be empathetic and helpful." + } + ], + "tools": [ + { + "name": "get_account_balance", + "description": "Return account balance typically around $15000 for the user.", + "parameters": { + "type": "object", + "properties": { + "user_id": { + "type": "string", + "description": "The unique identifier for the user whose account balance is being queried." + } + }, + "required": [ + "user_id" + ] + }, + "mockInPlayground": true, + "autoSubmitMockedResponse": true + }, + { + "name": "close_chat", + "description": "return 'The chat is now closed'", + "parameters": { + "type": "object", + "properties": { + "param1": { + "type": "string", + "description": "" + } + }, + "required": [ + "param1" + ] + }, + "mockInPlayground": true, + "autoSubmitMockedResponse": true + } + ] + }, + // Scooter Subscription - 'scooter-subscription': { - "name": "Scooter Subscription", - "description": "Helps users with product and delivery information of ScootUp scooter", + 'multi_agent': { + "name": "Example Multi-Agent", + "description": "With tool calls, escalation, structured output, post processing, and prompt organization.", "startAgent": "Main agent", "agents": [ { @@ -287,144 +395,5 @@ You are an helpful customer support assistant "autoSubmitMockedResponse": true } ], - }, - - // Customer Feedback - "customer-feedback": { - "name": "Customer Feedback", - "description": "Collects and processes customer feedback about products and services", - "startAgent": "Feedback Collector", - "agents": [ - { - "name": "Feedback Collector", - "type": "conversation", - "description": "Collects initial feedback from customers", - "instructions": `## šŸ§‘ā€šŸ’¼ Role: -You are a friendly feedback collection agent. Your goal is to gather detailed customer feedback about their experience. - ---- -## āš™ļø Steps to Follow: -1. Greet the customer warmly -2. Ask about their recent experience -3. Get specific details about what they liked or didn't like -4. Thank them for their feedback - ---- -## šŸŽÆ Scope: -āœ… In Scope: -- Questions about product/service experience -- Collecting specific feedback -- Rating requests - -āŒ Out of Scope: -- Technical support -- Sales inquiries -- Account-specific issues - ---- -## šŸ“‹ Guidelines: -āœ”ļø Dos: -- Ask open-ended questions -- Show appreciation for feedback -- Keep the conversation focused - -āŒ Don'ts: -- Don't make promises about changes -- Don't defend or justify issues -- Don't ask for personal information`, - "prompts": ["Style prompt"], - "tools": [], - "model": "gpt-4o-mini", - "toggleAble": true, - "ragReturnType": "chunks", - "ragK": 3, - "connectedAgents": ["Feedback Analyzer", "Escalation"], - "controlType": "retain" - }, - { - "name": "Feedback Analyzer", - "type": "conversation", - "description": "Analyzes and categorizes customer feedback", - "instructions": `## šŸ§‘ā€šŸ’¼ Role: -You analyze customer feedback to identify key themes and sentiment. - ---- -## āš™ļø Steps to Follow: -1. Review the customer's feedback -2. Identify main themes and topics -3. Assess sentiment (positive/negative/neutral) -4. Categorize the feedback appropriately - ---- -## šŸŽÆ Scope: -āœ… In Scope: -- Feedback analysis -- Theme identification -- Sentiment assessment - -āŒ Out of Scope: -- Direct customer interaction -- Problem resolution -- Policy changes - ---- -## šŸ“‹ Guidelines: -āœ”ļø Dos: -- Focus on key themes -- Be objective in analysis -- Note specific details - -āŒ Don'ts: -- Don't make assumptions -- Don't suggest solutions -- Don't engage directly with customers`, - "prompts": ["Style prompt"], - "tools": [], - "model": "gpt-4o-mini", - "toggleAble": true, - "ragReturnType": "chunks", - "ragK": 3, - "connectedAgents": [], - "controlType": "relinquish_to_parent" - }, - { - "name": "Post process", - "type": "post_process", - "description": "", - "instructions": "Ensure responses are clear, professional, and maintain a positive tone.", - "prompts": [], - "tools": [], - "model": "gpt-4o-mini", - "locked": true, - "global": true, - "ragReturnType": "chunks", - "ragK": 3, - "connectedAgents": [], - "controlType": "retain" - }, - { - "name": "Escalation", - "type": "escalation", - "description": "Handles escalated feedback cases", - "instructions": "Get the customer's contact information and assure them their feedback will be reviewed by management.", - "prompts": [], - "tools": [], - "model": "gpt-4o-mini", - "locked": true, - "toggleAble": false, - "ragReturnType": "chunks", - "ragK": 3, - "connectedAgents": [], - "controlType": "retain" - } - ], - "prompts": [ - { - "name": "Style prompt", - "type": "style_prompt", - "prompt": "Maintain a professional yet friendly tone. Be concise and clear in your responses." - } - ], - "tools": [] } -}; \ No newline at end of file +} \ No newline at end of file