How to Fix 'timeout error during development' in AutoGen (Python)
What the error means
If you’re seeing timeout error during development in AutoGen, your agent call is taking longer than the configured timeout and the request gets cut off before a response comes back. In practice, this usually shows up when you’re using AssistantAgent, UserProxyAgent, or GroupChatManager with a model call that hangs, retries too long, or waits on a tool execution that never returns.
The symptom is usually one of these:
- •
openai.APITimeoutError: Request timed out - •
TimeoutError: The operation timed out - •
autogen.exception.TimeoutError: timeout error during development
The Most Common Cause
The #1 cause is a mismatch between your model latency and your timeout settings. In AutoGen, this often happens when you create an agent with default config, then run a long prompt, a slow tool, or a model endpoint with low server-side timeout limits.
The broken pattern is usually “default everything” plus a blocking tool call.
| Broken | Fixed |
|---|---|
| No explicit timeout | Set timeout in the LLM config |
| Tool function can hang | Add time limits around tools |
| Long chat without token control | Reduce prompt size / max tokens |
# BROKEN
import autogen
config_list = [
{
"model": "gpt-4o-mini",
"api_key": "YOUR_KEY",
}
]
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={"config_list": config_list},
)
user_proxy = autogen.UserProxyAgent(
name="user",
human_input_mode="NEVER",
)
user_proxy.initiate_chat(
assistant,
message="Analyze this 50-page policy document and extract all exceptions."
)
# FIXED
import autogen
config_list = [
{
"model": "gpt-4o-mini",
"api_key": "YOUR_KEY",
"timeout": 120, # explicit request timeout
"max_tokens": 1200, # keep response bounded
}
]
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={
"config_list": config_list,
"temperature": 0,
},
)
user_proxy = autogen.UserProxyAgent(
name="user",
human_input_mode="NEVER",
)
user_proxy.initiate_chat(
assistant,
message="Summarize the exceptions in this policy document in 10 bullets."
)
If you are running tools, also wrap them so they fail fast instead of hanging forever:
import signal
def timeout_handler(signum, frame):
raise TimeoutError("Tool execution timed out")
signal.signal(signal.SIGALRM, timeout_handler)
def slow_tool():
signal.alarm(30)
try:
# expensive work here
return {"status": "ok"}
finally:
signal.alarm(0)
Other Possible Causes
1) Your tool function is blocking
A common AutoGen pattern is register_function() or using UserProxyAgent to execute Python code. If that code waits on network I/O, file locks, or an infinite loop, AutoGen will eventually time out.
def fetch_customer_data(customer_id):
# BAD: no timeout on HTTP call
return requests.get(f"https://internal-api/customers/{customer_id}").json()
Fix it with explicit network timeouts:
def fetch_customer_data(customer_id):
return requests.get(
f"https://internal-api/customers/{customer_id}",
timeout=10,
).json()
2) The model endpoint is slow or rate-limited
If you’re using Azure OpenAI, OpenAI-compatible gateways, or local inference servers, the issue may be upstream latency. You’ll often see retries followed by:
- •
openai.APITimeoutError - •
RetryError - •
HTTPStatusError: 429 Too Many Requests
Check your provider config:
llm_config = {
"config_list": [
{
"model": "gpt-4o-mini",
"api_key": "...",
"base_url": "http://localhost:8000/v1", # local gateway
"timeout": 180,
}
]
}
If the backend is overloaded, increasing client timeout helps only if the server actually finishes the request.
3) Your prompt is too large
AutoGen will happily send huge context windows until latency gets ugly. Long chat history, pasted logs, and giant documents all increase response time.
Trim what you send:
message = """
Use only this excerpt:
[...relevant section...]
Task:
Extract the top 5 risks.
"""
Or summarize before passing into the agent chain.
4) Code execution never returns
If you use code_execution_config with UserProxyAgent, Python code can hang inside the sandbox.
user_proxy = autogen.UserProxyAgent(
name="user",
human_input_mode="NEVER",
code_execution_config={
"work_dir": "./tmp",
"use_docker": False,
# missing execution timeout handling
},
)
Make sure your execution environment has a hard limit. If you’re using Docker-based execution, prefer container-level timeouts over pure Python guards.
How to Debug It
- •
Check whether it’s LLM latency or tool latency
- •Comment out tool calls.
- •Run a plain prompt through
AssistantAgent. - •If it still times out, the problem is likely model/config related.
- •
Turn on verbose logging
- •Inspect AutoGen logs for where it stalls.
- •Look for repeated retries or long gaps before:
- •
openai.APITimeoutError - •
TimeoutError - •tool execution output never returning
- •
- •
Reduce the task to a minimal reproduction
- •Use one agent.
- •Use one short prompt.
- •Remove memory-heavy history.
- •If that works, re-add components until it breaks.
- •
Test each external dependency directly
- •Call your API endpoint outside AutoGen.
- •Run your Python tool standalone.
- •Measure response times with a timer:
import time start = time.time() result = slow_tool() print(time.time() - start)
Prevention
- •
Set explicit timeouts everywhere:
- •LLM requests
- •HTTP calls inside tools
- •code execution blocks
- •
Keep agent prompts tight:
- •summarize documents first
- •avoid dumping full logs into chat history
- •
Treat tools like production services:
- •add retries with backoff where safe
- •fail fast on network calls
- •log duration per tool invocation
Keep learning
- •The complete AI Agents Roadmap — my full 8-step breakdown
- •Free: The AI Agent Starter Kit — PDF checklist + starter code
- •Work with me — I build AI for banks and insurance companies
By Cyprian Aarons, AI Consultant at Topiax.
Want the complete 8-step roadmap?
Grab the free AI Agent Starter Kit — architecture templates, compliance checklists, and a 7-email deep-dive course.
Get the Starter Kit