Agent 开发的三重境界:从 API 调用到自主智能
详细阐述了 Agent 开发的三个演进阶段。第一阶段将 LLM 视为理解语义的 API,侧重于文本生成与总结,依赖提示词工程;第二阶段将 LLM 作为自然语言编程工具,通过 Function Calling 实现工具调用与流程自动化;第三阶段则是真正的智能体开发,采用多 Agent 协作、规划与执行模式,模拟人类团队工作流。文章提供了各阶段的 Python 代码示例与技术架构分析,帮助开发者理解从基础集成到自主智能应用的完整技术路径。

详细阐述了 Agent 开发的三个演进阶段。第一阶段将 LLM 视为理解语义的 API,侧重于文本生成与总结,依赖提示词工程;第二阶段将 LLM 作为自然语言编程工具,通过 Function Calling 实现工具调用与流程自动化;第三阶段则是真正的智能体开发,采用多 Agent 协作、规划与执行模式,模拟人类团队工作流。文章提供了各阶段的 Python 代码示例与技术架构分析,帮助开发者理解从基础集成到自主智能应用的完整技术路径。

在人工智能领域,**Agent(智能体)**的开发是一个不断演进的过程。它不仅仅是将 AI 技术与实际应用相结合,更是关于如何赋予软件实体感知、决策和行动的能力,以提高效率、增强用户体验并推动业务创新。
Agent 可以被理解为一种具有一定智能的软件实体,它能够自主地执行任务、做出决策并与其他系统交互。随着大语言模型(LLM)能力的爆发,Agent 的概念已经从科幻小说走进了现实世界。本文将深入探讨 Agent 开发的三个阶段,从基础的 API 使用到复杂的智能应用开发,逐步解析其技术内涵与实现路径。
在 Agent 开发的初级阶段,我们可以将大语言模型视为一种能理解自然语言的 API。这意味着,开发者像调用任何传统 RESTful API 一样,向 Agent 发送请求,并期望得到一个经过理解和处理的响应。
在这个阶段开发的智能体,大多是在传统软件业务流程中嵌入 LLM 的能力,对软件功能进行增强。对 LLM 的使用局限在其对自然语言的理解能力上,应用场景主要集中在文本生成、总结、翻译等方面。与传统软件开发调用各类工具 API 的模式并无明显区别,主要依赖提示词工程(Prompt Engineering)来引导模型输出。
我们可以将 Agent 作为一个内容生成器,输入视频的关键信息(如主题、关键词、目标受众),Agent 则能够根据这些信息生成吸引人的文案。这个过程可以看作是将 Agent 作为一个文本生成 API 来使用。
另一个典型的应用场景是新闻内容的自动总结。Agent 可以接收大量的新闻数据,然后通过自然语言理解能力,提炼出关键信息,生成一份简洁的新闻日报。结合网页信息获取工具,可以实现自动化信息聚合。
在此阶段,开发者在 AI 领域只需要熟悉自然语言处理(NLP)的基本原理,在 AI 工程上用到最多的也限于提示词优化。以下是基于 Python 和 Requests 库调用 LLM API 的基础示例:
import requests
import json
def generate_content(topic, keywords):
url = "https://api.example.com/v1/chat/completions"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4-turbo",
"messages": [
{"role": "system", "content": "你是一个专业的文案创作者。"},
{"role": "user", "content": f"请为关于'{topic}'的视频写一段文案,包含关键词:{keywords}"}
],
"temperature": 0.7,
"max_tokens": 500
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.json()['choices'][0]['message']['content']
# 调用示例
copy = generate_content("科技趋势", "AI, 区块链, 元宇宙")
print(copy)
在这一阶段,Agent 的开发主要集中在如何更好地理解和处理自然语言上。开发者需要关注上下文窗口限制、Token 成本以及 Prompt 的鲁棒性。
在第二阶段,Agent 不再仅仅是一个理解语言的 API,而是一个可以进行自然语言编程的工具。这意味着,开发者可以通过自然语言来指导 Agent 完成更复杂的任务,甚至让 Agent 自己编写代码或调用外部工具。
在这个阶段开发的智能体,不再局限于文本理解的场景。通过提示词工程、Function Calling 等方式,能够让大语言模型按提示要求格式化输出内容,进而在一定程度上能够重塑传统软件业务流程的多个环节。这可以说是通过 LLM 进行自然语言编程应用。
在这个场景中,Agent 接收多个数据表,然后通过自然语言提示,自动进行数据汇总和去重,最终输出一份整洁的汇总表。使用 LangGraph 的流程编排,可以实现结合数据处理、过滤、去重、汇总的数据流。
通过 AI 执行意图识别,Agent 可以在某些业务流程中减少人工审核环节,自动识别并推动流程的执行。例如,在客服系统中,Agent 可以自动判断用户意图,调用相应的知识库或工单系统。
为了实现这一阶段的功能,开发者需要掌握提示词工程和 Function Calling 等技术。这些技术允许开发者通过自然语言来定义工具函数,并让 LLM 决定何时调用。以下是基于 LangChain 的 Function Calling 示例:
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
from langchain.utilities import GoogleSearchAPIWrapper
# 定义工具函数
def get_weather(city: str) -> str:
# 模拟天气查询逻辑
return f"{city} 的天气晴朗,温度 25 度。"
# 注册工具
tools = [
Tool(
name="Weather",
func=get_weather,
description="用于查询城市天气情况"
)
]
# 初始化 Agent
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
# 运行 Agent
response = agent.run("北京今天的天气怎么样?")
print(response)
在这一阶段,开发者需要设计清晰的工具接口,确保 LLM 能够准确理解工具的参数和返回值。状态管理(State Management)变得尤为重要,因为 Agent 可能需要记住之前的对话历史以维持上下文连贯性。
在 Agent 开发的第三阶段,Agent 被真正当作一个智能体来使用。这时,Agent 不再只是一个简单的 API 或者工具,而是成为了一个具有自主决策能力的智能伙伴。
这个阶段的智能体开发,与大家理解的AI 原生应用开发大体相同。虽然 AI 原生应用也没有一个规范统一的定义,但这个阶段的应用开发与传统软件开发的思维方式确实是完全不同了。LLM 被真正当作智能来使用,而非仅仅是计算引擎。
在软件开发时,更多要思考的是,这个事情如果是由一个人类团队来执行:
可以看到,这个阶段 LLM 不再作为 API 独立存在,而是绑定了角色和技能,并需要进行多个 Agent 的组合,已经与人类智能的使用方式一致。
Plan-and-Execute 指的是涉及规划与执行两个主要步骤的过程。Agent 需要根据给定的目标自主生成计划,并基于计划步骤自动执行任务。这要求 Agent 具备理解计划、制定策略并执行任务的能力。
例如,如果给定的任务是'计划一次从北京到上海的旅行',那么 LLM 的'规划'步骤可能包括确定旅行日期、选择交通方式、预订住宿和活动等,而'执行'步骤则可能涉及生成详细的行程安排和必要的预订步骤。
BabyAGI 是一个由开发者 Yohei Nakajima 创建的 AI 驱动的任务管理系统。它利用 OpenAI 和 Pinecone APIs 来创建、优先排序和执行任务。在这种架构下,不同的 Agent 扮演不同的角色,如'任务创建者'、'任务执行者'和'任务评估者',它们通过共享的状态空间进行协作。
多 Agent 系统通常涉及复杂的图结构编排。以下是一个简化的 LangGraph 多 Agent 协作伪代码框架:
from langgraph.graph import StateGraph, END
from typing import TypedDict
class AgentState(TypedDict):
messages: list
current_task: str
completed_tasks: list
# 定义节点函数
def planner(state: AgentState):
# 分析当前状态,生成下一步计划
new_plan = state['current_task'].split()
return {"messages": [f"Planner: {new_plan}"], "completed_tasks": []}
def executor(state: AgentState):
# 执行具体任务
result = "Task Executed"
return {"messages": [f"Executor: {result}"], "completed_tasks": [state['current_task']]}
# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("planner", planner)
workflow.add_node("executor", executor)
workflow.set_entry_point("planner")
workflow.add_edge("planner", "executor")
workflow.add_conditional_edges("executor", lambda x: END if len(x['completed_tasks']) > 0 else "planner")
app = workflow.compile()
# 运行
result = app.invoke({"messages": [], "current_task": "Write a report", "completed_tasks": []})
在这一阶段,开发者需要考虑的是如何将 Agent 与人类团队的工作方式相结合。这涉及到角色限定、技能绑定、状态设置以及工作流程的设置等多个方面。系统的可解释性和调试难度也会显著增加。
Agent 开发的三重境界代表了 AI 技术从简单应用到深度融合的演进过程。随着技术的不断进步,我们有理由相信,Agent 将在未来的软件开发中扮演越来越重要的角色。
对于程序员而言,理解并掌握 Agent 开发的这三个阶段,将有助于他们更好地适应未来的技术发展趋势。从简单的 API 调用开始,逐步过渡到工具化编程,最终实现自主智能体的构建,这是一条充满挑战但也极具价值的技术路径。未来的软件系统将不再是静态的代码集合,而是动态的、能够自我演进的智能生态系统。
在实践过程中,开发者应持续关注社区的最新进展,如 LangChain、LangGraph、AutoGen 等框架的更新,同时注重系统的安全性、隐私保护以及成本控制。只有将技术深度与业务场景紧密结合,才能真正发挥 Agent 的价值。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online