Source code for pantheon.team.sequential
from pantheon.agent import Agent, AgentInput
from .base import Team
[docs]
class SequentialTeam(Team):
"""Team that run agents in sequential order."""
[docs]
def __init__(
self,
agents: list[Agent],
connect_prompt: str | list[str] = "Next:",
):
super().__init__(agents)
self.order = list(self.agents.keys())
self.connect_prompt = connect_prompt
[docs]
async def run(
self,
msg: AgentInput,
connect_prompt: str | list[str] | None = None,
agent_kwargs: dict = {},
**final_kwargs,
):
first = self.agents[self.order[0]]
history = first.input_to_openai_messages(msg, False)
for i, name in enumerate(self.order):
kwargs = agent_kwargs.get(name, {})
if i == len(self.order) - 1:
kwargs.update(final_kwargs)
resp = await self.agents[name].run(history, **kwargs)
history.extend(resp.details.messages)
# Inject the connect prompt between agents
if i < len(self.order) - 1:
c_prompt = connect_prompt or self.connect_prompt
if isinstance(c_prompt, list):
c_prompt = c_prompt[i]
history.append({"role": "user", "content": c_prompt})
return resp