Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested chats #2213

Open
gamercoder153 opened this issue Jun 18, 2024 · 1 comment
Open

Nested chats #2213

gamercoder153 opened this issue Jun 18, 2024 · 1 comment
Labels
question Further information is requested

Comments

@gamercoder153
Copy link

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 dosubot bot added the question Further information is requested label Jun 18, 2024
Copy link

dosubot bot commented Jun 18, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant