在这里插入图片描述

一个人写代码写到头秃?让两个AI Agent互相撕逼(协作),代码质量直接起飞!AutoGen双Agent编程实战,手把手教你搭建"程序员+代码审查员"的黄金搭档,从此告别单打独斗的孤独编程。


AutoGen双Agent协作编程实战

核心概念篇

"什么是AutoGen?"

"为什么需要多Agent?"

"双Agent协作的核心逻辑"

环境搭建篇

"Python环境准备"

"AutoGen安装与配置"

"API密钥管理技巧"

角色设计篇

"程序员Agent:AssistantAgent"

"用户代理Agent:UserProxyAgent"

"对话终止条件的艺术"

实战编码篇

"第一个双Agent对话"

"代码生成与执行闭环"

"调试与错误处理机制"

进阶技巧篇

"系统提示词优化"

"对话历史管理"

"多轮迭代的最佳实践"

避坑指南篇

"常见报错与解决"

"成本控制策略"

"安全边界设置"

目录

  1. 核心概念篇:理解AutoGen的协作哲学
  2. 环境搭建篇:从零配置开发环境
  3. 角色设计篇:打造你的AI搭档
  4. 实战编码篇:跑通第一个双Agent程序
  5. 进阶技巧篇:让协作更丝滑
  6. 避坑指南篇:新手必看的生存法则

嗨,大家好呀,我是你的老朋友精通代码大仙。接下来我们一起学习 《大模型应用开发_动手做AI_Agent》,震撼你的学习轨迹!


引入:一个人的战斗,真的太累了

“一个人走得快,一群人走得远”——这话放在编程圈,简直扎心。

你是不是也这样:深夜对着屏幕,一个bug改到凌晨三点,越改越懵,越懵越急,最后干脆躺平明天再说。或者好不容易让AI写了一段代码,结果跑不通,你复制报错信息给AI,它改完又出新bug,循环往复,仿佛进入无限套娃的地狱模式。

更惨的是,有些代码看起来能跑,但总觉得哪里不对劲——变量命名规范吗?异常处理到位吗?性能有没有坑?你一个人审查自己的代码,就像自己给自己理发,后脑勺永远看不见。

学编程就像打怪升级,总会遇到卡关的时候。而AutoGen的双Agent协作,就是给你找个靠谱的队友,一个负责冲锋写代码,一个负责兜底把关,两个人互相配合,效率直接翻倍。今天这篇,我就带你手把手搭建这个"黄金搭档",从此告别单打独斗的孤独编程。


一、核心概念篇:理解AutoGen的协作哲学

点题:AutoGen到底是什么?

AutoGen是微软开源的多Agent对话框架,核心理念特别简单:让多个AI角色通过对话协作完成任务

它不是那种"一个大模型包办一切"的思路,而是模拟真实团队的分工——有人专门写代码,有人专门测试,有人专门提需求,大家开会讨论、迭代优化,直到产出合格的结果。

AutoGen多Agent模式

发起任务

多轮对话

生成代码

返回结果

反馈/追问

用户

UserProxyAgent
用户代理

AssistantAgent
程序员

代码执行器

传统单Agent模式

一次性提问

一次性回答

用户

大模型

双Agent协作是最小可用单元:UserProxyAgent(用户代理) + AssistantAgent(助手代理)。一个代表人类用户传达意图、执行代码、检查结果;一个专注于理解需求、生成方案、编写代码。

痛点分析:新手最容易踩的坑

误区一:以为AutoGen就是"更厉害的ChatGPT"

很多新手第一次接触,直接把AutoGen当升级版聊天工具用,问一句答一句,完全没发挥多Agent协作的优势。结果呢?该出的bug照样出,该改到凌晨还是凌晨。

误区二:两个Agent角色混乱,互相抢戏

我见过有人把两个Agent都配置成"全能型",结果对话变成:

Agent A:“我来写代码”
Agent B:“不,我来写,你看着”
Agent A:“你写的有问题,听我的”
…无限扯皮,任务永远完不成。

误区三:忽视对话终止条件,Token烧到心疼

没有设置好什么时候该停,两个Agent能聊到地老天荒。有人跑了个简单任务,一看账单傻眼了——两百多轮对话,API费用够吃顿火锅。

解决方案:建立清晰的协作边界

正确理解分工

角色 核心职责 典型行为
UserProxyAgent 代表用户、执行代码、反馈结果 运行代码、检查输出、决定任务是否完成
AssistantAgent 生成方案、编写代码、解释逻辑 分析需求、写代码、回答技术问题

配置原则:一个"动手",一个"动脑";一个"务实",一个"务虚"。

关键代码示例(正确配置):

from autogen import AssistantAgent, UserProxyAgent

# 程序员Agent:专注写代码,不执行
coder = AssistantAgent(
    name="python_coder",
    system_message="""你是一个专业的Python程序员。
你的任务是编写高质量、可运行的Python代码。
- 代码必须完整,包含必要的导入语句
- 添加适当的错误处理
- 使用清晰的变量命名
- 代码写完后,等待用户代理运行并反馈结果""",
    llm_config={"model": "gpt-4", "api_key": "..."}
)

# 用户代理Agent:负责执行和把关
user_proxy = UserProxyAgent(
    name="code_executor",
    system_message="""你是用户代理,负责执行代码并反馈结果。
- 使用提供的代码执行工具运行Python代码
- 检查输出结果,判断任务是否完成
- 如果代码有错误,将错误信息反馈给程序员
- 如果任务完成,回复 TERMINATE 结束对话""",
    code_execution_config={"work_dir": "coding_workspace"},
    human_input_mode="NEVER"  # 完全自动,不需要人类介入
)

这样做的好处:角色边界清晰,不会互相抢戏;代码生成和执行分离,形成闭环;自动终止避免无限对话,省钱省心。

小结

AutoGen的双Agent不是"1+1=2"的简单叠加,而是"一个敢写、一个敢跑"的默契配合。明确分工、设置边界、建立终止机制,是让协作顺畅的三根支柱。


二、环境搭建篇:从零配置开发环境

点题:工欲善其事,必先利其器

环境搭建是新手的第一道坎。很多人还没开始写Agent,就被各种依赖冲突、版本不兼容、API配置搞到崩溃,直接劝退。

这一节我把踩过的坑都给你填平,确保你10分钟内跑通环境。

痛点分析:环境配置的"死亡三连"

坑一:Python版本混乱

AutoGen对Python版本有要求(推荐3.9-3.11),但很多人系统里同时装了3.8、3.10、3.12,pip install完发现导入报错,排查两小时才发现装错环境了。

坑二:依赖地狱

AutoGen依赖的库很多,直接pip install pyautogen可能和其他项目冲突。我见过最惨的案例:某个依赖和jupyter notebook冲突,导致整个数据分析环境崩溃。

坑三:API密钥裸奔

新手最容易犯的错:直接把OpenAI密钥写在代码里,然后不小心提交到GitHub。等你收到"您的账户存在异常使用"的邮件时,账单可能已经够买台MacBook了。

解决方案:隔离、规范、安全

Step 1:创建隔离环境(必做)

# 使用conda创建专属环境
conda create -n autogen python=3.10 -y
conda activate autogen

# 或者使用venv(轻量方案)
python3.10 -m venv autogen_env
source autogen_env/bin/activate  # Linux/Mac
# autogen_env\Scripts\activate  # Windows

Step 2:安装AutoGen(指定版本)

# 基础安装
pip install pyautogen==0.2.0

# 如果需要代码执行功能(推荐)
pip install pyautogen[ipython]==0.2.0

# 验证安装
python -c "import autogen; print(autogen.__version__)"

Step 3:安全的API配置

绝对不要这样做:

# ❌ 错误示范:密钥裸奔
coder = AssistantAgent(
    name="coder",
    llm_config={"api_key": "sk-1234567890abcdef..."}  # 危险!
)

推荐做法:环境变量 + 配置文件

# config.py - 读取环境变量
import os

# 从环境变量读取(推荐生产环境)
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
OPENAI_BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")

# 本地开发可以用python-dotenv
from dotenv import load_dotenv
load_dotenv()  # 自动读取.env文件

.env文件内容(加入.gitignore!):

OPENAI_API_KEY=sk-your-key-here
OPENAI_BASE_URL=https://api.openai.com/v1  # 如果用第三方代理,改这里

.gitignore追加:

.env
coding_workspace/
__pycache__/
*.pyc

Step 4:项目结构规划

my_autogen_project/
├── .env                    # 密钥(不提交)
├── .gitignore             # 忽略敏感文件
├── config.py              # 配置读取
├── agents/                # Agent定义
│   ├── __init__.py
│   ├── coder_agent.py
│   └── executor_agent.py
├── workspace/             # 代码执行目录
│   └── .gitkeep
├── examples/              # 示例脚本
│   └── hello_autogen.py
└── requirements.txt       # 依赖清单

小结

环境隔离避免冲突,环境变量保护密钥,清晰结构方便维护。这三步做到位,后面的路会顺畅很多。记住:开始写代码前,先确保能安全地跑起来


三、角色设计篇:打造你的AI搭档

点题:好Agent是调出来的,不是造出来的

同样的底层模型,不同的system message(系统提示词),表现天差地别。这一节教你设计"专业、可靠、不抢戏"的双Agent角色。

痛点分析:角色设计的常见翻车现场

翻车一:提示词太笼统

# ❌ 反面教材:毫无特色的"程序员"
system_message="你是一个 helpful 的AI助手。"

结果:Agent什么都能干,什么都干不精。写代码没规范,出错了不会调试,问它"这段代码有问题吗",它回答"看起来没问题呢"——实际上跑都跑不通。

翻车二:提示词太啰嗦

有人把Python编码规范、PEP8、设计模式、单元测试要求全塞进去,system message长达3000字。结果呢?模型注意力被稀释,关键要求被忽略,反而表现更差。

翻车三:没有明确的行为约束

没告诉Agent"什么时候该停"、“什么情况下要反馈”,导致对话失控。我见过一个案例:Agent写了个排序算法,用户代理说"测试通过",结果Agent非要优化成"更快的版本",又改了五轮,最后引入bug。

解决方案:精准、简洁、有边界

AssistantAgent(程序员)设计模板

PYTHON_CODER_PROMPT = """你是Python专家Coder,专精算法实现与代码优化。

【核心职责】
1. 根据需求编写完整、可运行的Python代码
2. 代码必须包含:导入语句、函数定义、示例调用
3. 主动添加错误处理(try-except)和输入验证

【编码规范】
- 使用类型提示(typing)
- 函数docstring说明参数和返回值
- 复杂逻辑添加行内注释

【协作规则】
- 代码写完后,明确说"请运行这段代码"
- 收到错误反馈时,分析原因并修复,不辩解
- 任务完成时,回复 TERMINATE

【禁止行为】
- 不执行代码(你没有执行权限)
- 不主动结束对话(除非收到运行成功反馈)
"""

UserProxyAgent(执行者)设计模板

CODE_EXECUTOR_PROMPT = """你是代码执行代理,负责运行代码并判断结果。

【核心职责】
1. 使用ipython工具执行Python代码
2. 检查输出:成功/报错/超时/无输出
3. 向Coder反馈:结果摘要或错误详情

【判断标准】
- 代码运行成功 + 输出符合预期 → 回复 TERMINATE
- 代码报错 → 复制完整错误信息给Coder
- 输出不符合预期 → 描述差异,要求修改
- 运行超时(>30秒) → 中断并报告

【执行原则】
- 不信任任何代码,必须在隔离环境运行
- 不修改Coder的代码,只执行
- 不主动编写新代码,只反馈结果
"""

关键配置参数详解

from autogen import AssistantAgent, UserProxyAgent

# 程序员Agent配置
coder = AssistantAgent(
    name="python_coder",
    system_message=PYTHON_CODER_PROMPT,
    llm_config={
        "config_list": [{
            "model": "gpt-4",
            "api_key": os.getenv("OPENAI_API_KEY"),
            "temperature": 0.1,  # 低温度,更确定性
        }],
        "timeout": 60,
    }
)

# 用户代理配置(重点!)
user_proxy = UserProxyAgent(
    name="code_runner",
    system_message=CODE_EXECUTOR_PROMPT,
    human_input_mode="NEVER",  # 完全自动,关键参数!
    max_consecutive_auto_reply=10,  # 最多自动回复10轮,防失控
    code_execution_config={
        "work_dir": "workspace",  # 代码执行目录
        "use_docker": False,      # 本地开发关docker,简化配置
        "timeout": 30,            # 单段代码执行超时
    },
    llm_config=False,  # 执行者不需要LLM,省钱!
)

human_input_mode的三种模式

模式 行为 适用场景
ALWAYS 每轮都问人类 调试、关键决策
TERMINATE 只有终止时问人类 半自动,最后把关
NEVER 完全自动 批量任务、自动化流程

新手建议先用TERMINATE,熟悉后再切NEVER

小结

好的角色设计 = 清晰的职责边界 + 具体的行为约束 + 明确的终止条件。提示词不在长,而在精准。记住:你要设计的是"专才"不是"通才",是"员工"不是"老板"


四、实战编码篇:跑通第一个双Agent程序

点题:从"能跑"到"好用",只差一个完整闭环

理论讲再多,不如亲手跑一遍。这一节我们完成一个完整任务:让双Agent协作实现"读取CSV文件,计算统计指标,生成可视化图表"。

痛点分析:第一次实战的常见崩溃

崩溃一:代码执行环境隔离问题

Agent生成的代码要读写文件,但执行目录没配置对,导致FileNotFoundError。新手排查半天,发现代码在/tmp执行,但CSV文件在当前目录。

崩溃二:依赖库缺失

Agent写了import pandas as pd,但执行环境没装pandas,直接报错ModuleNotFoundError。Agent收到错误,又生成!pip install pandas,结果执行器没权限,陷入死循环。

崩溃三:可视化输出看不到

生成matplotlib图表了,但执行结果是<Figure size 640x480>这种对象描述,不是图片。Agent以为成功了,实际上用户啥也没看到。

解决方案:预置环境、明确输出、可视化保存

Step 1:准备测试数据

# 提前创建测试数据,避免文件路径问题
# create_sample_data.py
import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame({
    'date': pd.date_range('2024-01-01', periods=100),
    'sales': np.random.normal(1000, 200, 100),
    'region': np.random.choice(['华东', '华北', '华南', '华西'], 100),
    'product': np.random.choice(['A', 'B', 'C'], 100)
})
df.to_csv('workspace/sales_data.csv', index=False, encoding='utf-8')
print("测试数据已创建:workspace/sales_data.csv")

Step 2:预装必要依赖

# requirements.txt
pandas>=2.0.0
matplotlib>=3.7.0
seaborn>=0.12.0

# 安装
pip install -r requirements.txt

Step 3:完整实战代码

# examples/data_analysis_task.py
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from config import OPENAI_API_KEY, OPENAI_BASE_URL
from autogen import AssistantAgent, UserProxyAgent

# ========== 角色定义 ==========

CODER_PROMPT = """你是数据分析专家,专精Python数据处理与可视化。

任务流程:
1. 读取 workspace/sales_data.csv
2. 计算:总销售额、分区域销售额、分产品销售额
3. 生成可视化:区域销售柱状图 + 产品占比饼图
4. 图表保存到 workspace/output_*.png

要求:
- 处理中文显示:plt.rcParams['font.sans-serif'] = ['SimHei']
- 添加数据验证:检查文件存在、列名正确
- 所有图表必须调用 plt.savefig() 保存,不要只show()
- 完成后报告:保存的文件路径和关键统计数字
"""

EXECUTOR_PROMPT = """你是代码执行代理。

执行规则:
- 运行Coder提供的所有代码
- 检查 workspace/ 目录是否生成 output_*.png 文件
- 确认统计结果合理(非空、无异常值)
- 成功则回复 TERMINATE,失败则反馈具体错误
"""

# 创建Agent
coder = AssistantAgent(
    name="data_analyst",
    system_message=CODER_PROMPT,
    llm_config={
        "config_list": [{
            "model": "gpt-4",
            "api_key": OPENAI_API_KEY,
            "base_url": OPENAI_BASE_URL,
            "temperature": 0.2,
        }]
    }
)

executor = UserProxyAgent(
    name="code_runner",
    system_message=EXECUTOR_PROMPT,
    human_input_mode="NEVER",
    max_consecutive_auto_reply=8,
    code_execution_config={
        "work_dir": "workspace",
        "use_docker": False,
        "timeout": 60,
    },
    llm_config=False,
)

# ========== 启动任务 ==========

task_description = """
请完成销售数据分析任务:
1. 读取 sales_data.csv
2. 计算整体和分维度的销售统计
3. 生成两张可视化图表并保存
4. 汇报关键发现
"""

print("=" * 50)
print("🚀 启动双Agent协作任务")
print("=" * 50)

# 关键:executor发起对话,coder响应
executor.initiate_chat(
    recipient=coder,
    message=task_description,
    clear_history=True,
)

print("\n" + "=" * 50)
print("✅ 任务结束,检查输出文件...")
import glob
outputs = glob.glob("workspace/output_*.png")
print(f"生成图表:{outputs}")

Step 4:运行与观察

执行后,你会看到这样的对话流程:

code_runner (to data_analyst):
请完成销售数据分析任务...

data_analyst (to code_runner):
我来分析数据。首先读取文件并检查...

[代码块1:读取和验证]

code_runner (to data_analyst):
代码执行成功。输出:文件存在,列名为...

data_analyst (to code_runner):
现在计算统计指标并生成可视化...

[代码块2:统计计算 + 可视化]

code_runner (to data_analyst):
代码执行成功。检测到文件:workspace/output_region.png, workspace/output_product.png
统计结果:总销售额98750,华东占比32%...

TERMINATE

关键成功要素

要素 作用 配置位置
明确保存路径 确保输出可验证 Coder的prompt + 代码中plt.savefig()
中文显示处理 避免乱码 Coder的prompt中指定plt.rcParams
文件存在检查 提前发现路径问题 Coder的数据验证逻辑
执行超时设置 防止无限等待 code_execution_config["timeout"]

小结

一个完整的双Agent任务 = 清晰的需求描述 + 预置的执行环境 + 可验证的输出目标 + 明确的终止条件。跑通这个例子,你就掌握了AutoGen的核心套路。


五、进阶技巧篇:让协作更丝滑

点题:从"能用"到"好用",细节决定体验

基础功能跑通后,如何让双Agent协作更高效、更稳定、更省钱?这一节分享四个实战技巧。

技巧一:对话历史的智能管理

痛点:长对话导致上下文溢出,模型"遗忘"早期需求,或者Token费用暴涨。

方案:关键信息摘要 + 定期重置。

from autogen import ChatResult

# 获取对话历史
chat_history: ChatResult = executor.initiate_chat(
    recipient=coder,
    message=task_description,
)

# 提取关键信息,用于新对话
summary = f"""
任务摘要:{task_description}
关键决策:{[msg['content'] for msg in chat_history.chat_history if '决定' in msg['content']]}
最终代码:{chat_history.chat_history[-2]['content'] if len(chat_history.chat_history) > 1 else 'N/A'}
"""

# 新任务时,用摘要代替完整历史
new_task = f"基于之前任务:{summary}\n\n新需求:优化性能"

技巧二:分层提示词优化

痛点:复杂任务中,Agent容易遗漏部分要求。

方案:用结构化标记强化关键信息。

STRUCTURED_PROMPT = """你是Python专家。收到任务后,按以下步骤执行:

<steps>
1. [分析] 理解需求,识别输入输出
2. [设计] 确定算法和数据结构  
3. [编码] 实现功能,添加注释
4. [验证] 自测边界情况
</steps>

<constraints>
- 时间复杂度不超过 O(n log n)
- 内存使用不超过 100MB
- 必须处理空输入和异常值
</constraints>

<output_format>
```python
# 完整代码
...
- [ ] 已测试正常情况 - [ ] 已测试边界情况 - [ ] 已检查性能 """ ```

XML标签比纯文本更容易被模型准确解析。

技巧三:成本监控与限速

痛点:AutoGen自动多轮对话,费用不可控。

方案:自定义回调监控Token使用。

import functools

def token_monitor(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        # 记录开始
        print(f"[监控] 开始调用: {func.__name__}")
        
        result = func(*args, **kwargs)
        
        # 尝试获取Token信息(取决于具体实现)
        if hasattr(result, 'cost'):
            print(f"[监控] 本次消耗: ${result.cost:.4f}")
        
        return result
    return wrapper

# 包装关键调用
monitored_chat = token_monitor(executor.initiate_chat)

# 或者更简单的:设置预算上限
llm_config = {
    "config_list": [...],
    "max_tokens": 2000,  # 单次回复上限
    "cache_seed": 42,     # 启用缓存,重复请求省钱
}

技巧四:错误恢复与重试

痛点:网络波动或API限流导致任务中断。

方案:包装 resilient 调用。

import time
from tenacity import retry, stop_after_attempt, wait_exponential

class ResilientAgent:
    def __init__(self, agent):
        self.agent = agent
        self.max_retries = 3
    
    @retry(
        stop=stop_after_attempt(3),
        wait=wait_exponential(multiplier=1, min=4, max=10),
        retry=lambda e: isinstance(e, (TimeoutError, ConnectionError))
    )
    def send_message(self, message, recipient):
        try:
            return self.agent.initiate_chat(
                recipient=recipient,
                message=message,
            )
        except Exception as e:
            print(f"[重试] 第{self.send_message.retry.statistics['attempt_number']}次尝试失败: {e}")
            raise
    
    def run_with_fallback(self, task, fallback_model="gpt-3.5-turbo"):
        """主模型失败时降级"""
        try:
            return self.send_message(task, self.agent)
        except Exception as e:
            print(f"[降级] 切换到备用模型: {fallback_model}")
            # 临时修改配置
            original_config = self.agent.llm_config
            self.agent.llm_config["config_list"][0]["model"] = fallback_model
            result = self.send_message(task, self.agent)
            self.agent.llm_config = original_config
            return result

小结

进阶技巧的核心是可控性——控制成本、控制质量、控制风险。对话管理防遗忘,结构化提示防遗漏,成本监控防破产,错误恢复防崩溃。四管齐下,生产环境也能稳如老狗。


六、避坑指南篇:新手必看的生存法则

点题:前人踩过的坑,都是你的护城河

这一节汇总我和社群小伙伴的血泪经验,帮你避开80%的常见问题。

坑点一:代码执行的安全黑洞

现象:Agent生成的代码执行了rm -rf /或者读取了敏感文件。

防御

# 严格限制执行环境
code_execution_config = {
    "work_dir": "workspace",           # 只允许访问此目录
    "use_docker": True,                 # 生产环境必须用Docker隔离
    "docker_image": "python:3.10-slim", # 指定干净镜像
    "timeout": 30,
    # 禁止的危险操作(需要自定义执行器实现)
    "forbidden_commands": ["rm -rf", "eval(", "exec("],
}

底线原则:永远假设Agent生成的代码是恶意的,执行环境必须可丢弃。

坑点二:模型幻觉导致虚假成功

现象:Agent报告"任务完成",但实际上文件没生成、结果是编造的。

防御:强制可验证的输出。

VERIFICATION_PROMPT = """...你的原有prompt...

【强制验证】
回复"任务完成"前,必须:
1. 列出所有生成的文件路径
2. 说明每个文件的大小(字节)
3. 提供关键结果的MD5校验或截图描述
"""

坑点三:对话陷入死循环

现象:两个Agent来回扯皮,“我觉得可以优化”、“再试试另一种方案”…

防御:硬性终止条件。

from autogen import config_list_from_json

# 方法1:轮数限制
max_consecutive_auto_reply=5  # 单Agent最多连续回复5次

# 方法2:内容检测终止
def is_termination_msg(message):
    """检测到这些模式就终止"""
    content = message.get("content", "")
    patterns = [
        "TERMINATE",
        "任务完成",
        "无需修改",
        r"第\d+次尝试.*仍?失败",  # 多次失败
    ]
    import re
    return any(re.search(p, content) for p in patterns)

coder = AssistantAgent(
    ...,
    is_termination_msg=is_termination_msg,
)

坑点四:版本兼容性噩梦

现象:代码在AutoGen 0.2.0能跑,升级到0.2.5报错。

防御:锁定版本 + 隔离环境。

# requirements.txt 精确锁定
pyautogen==0.2.0
# 不自动升级,除非测试通过

坑点五:中文编码与路径问题

现象:Windows上路径用\,Linux用/,中文文件名乱码。

防御:统一使用Pathlib,强制UTF-8。

from pathlib import Path
import platform

# 跨平台路径
work_dir = Path("workspace") / "outputs"
work_dir.mkdir(parents=True, exist_ok=True)

# 强制UTF-8(尤其在Windows)
import locale
if platform.system() == "Windows":
    locale.setlocale(locale.LC_ALL, '.UTF-8')

# 文件操作
file_path = work_dir / "中文报告.csv"
with open(file_path, 'w', encoding='utf-8-sig') as f:  # BOM头,Excel兼容
    ...

快速排错检查清单

现象 可能原因 检查点
导入autogen报错 Python版本/依赖冲突 python --version, 是否隔离环境
API连接失败 密钥/代理配置错误 echo $OPENAI_API_KEY, base_url
代码不执行 执行器配置错误 code_execution_config参数
输出文件找不到 工作目录不一致 work_dir绝对路径确认
费用异常高 对话未终止/循环 max_consecutive_auto_reply, 终止条件
中文乱码 编码未指定 encoding='utf-8', plt.rcParams

小结

安全、验证、终止、版本、编码——这五个维度守住了,AutoGen的坑就踩得差不多了。记住:不要相信,要验证;不要假设,要检查;不要裸奔,要隔离


写在最后

咱们今天从AutoGen的核心概念聊起,一步步搭环境、设角色、跑实战、学技巧、避大坑,完整走完了双Agent协作编程的入门之路。

说实话,我第一次用AutoGen的时候,也是一头雾水——这玩意儿比直接调API复杂多了,两个Agent来回对话,看着就头大。但当我真正跑通第一个任务,看到Coder写代码、Executor自动执行、报错后自动修复、最终输出正确结果的全过程,那种"哇,这俩AI在替我干活"的震撼,至今难忘。

多Agent协作不是炫技,是解决真实痛点的方案。一个人写代码,容易钻牛角尖;两个人协作,能互相补位。AI Agent也是如此——让专业的角色干专业的事,建立清晰的协作流程,设置合理的边界条件,整个系统的可靠性会远超单Agent。

编程之路不易,但每一步成长都算数。AutoGen只是工具,背后的思维——分解问题、定义角色、建立协作、持续迭代——才是 transferable 的能力。掌握了这个套路,不管是用AutoGen、LangGraph还是未来的新框架,你都能快速上手。

保持好奇,持续学习,你也能成为驾驭AI Agent的高手。下次咱们继续深入,聊聊多Agent的群聊模式、人机协作的混合流程,以及如何把这套方案用到真实的业务场景里。

期待和你继续这段旅程。


关注私信备注:“资料代找获取”,全网计算机学习资料代找:例如:
《课程:2026 年多模态大模型实战训练营》
《课程:AI 大模型工程师系统课程 (22 章完整版 持续更新)》
《课程:AI 大模型系统实战课第四期 (2026 年开课 持续更新)》
《课程:2026 年 AGI 大模型系统课 23 期》
《课程:2026 年 AGI 大模型系统课 21 期》
《课程:AI 大模型实战课 8 期 (2026 年 2 月最新完结版)》
《课程:AI 大模型系统实战课三期》
《课程:AI 大模型系统课程 (2026 年 2 月开课 持续更新)》
《课程:AI 大模型全阶课程 (2025 年 12 月开课 2026 年 6 月结课)》
《课程:AI 大模型工程师全阶课程 (2025 年 10 月开课 2026 年 4 月结课)》
《课程:2026 年最新大模型 Agent 开发系统课 (持续更新)》
《课程:LLM 多模态视觉大模型系统课》
《课程:大模型 AI 应用开发企业级项目实战课 (2026 年 1 月开课)》
《课程:大模型智能体线上速成班 V2.0》
《课程:Java+AI 大模型智能应用开发全阶课》
《课程:Python+AI 大模型实战视频教程》
《书籍:软件工程 3.0: 大模型驱动的研发新范式.pdf》
《课程:人工智能大模型系统课 (2026 年 1 月底完结版)》
《课程:AI 大模型零基础到商业实战全栈课第五期》
《课程:Vue3.5+Electron + 大模型跨平台 AI 桌面聊天应用实战 (2025)》
《课程:AI 大模型实战训练营 从入门到实战轻松上手》
《课程:2026 年 AI 大模型 RAG 与 Agent 智能体项目实战开发课》
《课程:大模型训练营配套补充资料》

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐