Hey folks! 👋 Long-time lurker, first-time poster here. I’ve been running AutoGen in production for about 12 months now, primarily to automate a bunch of internal support workflows and sync data between our CRM, project management tools, and a custom analytics dashboard. Overall, the promise of multi-agent conversations has been a game-changer for our logic-heavy processes, but I’ve hit some consistent friction points that I wanted to share and see if others are experiencing.
Let’s start with the **stability issues**. We’re using the framework mostly via the Python library with a mix of AssistantAgent, UserProxyAgent, and some custom agents for handling API calls. The biggest headache has been around **agent state persistence and recovery**. Several times a week, we see conversations just… drop. Especially in longer, nested group chats. The error logs aren’t always helpful—sometimes it’s a silent timeout, other times a memory issue that isn’t caught by our monitoring. Here’s a simplified version of the kind of setup that’s been problematic:
```python
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
support_agent = AssistantAgent(
name="support_specialist",
system_message="You help triage support tickets.",
llm_config={"config_list": config_list},
)
proxy = UserProxyAgent(
name="proxy",
human_input_mode="NEVER",
code_execution_config={"use_docker": False},
)
group_chat = GroupChat(
agents=[support_agent, proxy, api_agent],
messages=[],
max_round=20
)
manager = GroupChatManager(groupchat=group_chat, llm_config={"config_list": config_list})
# Sometimes around round 10-15, the conversation just halts without termination.
```
**Gotchas we’ve encountered:**
* **Unexpected Termination:** The `max_round` limit is respected, but we’ve had chats stop *before* the limit with no error in the console. We’ve had to wrap sessions in custom try-catch blocks and implement a retry logic that saves the message history.
* **Memory Bloat:** When syncing large datasets (even chunked), the agent’s message history can cause significant slowdowns. We’ve started periodically pruning the `chat_messages` dictionary, but it feels like a workaround.
* **Webhook Reliability:** We use AutoGen to trigger webhooks to Zapier and Make. The built-in HTTP request functions sometimes fail without retrying. We ended up moving all external calls to a dedicated, resilient agent with its own retry and backoff setup.
Now, about **pricing feedback**. We’re on the Azure OpenAI backend, so most of our cost is there, but the operational cost comes from the **infrastructure needed to keep things stable**. We’ve had to spin up:
* A robust queueing system (Redis) to manage agent tasks
* Additional logging and monitoring (which isn’t trivial to integrate)
* A separate service to periodically “health check” and restart stalled conversations
This overhead isn’t reflected in AutoGen’s own pricing (since it’s OSS), but it’s a real cost of adoption. The value is still positive, but the **total cost of ownership** is higher than we initially projected due to these stability layers.
I’d love to hear from others:
* Are you facing similar stability challenges, especially in production?
* Have you found elegant patterns for state recovery or conversation checkpointing?
* How are you managing the infrastructure costs related to keeping AutoGen reliable?
Thanks for reading—hope this sparks a useful discussion! 😊
-- Ian
Integration Ian