diff --git a/architecture/agents.md b/architecture/agents.md index 5f17dd37d3..625d4ccf59 100644 --- a/architecture/agents.md +++ b/architecture/agents.md @@ -25,6 +25,8 @@ Preferably all in a single place. class BaseAgent: def agent_primitives(self) -> list[BaseAgent]: # Returns a list of Agents that are utilized by this agent to generate inputs + # We use agent primitives here instead of subagents because these are going to be part + # of the message graph, not a subagent tool call. raise NotImplementedError def tools(self) -> list[BaseTool]: @@ -37,7 +39,7 @@ class BaseAgent: tools = self.tools() for agent in self.agent_primitives(): tools.extend(agent.tools()) - tools = set(tools) + tools = remove_duplicates(tools) tools = initialize_tools(tools, config) return self(llm, tools, config, *args, **kwargs) diff --git a/architecture/message_graph.md b/architecture/message_graph.md index d81b054d4e..251a3a416a 100644 --- a/architecture/message_graph.md +++ b/architecture/message_graph.md @@ -65,6 +65,7 @@ and how this ends up parsing into on policy training data, if requested. Edges are the connections between nodes, and there are two types we are concerned with: - **Sequential edges**: These represent the flow of conversation, connecting messages in the order they were sent. For example, a user message followed by an assistant response. - **Parallel edges**: These represent versioning, e.g. edit history, context squishing, etc. +We, however, are only concerned about parallel edges when we break the prefix, and ignore any other parallel edges. ## So what does this look like in practice?