前面写了一篇科普类文章,想必大家也应该知道了一些基本的概念,接下来我们再聊聊Agent。

Agent到底是什么?

当前有一种主流观点:AI应用工程师 = 传统后端的基础上介入LLM,不知道你认不认可?

Agent=大模型LLM + Tool/MCP调用 + 记忆Memory + 规划Planning/Workflow

或者agent = LLM + Harness (大模型负责思考、推理、决策,harness负责稳定、不跑偏、可持久、可恢复)

一个agent完整的执行流程大概如下:

用户输入(需求)
   ↓
LLM 推理(解析需求、判断下一步)
   ↓
是否调用工具?(分支判断)
   ↓
执行工具(调用脚本/接口/浏览器)
   ↓
结果反馈给 LLM(上下文更新)
   ↓
继续推理(循环,直到完成任务)

这里贴张大佬给出的学习建议:

局部截取_20260521_195936.png

RAG

RAG是什么?

检索增强生成,RAG = 检索Retrieval + 增强生成Augmented Generation,核心流程:

用户问题 -> 检索相关文档 -> 将文档作为上下文 -> 大模型生成答案

为什么需要RAG?

大模型是使用公网内容训练出来的,对于公司内部的数据或者资料,它是不清楚不感知的,这个时候就得用RAG了,

比如字节的coze支持本地文档、自定义、在线数据等,如下图所示: 局部截取_20260521_212923.png

怎么处理的?

                                                  用户提问
                                                     ↓
用户输入-> 文本切分 -> 向量嵌入 -> 向量数据库 -> 检索相关文档
                                                     ↓
                                                大模型生成

创建第一个agent [基于Langchain]

client = create_agent(
    model=llm,
    system_prompt="你是一个会使用工具解决问题的助手。",
)

response = client.invoke({
    "messages": [{
    "role": "user",
    "content": "用100个字介绍一下agent"
}]})

print(response)

得到的结果:

局部截取_20260522_003506.png

我们添点东西做成一个有记忆的agent:

@dataclass
class Context:
    """自定义运行时上下文模式。"""
    user_id: str

@tool
def getWeather(city: str) -> str:
    """查询城市天气的本地示例工具。"""
    weather_map = {
        "北京": "晴,25摄氏度",
        "上海": "多云,27摄氏度",
        "广州": "小雨,29摄氏度"
    }
    return weather_map.get(city, "暂未查询到该城市天气")

@tool
def getUserLocation (runtime: ToolRuntime[Context]) -> str:
    """根据用户ID获取用户位置"""
    user_id = runtime.context.user_id
    user_info = runtime.store.get(("users",), user_id)
    if user_info:
        return user_info.value.get("location", "unknown")
    return "unknown"

agent = create_agent(
    model=llm,
    tools=[getWeather, getUserLocation],
    system_prompt="你是一个会使用工具解决问题的助手。",
    checkpointer=checkpointer,
    store=store,
    context_schema=Context
)

result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": "帮我看一下外面的天气"
    }]
}, config={"configurable": {"thread_id": "1"}}, context=Context(user_id="1"))

res = result["messages"]

print(res[-1].content)

得到的结果:

局部截取_20260522_003707.png

其他

工作范式

  • CoT:Chain of Thought思维链 (要求模型输出中间推理步骤,再给最终答案在prompt的后面加一句让我们一步步思考

提示词工程中的还有2种引导策略:

1、Zero-shot 不给任何示例,直接给指令 
2、Few-shot 按照指定的推理模板输出,比如给 2~5 个输入-输出示例,让模型模仿
  • ReAct: Reasoning + Acting,边推理,边执行
    • 核心流程 Though -> Action -> Observation -> Thought -> ... -> 完成
    • 特点:效率低,调用多
  • PlanAct:Plan-and-Execute,先想好全盘,再一步步做
    • 特点:前期规划错,则后面会一错到底
  • Reflection反思,完成后让另一个llm判断

记忆系统

  • 短期记忆(上下文)
  • 长期记忆 (向量库)
  • 用户画像 (偏好)

开源方案:

  1. github.com/usememos/me…
  2. github.com/volcengine/…

安全机制

三层防护:

  1. 权限控制
  2. 操作确认(human-in-the-loop)
  3. 沙箱执行(隔离环境) 如果把所有工具和说明一次性塞给模型,会导致上下文窗口迅速耗尽,注意力也会涣散。解决办法:
  • 渐进式披露
    • 可以先给最少量,触发后再展开
  • 三给原则
    • 1.按需给
    • 2.分层给
    • 3.在正确的时机给