Hi <@UKTUC906M>, We’ve been exploring Controlflow ...
# marvin-ai
r
Hi @Jeremiah, We’ve been exploring Controlflow and are really impressed with its implementation and philosophy—it’s a fantastic approach! As we consider adopting it further, we wanted to ask: is Controlflow production-ready? We noticed there haven’t been broader announcements on LinkedIn or many resources on YouTube, so we’re curious about its current status and community adoption.
b
Hi Rajan! I'll let Jeremiah add to this, but to answer your question, yes! CF is production-ready. Your observation is valid that content is a bit sparse atm, but we are going to be releasing more around CF soon (videos, demos, github projects, etc.).
🙌 1
If you want to propose some topics or use cases that you'd like to see, we're all ears for suggestions from our community. ✍️ 👂
r
Thanks @Bianca Hoch, looking forward to it. I am interested in implementing multi agent architecture with Controlflow, so any documentation, projects or videos are most welcomed. Thanks again!
🚀 1
thank you 1
s
Hi @Bianca Hoch thanks for the response! This is Rajans cofounder 🙂 I've been looking at the documentation over the last day or two. Wanted to clarify something - the
Task
and
Agent
is functionally the same concept right? Other than the fact that you can assign an agent to a task both accept the same arguments and execute after instantiation using the
run()
method respectively. So when I create a new agent and define instructions and user message params and run it as
agent.run()
it will automatically create a
Task
for that agent and that agent will be the value of the list of agents arg that the
Task
object accepts? You could also always just define tasks with instruction and tools without ever having to
Agents
correct?
👋 1
🙌 1
c
Agents describe how tasks are run
🙌 1
tasks describe what is run
b
Good morning & good evening (i see we have folks in different timezones here)! 🌅 🌃 Teo's description of tasks and agents is correct. Tasks are units of work, and agents are the workers assigned to complete the tasks. Tasks define what needs to be done, while agents are the entities who perform those tasks. Each task requires at least one agent, and if a task isn't delegated to a particular agent, it will be assigned to one at runtime (more on that here).
🙌 1
s
Appreciate the clarification @Constantin Teo and @Bianca Hoch! Quick follow up based on what you said about Tasks requiring agents to run: What happens in a scenario where you define
instructions
property for both the Task and the Agent? I'm assuming the
instructions
property is the same as an LLM "System Message" in which case where does the Task System Message get appended?
j
If you give an agent instructions, it will remember those instructions no matter how many tasks it works on. If you give a task instructions, then those instructions are only visible to agents working on that task. In the case of a single agent and a single task, it probably doesn't matter where you put them.
s
@Jeremiah so in the case of a scenario where both the task and agents have an instruction then the agent is exposed to both its own instructions + task instructions as well as task objective?
f
I am investigating which Multi agent framework to use. We are looking at LangGraph, AWS MOA and ControlFlow now. Regarding ControlFlow, if we use it in our backend, does it require to use Prefect or is a standalone framework? We use Prefect but it is important to know the flexibility
b
My understanding is that controlflow runs on top of prefect.
j
@Soham Sarkar that's correct
🙌 1
For example your agent might have an instruction to always use bullet points in its responses; your task might have an objective to write a recipe and an instruction to use eggs.
@Flavio Oliveira right now it requires Prefect but I am looking at relaxing that so its never a blocker
s
@Jeremiah is my understanding correct that both task
instructions
and
objective
is then always appended as an LLM
user
message for the agent? In OpenAI specification it would be something like For a given controlflow agent:
Copy code
messages: [
        { role: "system", content: "{cf.agent instructions}" },
        {
            role: "user",
            content: "cf.task {objectives}/ncf.task{instructions}",
        }
Is this the correct understanding from cf -> LLM call?