Implement basic agent and toolset functionality

This commit is contained in:
Shivering Ocelot committed 2025-05-21 20:18:01 -05:00
1 parent 7b3326524e
commit bd5c4e002f
6 files changed
+377 -40

No files matched your search

+60
View File
@@ -23,3 +23,63 @@ MVP-3C has multiple chats, users and agents can create chats, modify chat titles
MVP-3P is permissions. Modifying chats and agents both need a permission system.
**Current Status**: Frontend and backend connect via websocket. Backend has usable chats and agents with direct prompts and chat messaging. Frontend features user login, manual and automatic chat selection, and live connection with backend chat.
### Copilot vs Companion
There are a few distinct use cases for AI agents of interest for this app:
- Companionship: empathetic, loyal and supportive agents acting as a presence in the users life for an extended period
- Role Playing: adopt a particular character or persona and remains consistent with it, with personalities independent of the user
- Copilot: effective and capable agents that assist the user with work or objectives
- Autonomous: beyond being effective and capable, these agents can also proactively pursue their goals with whatever means available to them
Companionship and Role Playing is mainly conversational and coherence skills, the MVP laid above aims to support these usecases mainly.
Copilot requires capabilities (plugins and remote tools), which are not designed anywhere in this document.
Autos, beyond having capabilities, must also be intelligent enough to manage themselves and proactively pursue broad goals.
Although conversational uses are more aligned with the current roadmap, copilots are actually more useful in my real life, and since the whole industry is converging in Autos, it would be a waste to not have any support for them in Horde. It follows that capable agents are quite important in the roadmap goals.
Next priority is to implement capabilities for agents, overriding MVP-2.
### Capabilities
Also known as "tools" in the industry. They are implemented in python classes, they automatically generate signatures for the agent to
### Intro
AgentBase:
fields
- plugin prelude
- plugin system prompt
methods
- add plugin
- get plugin context
- parse actions(string): action[]
- execute actions(action[]): string output
- create kind from data(kind: string, data)
constructor(data)
**Syntax**:
V1:
As an autonomous agent, you have access to various tools that you can use by including ToolSyntax segments in your responses.
== ToolSyntax ==
ToolSyntax defines a format to specify a list of instructions to execute.
A ToolSyntax segment starts with the special string "<<ToolSyntax>>" anywhere in a line, and can either end with a matching "<</ToolSyntax>>", or continue until the end of the text.
Each line in the segment defines an instruction to execute a tool, with a JSON object as argument. For example: `tool_name{"arg_1":"a string","arg_2":[1,2,{"an object":true}]}`.
Following is a list of all the available toolsets and tools, with a JsonSchema argument definition.
V2:
As an autonomous agent, you have augmented capabilities via tools and commands that you can use by including "!!command" lines in your responses.
== Commands ==
You can insert commands in your responses to interact with the system and execute actions as needed.
Each command must be in it's own separate line, and it's made of these parts:
- '!!' is the first character sequence of the line and marks it as a command line
- optional `query` modifier
- full command name
- json argument
For example: `!!query namespace.command_name {"arg1":"some data","arg2":[1,2,false]}`
If you add the query modifier, you will see the output of the commands in a continuation prompt, otherwise it will only be shown to the user.