重生之点亮Agent技术栈--agent

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

Agent到底是什么?

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

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

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

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

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

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

RAG

RAG是什么?

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

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

为什么需要RAG?

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

比如字节的coze支持本地文档、自定义、在线数据等,如下图所示:

怎么处理的?

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

创建第一个agent [基于Langchain]

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

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

print(response)

得到的结果:

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

python 复制代码
@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)

得到的结果:

其他

工作范式

  • CoT:Chain of Thought思维链
    • Zero-shot CoT 在prompt的后面加一句让我们一步步思考
    • Few-shot CoT 按照指定的推理模板输出
  • 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.在正确的时机给
相关推荐
小四的小六1 小时前
我用什么技术做了TLDR Scholar?
typescript·ai编程
鼎道开发者联盟1 小时前
跳出传统 RAG!用 LLM Wiki 构建闭环式产品 Agent 协作体系
agent·rag·hermes·llmwiki
码途漫谈1 小时前
让 Coding Agent 记得住:agentmemory 的长期记忆系统拆解
开源·ai编程
Code_流苏2 小时前
DeepSeek V4 Flash测评:更快、更省,日常体验依旧很稳!
ai·agent·深度求索·日常体验·deepseek v4·高效模型
m0_634666732 小时前
ViMax 为什么会冲上 GitHub Trending:AI 视频生成开始从“出片”转向“制片”
人工智能·github·ai编程
彦为君2 小时前
JavaSE-05-字符串(全面深入)
java·开发语言·python·ai·ai编程
想ai抽3 小时前
hermes-kanban-技术架构学习与调研
ai·agent·hermes
HIT_Weston3 小时前
89、【Agent】【OpenCode】glob 工具提示词(参数内容)
人工智能·agent·opencode