协同模式的范式追问
2022年末ChatGPT横空出世以来,生成式AI的能力边界被不断刷新。然而,一个根本性问题始终悬而未决:人类与AI究竟应以何种方式协同工作?
当前业界存在两种极端倾向:一是将AI神化为全能替代者,二是将AI矮化为高级搜索引擎。这两种认知都偏离了技术本质——生成式AI不是单纯的工具,也不是独立的智能体,而是人类认知能力的“外脑扩展”。正如麦克卢汉所言:“媒介是人的延伸”,生成式AI延伸的恰恰是人类大脑皮层的符号处理能力。
那么,这种延伸究竟以何种机制实现?本文提出的三级演进框架试图回答这一问题:
-
Embedding模式:AI作为“记忆外挂”,解决大模型知识滞后性问题
-
Copilot模式:AI作为“思维副驾”,解决复杂任务的结构化执行问题
-
Agents模式:AI作为“协作队友”,解决多角色、长流程任务的动态协调问题
这三个模式并非简单的版本迭代,而是人类控制权逐步下放、AI自主性逐步增强的连续谱系。理解这一谱系,是设计下一代人机协作系统的前提。

技术演进的历史逻辑:为什么需要三种模式?
基础模型的固有局限
要理解人机协同模式的必要性,首先需审视大语言模型自身的“先天缺陷”:
第一,知识时效性困境。GPT-4的训练数据截止于2023年10月,当用户询问“2024年巴黎奥运会金牌榜”时,模型只能“一本正经地胡说八道”。这种静态知识与动态世界之间的矛盾,决定了单纯依赖模型参数无法满足实时性需求。
第二,推理过程的不可控性。大模型的推理是“端到端”的黑箱过程——输入提示词,输出结果,中间发生了什么无人知晓。在金融风控、医疗诊断等高风险场景,这种不可解释性构成了致命的信任障碍。
第三,单次交互的能力天花板。复杂任务(如“开发一款App”或“写一本20万字的科幻小说”)无法在一次对话中完成。模型缺乏任务分解、进度追踪、多角色协作的内在机制。
第四,工具使用的“手”缺失。语言模型只能输出文本,无法直接操作API、查询数据库、发送邮件。它像一位只有大脑没有四肢的天才,想法丰富却无法行动。
人机协同的三次技术突围
针对上述局限,技术社区分别给出了三种解决方案,恰好对应本文的三个模式:
| 知识滞后 | 外部知识库检索 | Embedding模式 | 检索增强生成(RAG) |
| 黑箱推理 | 结构化中间表示 | Copilot模式 | 思维链(CoT)+工具调用 |
| 单次上限 | 多角色分工协作 | Agents模式 | 多智能体+人类监督 |
这三种方案呈现出清晰的技术演进脉络:从“给AI喂资料”到“带AI做任务”再到“和AI组团队”。
模式一:Embedding模式——人类主导的增强检索
核心思想:把知识库还给AI
Embedding模式的核心机制是检索增强生成(Retrieval-Augmented Generation, RAG)。其基本逻辑是:当用户提出问题时,系统首先从外部知识库中检索与问题最相关的文本片段,然后将这些片段作为“参考资料”连同问题一起提交给大模型,由模型基于参考资料生成答案。(扩展阅读:从开卷考试到智能思辨:RAG技术演进全景透析)
这一模式的本质是“先查后答”,它解决了大模型的两个根本问题:
-
知识新鲜度:外部知识库可以实时更新,无需重新训练模型
-
事实准确性:模型回答有据可查,大幅降低“幻觉”风险
在权重占比上,Embedding模式呈现人类主导(80%)+AI辅助(20%)的格局。人类负责知识库的建设与维护,AI负责语义匹配和语言生成。
技术架构演进
Embedding模式的架构经历了三个发展阶段:
1.0阶段:朴素检索。用户问题直接用于关键词搜索,搜索结果拼接后送入模型。这种方式忽略了语义匹配,效果欠佳。
2.0阶段:向量检索。引入Embedding模型,将用户问题和知识库文档都转换为高维向量,通过向量相似度实现语义级别的匹配。这是当前主流方案。
3.0阶段:混合检索+重排序。结合关键词匹配(BM25)和向量检索,对多路召回结果使用Cross-Encoder进行重排序,进一步提升检索精度。
下图展示了Embedding模式的典型架构:

生活案例:企业新员工助手
场景:某跨国公司的入职培训部门发现,新员工前三个月平均每天花费1.5小时在内部系统查找制度文件——差旅报销标准是什么?年假怎么申请?VPN连不上怎么办?
解决方案:构建基于Embedding模式的智能问答助手。
实现过程:
将HR手册、IT指南、财务制度等1000+份文档分块处理
使用OpenAI的text-embedding-3-small模型生成向量
向量存入Chroma数据库
当新员工提问“海外出差伙食补助标准”时,系统检索相关条款
大模型基于检索结果生成精准答案并注明出处
效果:问题平均解决时间从1.5小时降至3分钟,准确率达94%。
代码示例:基于LangChain的RAG实现
# ============================================================
# Embedding模式实战:企业知识库问答系统
# 技术栈:LangChain + OpenAI + Chroma
# 核心流程:文档加载→文本分块→向量化→检索→生成
# ============================================================
import os
from dotenv import load_dotenv
from langchain.document_loaders import DirectoryLoader, TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
# 加载环境变量(设置OPENAI_API_KEY)
load_dotenv()
# ========== 第一阶段:知识库构建 ==========
print("正在加载企业文档…")
# 加载指定目录下的所有txt和md文件
loader = DirectoryLoader(
'./company_docs',
glob="**/*.{txt,md,pdf}",
loader_cls=TextLoader,
loader_kwargs={'encoding': 'utf-8'}
)
documents = loader.load()
print(f"已加载 {len(documents)} 个文档")
# 文本分块:将长文档切分为适合检索的片段
# chunk_size=500: 每个块500字符;chunk_overlap=50: 块间重叠50字符,保持语义连贯
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\\n\\n", "\\n", "。", ",", " ", ""]
)
docs = text_splitter.split_documents(documents)
print(f"分割为 {len(docs)} 个文本块")
# 生成向量嵌入并存入向量数据库
# OpenAIEmbeddings 使用 text-embedding-ada-002 模型
embeddings = OpenAIEmbeddings()
# Chroma 是轻量级向量数据库,支持本地持久化
vectordb = Chroma.from_documents(
documents=docs,
embedding=embeddings,
persist_directory="./chroma_db" # 持久化存储,避免重复嵌入
)
vectordb.persist()
print("向量数据库构建完成")
# ========== 第二阶段:问答系统构建 ==========
# 自定义提示模板:强调基于检索结果回答,避免模型自由发挥
prompt_template = """
你是一个专业的企业知识库助手。请基于以下检索到的参考资料回答问题。
如果参考资料中没有相关信息,请直接说明“未找到相关信息”,不要自行编造。
在回答末尾,请注明参考的文档名称。
参考资料:
{context}
问题:{question}
回答要求:
1. 准确、简洁
2. 如有数据或标准,尽量引用原文
3. 注明参考文档
回答:
"""
PROMPT = PromptTemplate(
template=prompt_template,
input_variables=["context", "question"]
)
# 创建检索问答链
# 使用 gpt-3.5-turbo 平衡成本与效果
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
# RetrievalQA 链封装了“检索+生成”的完整流程
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # 将所有检索结果一次性送入模型
retriever=vectordb.as_retriever(search_kwargs={"k": 3}), # 检索最相似的3个块
chain_type_kwargs={"prompt": PROMPT},
return_source_documents=True # 返回参考文档便于溯源
)
# ========== 第三阶段:交互测试 ==========
def ask_question(query):
"""封装问答函数"""
print(f"\\n用户提问:{query}")
print("-" * 50)
result = qa_chain({"query": query})
print(f"AI回答:{result['result']}")
print("\\n参考文档:")
for doc in result['source_documents']:
print(f" – {doc.metadata.get('source', '未知')}")
return result
# 测试几个典型问题
ask_question("公司的年假政策是怎样的?")
ask_question("如何申请差旅报销?")
ask_question("VPN连接不上怎么办?")
# 输出示例:
# 用户提问:公司的年假政策是怎样的?
# ————————————————–
# AI回答:根据《员工手册》第三章第5条,公司年假政策如下:
# 1. 入职满1年员工享有5天带薪年假
# 2. 工龄每增加1年,年假增加1天,上限15天
# 3. 年假需提前3个工作日通过HR系统申请
#
# 参考文档:
# – ./company_docs/员工手册_2024版.txt
技术深度:向量检索的优化策略
在生产环境中,简单的向量检索往往难以满足要求,需要引入以下优化:
混合检索(Hybrid Search):结合关键词匹配(BM25)的精确性和向量检索的语义性。当用户搜索“苹果17”时,BM25确保命中包含“iPhone17”的文档,向量检索则能召回讨论“新款手机”的相关内容。
重排序(Re-ranking):向量检索返回的top-k结果可能存在噪声,使用Cross-Encoder模型对候选结果进行二次打分,可以显著提升精度。例如,Cohere的Rerank模型可将首位命中率提升15-20%。
查询扩展(Query Expansion):对用户问题进行同义词扩展或上下文增强。当用户问“如何请假”时,系统自动扩展为“年假申请、病假流程、事假规定”等多路查询。
索引分层(Hierarchical Index):对海量文档建立多层索引结构,近期文档使用精确索引,历史文档使用压缩索引,平衡检索速度与存储成本。
模式二:Copilot模式——人机协同的增强推理
核心思想:从问答到共事
如果说Embedding模式解决的是“AI知道什么”,Copilot模式解决的是“AI能做什么”。Copilot的核心机制是思维链(Chain-of-Thought, CoT)与工具调用(Function Calling)的结合。(扩展阅读:思维链(CoT)的演进与创新:Few-Shot与Zero-Shot架构设计深度解析、MCP vs Function Calling:重构AI工具交互范式的技术真相、MCP、Function Calling与Agent:构建AI协作生态的三层架构体系)
在Copilot模式下,AI不再满足于一次性回答,而是将复杂任务分解为多个步骤,逐步推理,必要时调用外部工具(计算器、代码解释器、API等),并将中间结果呈现给用户,接受人类的干预和调整。
在权重占比上,Copilot模式呈现人机平衡(50%-50%)的格局。AI负责结构化任务分解和执行,人类负责关键决策和结果验收。
从AutoGPT到Copilot的演进
2023年AutoGPT的出现曾引发轰动——它能够自主设定子目标、编写提示词、循环执行任务。然而,AutoGPT很快暴露出致命问题:一旦偏离轨道,就会持续在错误路径上越走越远,且中间过程完全不可控。
Copilot模式吸取了这一教训,引入“人在回路”(Human-in-the-Loop)机制:
-
关键节点暂停:在执行到需要人类决策的步骤时,主动请求确认
-
中间结果可视化:将推理过程和中间结果以可理解的方式呈现
-
灵活干预:人类可以随时修改计划、纠正方向
下图展示了Copilot模式的人机协作流程:

生活案例:数据分析副驾
场景:市场部经理需要分析过去一年的销售数据,找出区域增长差异、产品线表现、季节性规律,并生成可视化报告。传统方式需要手动处理Excel、编写Python代码、制作PPT,耗时3-5天。
Copilot解决方案:
经理提出需求:“分析2025年销售数据,按区域和产品线维度,识别增长最快的三个细分市场”
Copilot自动理解需求,编写Python代码读取数据、进行聚合计算
执行代码后,Copilot呈现中间结果:“已计算出各区域增长率,华东区25%最高,是否需要深入分析驱动因素?”
经理指示:“深入分析华东区,看哪些产品增长最快”
Copilot继续编写代码进行细分分析,生成图表
最终Copilot整合分析结果,生成带有数据图表和文字结论的Markdown报告
整个过程从3天缩短到30分钟,且每一步都可追溯、可干预。
代码示例:数据分析Copilot核心实现
# ============================================================
# Copilot模式实战:数据分析副驾
# 核心能力:任务分解 + 代码生成 + 工具执行 + 人类确认
# 技术栈:LangChain + OpenAI Function Calling + Python REPL
# ============================================================
import os
import pandas as pd
import matplotlib.pyplot as plt
from typing import List, Dict, Any
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain.tools import tool, StructuredTool
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.chat_models import ChatOpenAI
from langchain.schema import SystemMessage, HumanMessage, AIMessage
# ========== 定义工具:数据分析的核心能力 ==========
@tool
def execute_python_code(code: str) -> str:
"""
执行Python代码并返回结果。
用于数据加载、清洗、分析和可视化。
代码中打印的内容将被捕获并返回。
"""
# 注意:生产环境应使用安全的沙箱执行环境
# 此处简化实现,仅用于演示概念
local_vars = {
'pd': pd,
'plt': plt,
'df': None # 可在代码中加载数据
}
try:
# 捕获print输出
from io import StringIO
import sys
old_stdout = sys.stdout
redirected_output = StringIO()
sys.stdout = redirected_output
exec(code, {}, local_vars)
sys.stdout = old_stdout
output = redirected_output.getvalue()
# 检查是否生成了图表
figures = plt.get_fignums()
if figures:
# 保存图表到文件
plt.savefig('output_chart.png')
plt.close('all')
output += "\\n[图表已保存为 output_chart.png]"
return output if output else "代码执行成功,无输出。"
except Exception as e:
return f"代码执行错误:{str(e)}"
@tool
def load_data(file_path: str) -> str:
"""
加载数据文件(CSV/Excel)并返回基本信息。
包括数据形状、列名、前几行示例。
"""
try:
if file_path.endswith('.csv'):
df = pd.read_csv(file_path)
elif file_path.endswith(('.xlsx', '.xls')):
df = pd.read_excel(file_path)
else:
return "不支持的文件格式"
# 生成数据概要
info = f"数据加载成功!\\n"
info += f"形状:{df.shape[0]}行 × {df.shape[1]}列\\n"
info += f"列名:{', '.join(df.columns.tolist())}\\n"
info += f"\\n前3行数据:\\n{df.head(3).to_string()}\\n"
info += f"\\n数据统计信息:\\n{df.describe().to_string()}"
return info
except Exception as e:
return f"数据加载失败:{str(e)}"
@tool
def get_human_input(question: str) -> str:
"""
在关键决策点向人类提问,获取输入。
用于需要人类判断的场景。
"""
print(f"\\n[系统向人类提问] {question}")
response = input("请输入您的回答:")
return response
# ========== 构建Copilot Agent ==========
def create_data_copilot():
"""创建数据分析Copilot"""
# 初始化大模型
llm = ChatOpenAI(model="gpt-4", temperature=0)
# 系统提示词:定义Copilot的角色和行为准则
system_prompt = """
你是一位专业的数据分析Copilot,你的职责是协助用户完成数据分析任务。
工作原则:
1. 任务分解:将复杂分析任务拆解为可执行的步骤
2. 代码生成:使用Python编写数据分析代码,优先使用pandas/matplotlib
3. 主动汇报:在关键步骤完成后,向用户汇报结果并请求指导
4. 工具使用:优先使用提供的工具执行操作,避免虚构结果
5. 解释说明:用通俗易懂的语言解释分析过程和发现
工作流程:
– 首先理解用户需求
– 然后设计分析计划
– 执行每一步时,先向用户说明要做什么
– 执行后呈现结果
– 遇到需要决策的点,使用get_human_input工具征求用户意见
记住:你是副驾,不是司机。最终决策权在用户手中。
"""
prompt = ChatPromptTemplate.from_messages([
("system", system_prompt),
MessagesPlaceholder(variable_name="chat_history"),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad")
])
# 绑定工具
tools = [execute_python_code, load_data, get_human_input]
# 创建Agent
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # 显示详细执行过程
max_iterations=15,
handle_parsing_errors=True
)
return agent_executor
# ========== 交互示例 ==========
def run_copilot_demo():
"""运行Copilot演示"""
copilot = create_data_copilot()
# 初始化对话历史
chat_history = []
# 用户需求
user_request = """
请帮我分析销售数据文件 'sales_2025.csv',完成以下分析:
1. 按区域统计销售额和增长率
2. 找出销售额最高的三个产品
3. 分析是否存在季节性规律
4. 生成可视化图表
每一步完成后请向我汇报,我可能会调整方向。
"""
print("=" * 60)
print("用户需求:")
print(user_request)
print("=" * 60)
# 运行Copilot
result = copilot.invoke({
"input": user_request,
"chat_history": chat_history
})
print("\\n" + "=" * 60)
print("最终分析报告:")
print(result["output"])
print("=" * 60)
# 注意:实际运行时需要有sales_2025.csv文件
if __name__ == "__main__":
run_copilot_demo()
# ========== 执行过程模拟 ==========
#
# 实际执行时,verbose=True会显示详细的Agent思考过程:
#
# > 进入新的AgentExecutor链…
#
# 思考:用户需要分析销售数据,涉及多个维度。我需要先加载数据,了解结构,然后分步执行。
#
# 操作:load_data
# 操作输入:{"file_path": "sales_2025.csv"}
#
# 观察:数据加载成功!形状:3650行 × 8列…
#
# 思考:数据已加载,现在需要按区域统计销售额。我将编写Python代码完成此任务。
#
# 操作:execute_python_code
# 操作输入:{"code": "import pandas as pd\\n\\ndf = pd.read_csv('sales_2025.csv')\\nregion_sales = df.groupby('region')['sales_amount'].sum().sort_values(ascending=False)\\nprint('各区域销售额:\\\\n', region_sales)\\n\\ngrowth = df.groupby('region').agg({'sales_amount': lambda x: x.pct_change().mean()})\\nprint('\\\\n平均增长率:\\\\n', growth)"}
#
# 观察:各区域销售额:…
#
# 思考:我已计算出各区域销售额和增长率。华东区销售额最高,增长最快。接下来应该向用户汇报,并询问是否继续分析产品维度。
#
# 操作:get_human_input
# 操作输入:{"question": "已分析完区域维度,华东区表现最佳。是否继续深入分析华东区的产品表现?还是直接分析整体产品排名?"}
#
# 人类输入:先看整体产品排名吧
#
# 观察:用户选择先看整体产品排名
#
# …
技术深度:Copilot的关键设计模式
思维链可视化:Copilot的中间推理步骤不应隐藏,而应以可理解的方式呈现。OpenAI的“思维链”提示技术表明,让模型“逐步思考”不仅提升准确性,也增强可解释性。
工具调用的函数式设计:工具应有明确的输入输出定义、详细的描述文档,让模型能够理解何时调用、如何调用。OpenAI Function Calling通过JSON Schema定义工具接口,是目前的主流方案。
状态管理与记忆机制:Copilot需要记住对话历史、已执行步骤、中间结果。LangChain的AgentExecutor通过agent_scratchpad维护执行状态,通过chat_history维护对话记忆。
人类干预点设计:关键干预点应预设,而非完全随机。例如在数据加载后、关键计算前、异常发生时,都应主动征求人类意见。
模式三:Agents模式——群体智能的增强协作
核心思想:从单兵作战到团队协作
Agents模式将人机协同推向新高度——不再是“一人一AI”的单线程对话,而是多AI智能体+多人构成的协作网络。每个智能体拥有特定角色(产品经理、工程师、测试员)、专业知识和工具权限,它们通过协商、辩论、投票等方式共同完成任务,人类则作为“团队负责人”进行宏观调度和关键决策。
在权重占比上,Agents模式呈现AI主导(70%)+人类监督(30%)的格局。AI负责微观任务的动态协调与执行,人类负责目标设定、资源分配和最终验收。
从单智能体到多智能体的跃迁
单智能体系统的瓶颈在于能力单一性和上下文容量限制。一个模型既要懂产品设计,又要会写代码,还要能做测试,必然导致各方面都不精。多智能体系统通过分工专业化解决了这一问题——每个智能体专注一个领域,通过协作实现“1+1>2”的群体智能。
另一个关键突破是异步协作机制。传统AI交互是同步的:用户提问→AI回答→用户再提问。而Agents模式下,智能体可以在后台持续工作,人类可以随时查看进度、提供反馈,实现了“边工作边沟通”的类人协作模式。
下图展示了Agents模式的典型架构:

生活案例:跨职能产品开发团队
场景:一家初创公司需要快速开发一个MVP(最小可行产品)——一个基于AI的简历解析工具。传统方式需要产品经理、后端开发、前端开发、测试工程师四人团队协作2-3周。
Agents解决方案:
团队成员配置:
-
产品经理Agent:负责需求澄清、功能拆解、验收标准定义
-
后端工程师Agent:负责API设计、Python/Flask代码编写
-
前端工程师Agent:负责React组件开发、界面交互
-
测试Agent:负责单元测试、集成测试、性能测试
-
文档Agent:负责API文档、使用说明、部署指南
协作流程:
人类负责人下达任务:“开发一个简历解析工具,支持PDF上传,提取姓名、技能、工作经历”
编排器将任务分发给产品经理Agent,后者拆解为需求文档
产品经理Agent将需求分发给后端和前端Agent
后端Agent编写API代码,前端Agent编写界面代码,两者通过群聊协商接口格式
测试Agent持续运行测试,发现Bug后在群聊中@对应开发者
人类负责人可以随时加入群聊查看进度、提供反馈
文档Agent自动生成API文档和用户手册
最终所有成果汇总,人类负责人验收
整个过程仅需2天,且人类只需投入2-3小时进行监督决策。
代码示例:基于AG2的多智能体群聊
# ============================================================
# Agents模式实战:产品开发多智能体团队
# 框架:AG2 (原AutoGen)
# 核心:GroupChat + Orchestrator + 多角色Agent
# ============================================================
import asyncio
from typing import List, Dict, Any
import autogen
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
# ========== 配置大模型 ==========
# 使用GPT-4作为智能体的“大脑”
llm_config = {
"config_list": [
{
"model": "gpt-4",
"api_key": os.environ.get("OPENAI_API_KEY"),
"temperature": 0.7, # 产品经理需要一定创造性
}
],
"timeout": 120,
}
# ========== 定义智能体角色 ==========
# 1. 产品经理Agent
# 职责:理解需求、任务分解、质量验收
product_manager = AssistantAgent(
name="Product_Manager",
system_message="""
你是一名资深产品经理。你的职责包括:
1. 将用户需求转化为清晰的功能规格
2. 将复杂功能拆解为可执行的任务单元
3. 协调不同角色的工作,确保整体一致性
4. 在关键节点进行质量验收
你擅长沟通和协调,需要与其他工程师Agent密切合作。
当任务完成时,请说"TERMINATE"结束对话。
""",
llm_config=llm_config,
)
# 2. 后端工程师Agent
# 职责:API设计、数据库、业务逻辑
backend_engineer = AssistantAgent(
name="Backend_Engineer",
system_message="""
你是一名Python后端工程师,擅长Flask/FastAPI框架。
你的职责包括:
1. 设计RESTful API接口
2. 实现业务逻辑
3. 编写SQLAlchemy模型
4. 确保代码质量和性能
你需要与前端工程师协商接口格式。
在提供代码时,请确保代码可以直接运行。
""",
llm_config=llm_config,
)
# 3. 前端工程师Agent
# 职责:UI实现、交互逻辑、API集成
frontend_engineer = AssistantAgent(
name="Frontend_Engineer",
system_message="""
你是一名React前端工程师,熟悉现代前端技术栈。
你的职责包括:
1. 根据需求设计实现用户界面
2. 调用后端API处理数据
3. 确保良好的用户体验
你需要与后端工程师确认API格式。
提供代码时应包含必要的依赖说明。
""",
llm_config=llm_config,
)
# 4. 测试工程师Agent
# 职责:编写测试用例、执行测试、报告Bug
test_engineer = AssistantAgent(
name="Test_Engineer",
system_message="""
你是一名QA测试工程师,对质量有偏执的要求。
你的职责包括:
1. 为每个功能编写单元测试和集成测试
2. 执行测试并报告发现的问题
3. 在群聊中@相关的开发者讨论Bug
发现问题时,请清晰描述复现步骤和预期行为。
""",
llm_config=llm_config,
)
# 5. 人类用户代理
# 代表人类参与群聊,可以随时提供输入
human = UserProxyAgent(
name="Human_Boss",
human_input_mode="ALWAYS", # 每次轮到该Agent发言时都请求人类输入
code_execution_config=False, # 人类不执行代码
system_message="你是团队负责人,可以在关键节点提供决策。",
)
# ========== 构建群聊团队 ==========
def create_dev_team(task: str):
"""
创建产品开发团队并启动任务
"""
# 定义群聊成员
agents = [
human,
product_manager,
backend_engineer,
frontend_engineer,
test_engineer,
]
# 创建群聊
# max_round: 最大对话轮次,防止无限循环
# speaker_selection_method: 发言者选择方式,auto让模型自动选择
groupchat = GroupChat(
agents=agents,
messages=[],
max_round=50,
speaker_selection_method="auto", # 让模型动态决定谁应该发言
allow_repeat_speaker=False, # 避免同一人连续发言
)
# 群聊管理器:负责协调整个对话流程
manager = GroupChatManager(
groupchat=groupchat,
llm_config=llm_config,
system_message="你是一个高效的团队协调者,确保任务按计划推进。",
)
# 人类发起初始任务
human.initiate_chat(
manager,
message=task,
)
return groupchat
# ========== 运行示例 ==========
if __name__ == "__main__":
# 定义开发任务
task = """
我们需要开发一个简历解析工具的MVP版本。具体要求:
功能需求:
1. 支持用户上传PDF格式的简历文件
2. 自动解析出以下信息:姓名、邮箱、技能列表、工作经历(公司+职位+时间段)
3. 以结构化JSON格式展示解析结果
4. 提供简单的Web界面用于上传和查看结果
技术栈:
– 后端:Python + Flask
– 前端:React
– 数据库:SQLite(用于存储解析记录)
请团队协作完成,我会在关键节点提供反馈。
"""
print("=" * 70)
print("启动产品开发团队,任务:简历解析工具MVP")
print("=" * 70)
# 启动团队协作
create_dev_team(task)
# 执行过程中,人类可以随时输入:
# – "继续" 让对话继续
# – "暂停" 暂时停止
# – 具体反馈如"前端界面需要更简洁"
# ========== 增强版:带RAG能力的多智能体 ==========
class EnhancedDevTeam:
"""
增强版开发团队:支持检索外部知识库
使用RetrieveUserProxyAgent让智能体能够查阅文档
"""
def __init__(self):
# 创建RAG能力的助手代理
self.rag_assistant = RetrieveUserProxyAgent(
name="RAG_Assistant",
human_input_mode="NEVER",
max_consecutive_auto_reply=3,
retrieve_config={
"task": "qa",
"docs_path": "./reference_docs", # 存放技术文档、API手册等
"chunk_token_size": 1000,
"model": "gpt-4",
"collection_name": "dev_docs",
"get_or_create": True,
},
code_execution_config=False,
description="拥有检索技术文档能力的助手,可以为团队提供参考信息。",
)
# 创建带工具的Agent
self.coder_with_tools = autogen.AssistantAgent(
name="Coder_With_Tools",
system_message="你可以编写和执行代码来解决问题。",
llm_config={
**llm_config,
"functions": [
{
"name": "search_documentation",
"description": "在技术文档中搜索相关信息",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "搜索关键词",
}
},
"required": ["query"],
},
}
],
},
)
def create_groupchat_with_rag(self, task: str):
"""
创建带有RAG能力的群聊
参考AG2官方文档中的群聊RAG示例
"""
def search_docs(query: str) -> str:
"""调用RAG助手搜索文档"""
# 实际实现会调用rag_assistant
return f"关于 '{query}' 的文档检索结果"
# 注册函数
self.coder_with_tools.register_function(
function_map={"search_documentation": search_docs}
)
# 群聊成员
agents = [human, product_manager, self.coder_with_tools, test_engineer]
groupchat = GroupChat(
agents=agents,
messages=[],
max_round=50,
speaker_selection_method="round_robin", # 轮流发言,更易于调试
)
manager = GroupChatManager(
groupchat=groupchat,
llm_config=llm_config,
)
human.initiate_chat(manager, message=task)
技术深度:Agents模式的核心设计
Orchestrator设计模式:在多智能体系统中,Orchestrator(编排器)是关键组件。它负责任务规划、步骤调度、状态追踪和异常处理。微软的Magentic-One框架将Orchestrator设计为“规划-执行-验证”循环的核心。
群聊通信协议:智能体间的通信需有明确协议。AG2的GroupChat基于消息队列实现异步通信,每个智能体可以订阅特定主题的消息。Cloudflare的Agents SDK则使用WebSocket实现实时双向通信。
记忆与状态管理:多智能体系统的状态复杂度呈指数级上升。需要设计分层记忆机制:短期记忆(当前对话轮次)、中期记忆(当前任务上下文)、长期记忆(跨任务的持久化知识)。
人机交互接口:人类如何与多智能体团队交互是关键问题。当前最佳实践是“异步参与”——人类不必全程在线,可在关键节点(如需要决策、出现异常)被主动通知。
三种模式的对比与演进逻辑
核心维度对比
下表从多个维度对比三种协同模式:
| 核心机制 | 检索增强生成 | 思维链+工具调用 | 多智能体协作 |
| AI自主性 | 低(被动响应) | 中(半自主) | 高(主动协作) |
| 人类参与度 | 高(建设知识库) | 中(节点决策) | 低(宏观监督) |
| 任务复杂度 | 单轮问答 | 多步骤任务 | 长流程复杂项目 |
| 状态管理 | 无状态 | 会话状态 | 分布式持久化 |
| 工具使用 | 无需 | 按需调用 | 多工具协同 |
| 典型应用 | 知识库问答 | 数据分析/编程 | 产品开发/研究 |
| 权重占比 | 人80% AI20% | 人50% AI50% | 人30% AI70% |
演进逻辑:控制权的逐步让渡
三种模式呈现出清晰的演进脉络:人类控制权逐步下放,AI自主性逐步增强。
在Embedding模式中,AI是被动的知识检索器,人类主导知识库建设和问题定义。这是“人在回路之上”——AI只是工具,不参与决策。
在Copilot模式中,AI成为主动的推理执行者,人类在关键节点保留决策权。这是“人在回路之中”——人类与AI共同完成认知任务。
在Agents模式中,AI群体成为自主的协作网络,人类退居监督者角色。这是“人在回路之外”——人类设定目标,AI团队自行组织实现。
这种演进并非线性替代,而是分层共存——复杂系统往往同时包含三种模式:底层用Embedding接入知识库,中层用Copilot执行具体任务,顶层用Agents进行全局协调。
未来展望:通向“群智共生”
当前Agents模式仍处于早期阶段,面临三大挑战:
社交智能缺失:AI难以理解人类团队中的权力关系、文化差异、情感动态。在高语境文化(如日本)中,AI的直白发言可能被视为失礼。
长期记忆碎片化:多智能体系统难以形成对用户偏好的长期理解,每次任务都需重新建立上下文。
信任与可解释性:当多个AI自主协作时,人类难以追踪决策链条,形成“黑箱协作”风险。
未来的演进方向将是“群智共生”——人类与AI群体形成动态的能力互补网络,AI理解社交规范,人类理解AI的决策逻辑,双方在持续互动中建立信任。Rekimoto团队提出的MermaidLLM尝试通过生成可视化的数据流图,让AI的推理过程变得可理解和可验证,这正是解决可解释性问题的重要探索。
生成式AI人机协同的三级演进,本质上是人类认知能力的外化和增强过程。Embedding模式增强记忆,Copilot模式增强推理,Agents模式增强协作——三者共同构成了人类智能的“外脑扩展”体系。
理解这一演进逻辑,对于企业构建AI能力、个人提升AI素养都具有指导意义。在具体实践中,应根据任务复杂度、风险敏感度、协作需求等因素,选择合适的协同模式,甚至组合使用多种模式。
人机协同的终极形态不是AI取代人类,也不是人类控制AI,而是人类与AI形成认知共同体——在这个共同体中,人类的创造力、情感理解、价值判断与AI的记忆容量、计算速度、并发能力形成深度互补,共同探索个体无法企及的认知边疆。(扩展阅读:从“指令执行”到“心智协同”:大模型时代人机协作的架构革命与价值重塑)



