langflow-ai / langflow

⛓️ Langflow is a visual framework for building multi-agent and RAG applications. It's open-source, Python-powered, fully customizable, model and vector store agnostic.
http://www.langflow.org
MIT License
20.13k stars 2.98k forks source link

Nested chats #2213

Open gamercoder153 opened 2 weeks ago

gamercoder153 commented 2 weeks ago

Can I create a nested chat between agents? For example, the first agent generates some output, the second agent analyzes it, and prompts the first agent to refine the output based on the second agent's analysis. This process iterates until a high-quality desired output is generated.

dosubot[bot] commented 2 weeks ago

Yes, you can create a nested chat between agents where the first agent generates some output, the second agent analyzes it, and then prompts the first agent to refine the output based on the second agent's analysis, iterating until a high-quality desired output is generated.

The XMLAgentComponent class allows for the configuration and execution of LangChain agents using a simplified interface. You can set up and run an agent with a given prompt, tools, and message history, and adapt this setup to create a nested chat between agents.

Here is a simplified example of how you might set up such a nested chat:

async def nested_chat(agent1_name, agent2_name, input_value, llm, tools, iterations=3):
    agent_component = XMLAgentComponent()

    for _ in range(iterations):
        # Run the first agent
        result1 = await agent_component.build(
            input_value=input_value,
            llm=llm,
            tools=tools
        )

        # Run the second agent with the output of the first agent
        result2 = await agent_component.build(
            input_value=result1,
            llm=llm,
            tools=tools
        )

        # Use the output of the second agent to refine the input for the first agent
        input_value = result2

    return input_value

# Example usage
final_output = await nested_chat(
    agent1_name="Agent1",
    agent2_name="Agent2",
    input_value="Initial input",
    llm=your_llm_instance,
    tools=your_tools_list
)
print(final_output)

In this example, nested_chat runs the first agent with the initial input, then runs the second agent with the output of the first agent, and iterates this process for a specified number of iterations. The final output is the refined result after the specified iterations [1][2].

To continue talking to Dosu, mention @dosu.