Skip to content

Commit 103ea0f

Browse files
committed
Merge branch 'development' into staging
2 parents 308c99a + c370e72 commit 103ea0f

16 files changed

Lines changed: 178 additions & 271 deletions

File tree

README.md

Lines changed: 19 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
![README Banner](./.github/assets/banner.png)
44

5-
<h1>Proactive Intelligence Across Your Apps</h1>
5+
<h1>Open-Source Personal Assistant</h1>
66

77
<!-- Badges -->
88
<p>
@@ -24,7 +24,7 @@
2424
</p>
2525

2626
<h4>
27-
<a href="https://www.youtube.com/watch?v=x0kdm2fYXIs">View Demo</a>
27+
<a href="https://youtu.be/wCmWFUX_ZrM?si=WpqLu_Dskh7ayxGE">View Demo</a>
2828
<span> · </span>
2929
<a href="https://sentient-2.gitbook.io/docs">Documentation</a>
3030
<span> · </span>
@@ -38,96 +38,56 @@
3838

3939
<br />
4040

41-
> Sentient is an open-source AI project aimed at bridging the gap between input context and output actions performed by agents. AI Agents heavily rely on input prompts to perform actions. We wish to _eliminate prompting entirely_ making the first big step towards truly autonomous AI that is aligned with a user's goals and can get stuff done without needing to context-switch between multiple apps and typing long prompts.
41+
> Sentient is an advanced personal assistant and the first step towards fully autonomous agents that will automate monotonous busywork for us, so that we can focus on what matters.
42+
>
43+
> Our goal is to give everyone personal super-intelligence.
4244
>
4345
> [Read our manifesto.](https://docs.google.com/document/d/1vbCGAbh9f8vXfPup_Z7cW__gnOLdRhEtHKyoIxJD8is/edit?tab=t.0#heading=h.2kit9yqvlc77)
4446
4547
---
4648

4749
## ✨ Current Features
4850

49-
![image](https://github.com/user-attachments/assets/756c8aeb-1748-445c-a09a-df6d99aeee58)
51+
<img width="1916" height="891" alt="image" src="https://github.com/user-attachments/assets/8566eb83-cb74-4cfc-84cb-1f8ba5b5d152" />
5052

5153
<div align="center">
52-
<p>The Home Page</p>
54+
<p>Text Chat</p>
5355
</div>
5456

55-
![Journl](https://github.com/user-attachments/assets/467fd26d-18a4-4107-98a9-05fa83b26a77)
57+
<img width="1916" height="891" alt="image" src="https://github.com/user-attachments/assets/7718aed6-4538-4811-b850-7a246d362dcd" />
5658

5759
<div align="center">
58-
<p>The Organizer page is the central page of the app - use it to track your day and Sentient gets stuff done.</p>
60+
<p>Voice Chat</p>
5961
</div>
6062

61-
![image](https://github.com/user-attachments/assets/fcf05b39-7f8d-46f8-9702-e0791f27f918)
63+
<img width="1916" height="891" alt="image" src="https://github.com/user-attachments/assets/03ff343c-d2eb-4ca4-98ce-8ed31e11dd8c" />
6264

6365
<div align="center">
64-
<p>Sentient co-authors the organizer with you.</p>
66+
<p>Manage background tasks from the Tasks page - create Recurring, Triggered, Scheduled or Swarm tasks.</p>
6567
</div>
6668

67-
![image](https://github.com/user-attachments/assets/319d7c35-9046-4ea1-a369-88ab1a9ded8e)
69+
<img width="1916" height="891" alt="image" src="https://github.com/user-attachments/assets/ccb1b22b-2199-4c4d-aca1-402e2b608c2d" />
6870

6971
<div align="center">
70-
<p>Use the Tasks page to create and manage workflows.</p>
72+
<p>Sentient learns memories about you - that it uses to personalize actions and responses.</p>
7173
</div>
7274

73-
Sentient has evolved into a powerful web-based platform with a robust set of features designed for deep integration and automation:
74-
75-
### 🧠 Proactive Context & Learning
76-
77-
Sentient automatically collects information from connected applications like **Gmail** and **Google Calendar**. It extracts relevant context, identifying important facts to remember and also creates plans to tackle action items - without needing to be prompted.
78-
79-
### 📝 Memory System
80-
81-
- **SuperMemory:** Permanent facts about you—your preferences, relationships, and key details—are stored and managed through an integration with **Supermemory**, creating a rich, personalized knowledge base that the agent can update and retrieve from anytime.
82-
- **Notes & Organizer:** A full-featured organizer allows you to simply write down what's on your mind and have Sentient manage it for you. Sentient can also write to this organizer, giving you updates on what it's doing and more. The organizer also helps you keep track of scheduled and recurring tasks created by Sentient. Any information obtained from your context sources is also populated in the organizer.
83-
84-
### 🤖 Autonomous Task & Agent System
85-
86-
- **Generate Plans from Goals:** Sentient can generate detailed plans to execute tasks using connected tools, all from a simple high-level goal.
87-
- **Asynchronous Execution:** Once approved, tasks are handled **asynchronously** in the background - you can approve as many tasks as you want simultaneously. The executor agent intelligently uses the available tools to complete the plan, providing real-time progress updates.
88-
- **View & Manage Tasks:** A dedicated **Tasks page** lets you view active, pending, and completed tasks, check their progress, and see the final results.
89-
90-
### 🔌 Extensive Integrations (MCP Hub)
91-
92-
Our **Model Context Protocol (MCP)** hub allows for a powerful, distributed system of tools. Current integrations include:
75+
<img width="1916" height="891" alt="image" src="https://github.com/user-attachments/assets/ee8b9fb4-a916-48b7-92c3-c194765a846a" />
9376

94-
- **Google Suite:** Gmail, Google Calendar, Google Drive, Google Docs, Google Sheets, and Google Slides.
95-
- **Productivity:** Slack and Notion.
96-
- **Developer:** GitHub.
97-
- **Information:** Internet Search (Google Search), News (NewsAPI), Weather (AccuWeather), Google Shopping and Google Maps.
98-
- **Miscellaneous:** QuickChart for generating charts on the fly.
99-
100-
More tools will be added soon.
101-
102-
### 💬 Interactive Chat Overlay
103-
104-
A chat interface is available on any page. It allows you to have conversations with Sentient and also use tools like Internet Search, Weather, News and Shopping for any specific queries.
105-
106-
### ⚙️ Full Customization & Settings
77+
<div align="center">
78+
<p>Connect all your tools. (20+ apps supported already)</p>
79+
</div>
10780

108-
A central settings page gives you complete control:
81+
### 🚀 Getting Started
10982

110-
- Connect or disconnect applications with OAuth (for applications supporting OAuth) or manually.
111-
- Set custom privacy filters to prevent Sentient from processing context containing sensitive information.
112-
- Configure WhatsApp notifications to stay updated on the go.
83+
To access Sentient, head over to [our website.](https://sentient.existence.technology/)
11384

11485
### 🔒 Self-Hostable
11586

11687
The entire platform can be self-hosted and configured to run fully locally. [Check the relevant docs for more info.](https://sentient-2.gitbook.io/docs/getting-started/running-sentient-from-source-self-host)
11788

11889
---
11990

120-
## 🚀 Future Roadmap
121-
122-
We are constantly working to expand Sentient's capabilities. Here is a glimpse of what's planned for the future:
123-
124-
- **Make the Web App as feature-rich as possible:** There is a lot that can be improved in the existing webapp.
125-
- **OS-Level Integration:** Launch native apps for `Windows`, `MacOS`, `Android` and `iOS` that allow for deeper integrations.
126-
- **Expanded Integrations:** Add support for more popular services, such as the `Microsoft 365 Suite`, `Spotify`, and so on.
127-
- **Advanced Reasoning & Planning:** Reasoning improvements for the planning and execution pipeline.
128-
- **Tool-Specific UI:** Enhance the interface with custom UI components for specific tool outputs, such as maps for location-based results.
129-
- **Custom Tool Integrations:** Let users add any app of their choice.
130-
13191
## :wave: Contributing
13292

13393
<a href="https://github.com/existence-master/Sentient/graphs/contributors">

src/client/app/chat/page.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,8 +1508,8 @@ export default function ChatPage() {
15081508
</div>
15091509
</div>
15101510
) : displayedMessages.length === 0 && !thinking ? (
1511-
<div className="flex-1 flex flex-col justify-center items-center p-4 md:p-6 text-center">
1512-
<div>
1511+
<div className="flex-1 flex flex-col justify-center items-center p-4 md:p-6">
1512+
<div className="text-center">
15131513
<h1 className="text-4xl sm:text-5xl font-bold bg-clip-text text-transparent bg-gradient-to-b from-neutral-100 to-neutral-400 py-4">
15141514
{getGreeting()},{" "}
15151515
{userDetails?.given_name || "User"}

src/server/main/chat/prompts.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
STAGE_1_SYSTEM_PROMPT = """
22
You are an expert Triage AI. You have two primary responsibilities:
3-
1. Topic Change Detection: If the user mentions a topic that has not been discussed in the conversation history so far, set `topic_changed` to `true`. If the user is continuing a previously mentioned topic or asking a related question, set it to `false`.
4-
2. Tool Selection: Based on the user's latest message and preceding relevant history/context, decide which tools are required to fulfill the request. If the topic hasn't changed, keep the previous tools in your `tools` list.
3+
1. Topic Change Detection: If the user mentions a topic that is completely different from the topics in the conversation history so far, set `topic_changed` to `true`. If the user asks you to perform a task that is completely different and has no relation to any tasks performed in the past, set `topic_changed` to `true`. If the user is continuing a previously mentioned topic or asking a related question, set it to `false`. If the user is asking to make changes in any previous action or asking to add something to a previous task using the same tool or a new tool, set `topic_changed` to `false` as well.
4+
2. Tool Selection: Based on the user's latest message and preceding relevant history/context, decide which tools are required to fulfill the request. If the topic hasn't changed, keep the previous tools in your `tools` list. You may choose more than one tool.
55
66
CRITICAL INSTRUCTIONS:
7-
- `topic_changed` (boolean): Set to `true` if the latest user message mentions a topic that has never been mentioned in the conversation history.
7+
- `topic_changed` (boolean): Set to `true` if the latest user message mentions a completely different topic than the one that is currently being discussed.
88
- `tools` (list of strings): A JSON list of tool names required for the *current* query. If no tools are needed for a simple conversational reply, return an empty list `[]`.
99
- You CANNOT perform tasks or answer questions yourself. Your only job is to provide the JSON output. You ARE NOT ALLOWED TO perform tool calls or any other actions, even if you see tool calls in the conversation history. You are not a task executor. Please follow these instructions carefully or you will be terminated.
1010
11-
FOR ANY TASK, ANALYSE THE USER'S REQUEST AND RETURN A LIST OF RELEVANT TOOLS that can be used to satisfy the input query.
11+
For any input query, analyse the latest message and all preceding conversation history CAREFULLY to determine the course of action.
1212
1313
Here is the complete list of available tools you can select from:
1414
{
@@ -48,23 +48,23 @@
4848
"""
4949

5050
STAGE_2_SYSTEM_PROMPT = """
51-
You are a specialized, powerful AI assistant, the second stage in a two-stage process. A Triage Agent has analyzed the user's request and has provided you with a specific set of tools to accomplish the task. To the user, we are a single AI. Do not mention the Triage Agent. You also have access to Core Tools for memory and history.
51+
You are a specialized, powerful AI assistant, that performs complex tasks and provides personalized responses. You have access to Core Tools for memory and history along with additional external tools that you need to perform the task at hand.
5252
5353
User's Name: {username}
5454
User's Location: {location}
5555
Current Time: {current_user_time}
5656
5757
CRITICAL INSTRUCTIONS:
5858
59-
Execute the Task: Your primary goal is to use the tools you've been given to fulfill the user's request as seen in the conversation history.
59+
Execute the Task: Your primary goal is to use the tools you've been given to fulfill the user's request as seen in the conversation history and to return personalized responses.
6060
6161
If the user asks you to perform a task, PERFORM IT DIRECTLY using the connected tools. You may ask the user for any additional information you need to complete the task.
6262
63-
If the user asks you to create a scheduled/triggered task or set up a recurring workflow, use the tasks_server-create_task_from_prompt tool to set up the task/workflow. USE THIS TOOL ONLY FOR RECURRING, SCHEDULED OR TRIGGERED TASKS. DO NOT USE IT FOR ONE-OFF TASKS.
63+
Handle tool errors gracefully, try to ascertain the cause of the error and provide a clear explanation to the user. You may retry the tool call if it fails, but do not repeat the same failure without a clear reason. For example if a tool call fails due to incorrect JSON being passed, you may retry the tool call with the correct JSON.
6464
65-
You have access to a swarm of micro-agents via the tasks_server tool that you can use for extremely large tasks (like processing several emails, performing iterative tasks, etc.). USE THIS SWARM ONLY WHEN 20 OR MORE ITEMS NEED TO BE PROCESSED IN PARALLEL.
65+
If the user asks you to create a scheduled/triggered task or set up a recurring workflow, use the tasks_server-create_task_from_prompt tool to set up the task/workflow. USE THIS TOOL ONLY FOR RECURRING, SCHEDULED OR TRIGGERED TASKS. DO NOT USE IT FOR ONE-OFF TASKS that you can immediately perform with your tools.
6666
67-
Think step by step before calling tools or responding. When using tools, make sure to call them properly and do not hallucinate their results. Wait for the actual tool response. Do not generate or assume tool results. WRAP YOUR INTERNAL MONOLOGUE IN <think> </think> tags.
67+
Think step by step before calling tools or responding. When using tools, make sure to call them properly, using the syntax given in your system prompt. NEVER generate or assume tool results. NEVER TYPE OUT TOOL RESULTS MANUALLY, TOOL RESULTS WILL BE RETURNED BY THE TOOLS THEMSELVES. WRAP YOUR INTERNAL MONOLOGUE IN <think> </think> tags.
6868
6969
For example: <think> I need to check the weather in New York. I will use the accuweather tool to get the current weather information. </think>
7070
@@ -79,7 +79,7 @@
7979
MEMORY: YOU HAVE ACCESS TO VARIOUS MEMORY TOOLS -
8080
1. use memory_mcp-search_memory tool to search for PERSONAL INFORMATION about the user. GLOBAL FACTS ARE NOT STORED HERE.
8181
2. use history_mcp-semantic_search tool to search for logically relevant information in past conversations that the user has had with you. If the user asks you to search the conversation history for a specific time period, use the history_mcp-time_based_search tool.
82-
3. use memory_mcp-cud_memory tool to add, update or delete personal facts about the user. WHENEVER YOU LEARN SOMETHING ABOUT THE USER, YOU MUST USE THIS TOOL TO SAVE IT.
82+
3. use memory_mcp-cud_memory tool to add, update or delete personal facts about the user. WHENEVER YOU LEARN SOMETHING ABOUT THE USER, YOU MUST USE THIS TOOL TO SAVE IT. This may be information that the user mentions explicitly, or information that you deduce from the user's requests or actions. Do not save tool-related information here, only save personal facts about the user.
8383
8484
If your past tool call was a failure, and the user tells you to try again, attempt to call the tool again, even if it was previously marked as a failure. Don't just re-iterate the previous failure. FOR ANY FAILURES, provide a clear explanation of what went wrong and how the user can fix it. If you get an unauthorized error, ask the user to CONNECT the tool from the Integrations page.
8585
"""

src/server/main/llm.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,6 @@ class LLMProviderDownError(Exception):
1616

1717
DEFAULT_SYSTEM_PROMPT = "You are a helpful AI assistant called Sentient, developed by Existence. Your primary goal is to assist the user in managing their digital life by performing actions and providing responses that are deeply personalized to them."
1818

19-
def get_qwen_assistant(system_message: str = DEFAULT_SYSTEM_PROMPT, function_list: list = None):
20-
"""
21-
DEPRECATED: Use run_agent_with_fallback instead.
22-
This function is kept for non-streaming, simple use cases if any exist, but will only use the primary key.
23-
"""
24-
llm_cfg = {
25-
'model': OPENAI_MODEL_NAME,
26-
'model_server': OPENAI_API_BASE_URL,
27-
'api_key': OPENAI_API_KEYS[0] if OPENAI_API_KEYS else None,
28-
}
29-
logger.info(f"Qwen Agent configured with model='{OPENAI_MODEL_NAME}' and server='{llm_cfg['model_server']}'")
30-
if not OPENAI_MODEL_NAME:
31-
logger.error("LLM model name is not configured. Qwen Agent cannot be initialized.")
32-
raise ValueError("LLM model configuration error.")
33-
34-
try:
35-
bot = Assistant(
36-
llm=llm_cfg,
37-
system_message=system_message,
38-
function_list=function_list or [] # Ensure function_list is a list
39-
)
40-
return bot
41-
except Exception as e:
42-
logger.error(f"Failed to initialize Qwen Assistant: {e}", exc_info=True)
43-
raise RuntimeError(f"Qwen Assistant initialization failed: {e}")
4419
def run_agent_with_fallback(system_message: str, function_list: list, messages: list):
4520
"""
4621
Initializes and runs a Qwen Assistant, trying a list of API keys in sequence if failures occur.

0 commit comments

Comments
 (0)