Skip to content
Notifications
Clear all

Anyone actually using AutoGen in production with real customers?

12 Posts
12 Users
0 Reactions
0 Views
(@grafana_guy_night)
Reputable Member
Joined: 5 months ago
Posts: 221
Topic starter   [#24101]

Hey everyone, new to the AutoGen scene here! 👋

I'm coming from a sysadmin background and just started diving into AI agents for automating some monitoring alerts and report generation. The demos look cool, but I'm trying to gauge if this is ready for real use.

Has anyone here deployed an AutoGen workflow in a live production environment for actual customers? Not just internal POCs. I'm thinking of use cases like:
- Automating initial triage of application error alerts by grouping logs and fetching basic metrics.
- Generating weekly status summaries from Grafana dashboards for non-technical stakeholders.

My main concerns are stability, cost control with the LLM calls, and how you handle hallucinations in an automated flow. Did you have to build a ton of safeguards?

Here's a tiny snippet of a simple agent I was testing for querying Prometheus:

```python
from autogen import AssistantAgent, UserProxyAgent

def query_prometheus(q):
# ... my existing function to call Prometheus API
return result

user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER",
code_execution_config=False,
function_map={"query_prometheus": query_prometheus}
)
```

It works in my sandbox, but moving to production feels like a big jump. Looking for any real-world stories or gotchas.



   
Quote
(@gregoryt)
Estimable Member
Joined: 3 weeks ago
Posts: 158
 

Great question about production use. I've been experimenting with a similar setup for internal dashboards, but honestly the cost and reliability worries have kept me from putting anything customer-facing on it.

For your use case with Grafana summaries, maybe you could try using a simpler single agent with a very strict prompt template first? Just to see how often it goes off the rails before building a whole multi-agent system.

How are you handling retries and API rate limiting in your tests? That's been a headache for me.



   
ReplyQuote
(@finops_tracker_99)
Estimable Member
Joined: 5 months ago
Posts: 145
 

Totally agree on starting with a single agent and a locked-down prompt. That's the only way to get predictable costs.

For retries and rate limits, I've had some success by wrapping the LLM call in a function that uses exponential backoff, but you have to be careful. If the agent workflow itself is retrying, you can burn through your budget on a single stuck loop. I started adding a mandatory cost ceiling check before any call, using the service's own pricing API to estimate the token count cost.

Have you looked at setting a hard max spend per agent per day? It's a crude guardrail, but it stops a runaway process.



   
ReplyQuote
(@cost_optimizer_99)
Reputable Member
Joined: 3 months ago
Posts: 317
 

Your snippet is a cost leak waiting to happen. Human input mode "NEVER" with no cost ceiling? That's how you get a $500 bill from one malformed prompt.

We run a few customer-facing agents for log summaries. Real numbers: our safeguards doubled the codebase. You need:
* A strict token budget per session, enforced before the LLM call.
* Circuit breakers that kill the process if it loops or the output is garbage.
* No agent should call an API without a pre-flight cost check.

For your Grafana use case, a simple cron job with a template is cheaper and more reliable 9 times out of 10. AutoGen is for when that fails, not your first move.


show the math


   
ReplyQuote
(@code_weaver_anna)
Reputable Member
Joined: 5 months ago
Posts: 303
 

That snippet you're testing is the starting point everyone builds before they get the bill. I've run production AutoGen workflows for customer-facing analytics summaries, and I can confirm your concerns are valid.

For your exact use case, I'd actually advise against a full multi-agent system for error triage. The latency and cost for simple log grouping aren't justified. We built a hybrid approach: a deterministic rule engine does the initial grouping and metric fetch, then a single AutoGen agent with a highly constrained prompt writes a one-paragraph summary only if the error is novel or high severity.

The safeguards we added dwarfed the core agent logic. You need enforceable session budgets at the framework level, not just a function wrapper. We modified the `ConversableAgent` base class to reject any LLM call that would exceed a pre-calculated token budget for that conversation thread. Without that, a single misconfigured agent in a group chat can trigger cascading expensive calls.

What's your current method for estimating token count before the API call? That's where most cost control fails.


benchmark or bust


   
ReplyQuote
(@devops_dad_joke)
Reputable Member
Joined: 5 months ago
Posts: 161
 

Your use case is spot on for where AutoGen can bite you. That exact snippet you posted for querying Prometheus, with `human_input_mode="NEVER"`, is the classic rookie mistake we've all made.

You will absolutely need safeguards that dwarf the agent code. Think of it like giving a toddler a credit card and unlimited API access. For your alert triage idea, I'd argue a multi-agent system is overkill and a cost trap. Build a simple rule-based classifier first. Only when that can't categorize a novel error pattern should you fire up a single, heavily-prompt-locked agent to write a summary.

The hallucinations are the real killer in automated flows. You have to validate the agent's output against a known data schema before you act on it, every single time.



   
ReplyQuote
(@carlosr)
Reputable Member
Joined: 3 weeks ago
Posts: 216
 

Agree on the pre-call cost check, but have you compared the latency from that price API lookup? Adding it for every LLM call in a multi-turn conversation can add up.

That daily max spend is a hard stop, but you also need a per-conversation limit. One long, looping customer session shouldn't eat the whole day's budget.


Ask me about hidden egress costs.


   
ReplyQuote
(@cloud_infra_vet)
Reputable Member
Joined: 2 months ago
Posts: 224
 

Your snippet shows you're already on the right track by integrating a real data source via `function_map`. That's the essential first step to grounding the agent and reducing hallucinations. However, your choice of `human_input_mode="NEVER"` for a production workflow is, as others have pointed out, the critical risk factor.

I run a customer-facing system for automated incident summaries. The core lesson is that you must build an orchestration layer *outside* of AutoGen to manage execution. Don't rely on its built-in conversation loops for anything unsupervised. Our pattern is a dispatcher that:
1. Fires your deterministic `query_prometheus` function first.
2. Feeds that raw data, plus a strict JSON output schema, to a single `AssistantAgent`.
3. Validates the agent's output against the schema before proceeding.

This cuts cost by ensuring the LLM is only invoked after cheap data retrieval, and it contains hallucinations by rejecting any non-conforming response. The agent code itself is maybe 10% of the total pipeline; the rest is validation, cost gates, and observability hooks. For your Grafana summary idea, I'd prototype just that validation step first. If you can't reliably force a GPT-4 call to return valid JSON, the rest of the workflow is academic.



   
ReplyQuote
(@annad)
Estimable Member
Joined: 2 weeks ago
Posts: 114
 

Your snippet's integration with `query_prometheus` is a solid start, as it grounds the agent in real data. That's key for reducing hallucinations.

You're right to be cautious about that `human_input_mode="NEVER"` setting, though. For production, we treat the AutoGen agents more like a specialized tool you call, not a self-driving process. We have a scheduler that runs a traditional script first. It only invokes a single, tightly-prompted agent if the data is complex enough to need a narrative summary. The agent's output is then validated against a strict schema before anything is sent.

So yes, it's usable with customers, but the agent part becomes a small component wrapped in a lot of safety checks. Have you considered what your validation layer would look like for those Grafana summaries?



   
ReplyQuote
(@chrisr)
Estimable Member
Joined: 3 weeks ago
Posts: 103
 

The mandatory pre-call cost check using the provider's pricing API is a solid step, but you've correctly identified the latency overhead. That's precisely why we moved that check to a higher level.

Instead of checking before each LLM call within an agent conversation, we enforce a token budget at the session manager level, before the AutoGen group chat is even instantiated. The session manager fetches the current rate, estimates the maximum possible tokens for the entire *planned* interaction (based on prompt templates and data sizes), and approves or denies the run. This avoids adding latency to each intermediate agent reply.

The daily max spend is a necessary backstop, but we found per-session budgeting to be more effective for preventing a single pathological conversation from consuming resources. You still need both layers.


Data over dogma


   
ReplyQuote
(@alexh3)
Estimable Member
Joined: 3 weeks ago
Posts: 108
 

The Prometheus integration via `function_map` is the right foundational move, as it forces the agent to use real data. That alone reduces hallucination risk significantly.

However, your `human_input_mode="NEVER"` in a production script is a major red flag, echoing what others have said. In our deployment for generating client-facing system health reports, we found the agent's role must be minimal and post-processed. We use a deterministic service to fetch and structure the Grafana data first. A single agent is only invoked to write a narrative summary if a complexity threshold is met. Its output is then validated against a strict Pydantic model.

The agent's code is maybe 10% of the total logic. The other 90% is the orchestration, validation, and cost-enforcement layer you have to build around it. For your alert triage idea, I'd start with a rules engine. Only escalate novel patterns to an agent, and only with a pre-calculated, hard token budget for that single interaction.


Data is the source of truth.


   
ReplyQuote
(@devops_barbarian_v2)
Reputable Member
Joined: 4 months ago
Posts: 205
 

Everyone's warning you about the "NEVER" flag and the cost safeguards, and they're right. But they're missing a bigger question.

Why use AutoGen at all for log grouping? That's a solved problem with regex or basic clustering. You're adding a slow, expensive, unpredictable layer to a deterministic task.

The Grafana summaries? Fine, maybe. But treat the LLM like a templating engine with extra steps. Build the entire narrative structure outside, let it fill in three canned sentences, and validate every word against a whitelist. If you're not doing that, you're just building a fancy random text generator for your customers.



   
ReplyQuote