从提示词工程到Agent Skill:AI开发者的技术演进指南

1次阅读
没有评论

共计 2481 个字符,预计需要花费 7 分钟才能阅读完成。

image.webp

背景痛点:纯 Prompt 的局限性

刚开始接触 AI 开发时,很多同学和我一样,以为只要写好提示词(Prompt)就能让模型乖乖干活。但实际用起来才发现,纯 Prompt 方案至少有三个致命伤:

从提示词工程到 Agent Skill:AI 开发者的技术演进指南

  • 输出不稳定 :同样的 Prompt,不同时间调用可能得到完全不同的结果,就像抽盲盒
  • 缺乏上下文记忆 :模型每次回复都像第一次聊天,完全不记得之前的对话
  • 功能单一 :无法整合外部工具(比如查数据库、调 API),只能做文本生成

记得我第一次尝试用 GPT 写周报时,明明给了固定模板,但生成的内容忽长忽短,有时还会漏掉关键事项。这就是典型的 Prompt 工程局限性——缺乏确定性和扩展性。

技术演进四大阶段

1. 基础 Prompt 工程

最早的解决方案是优化 Prompt 设计,典型技巧包括:

  1. Few-shot Learning:在 Prompt 中提供输入输出示例
  2. Chain-of-Thought:要求模型展示推理过程

比如想让 AI 解数学题时,可以这样写 Prompt:

 请逐步解答以下问题:Q: 小明有 5 个苹果,吃掉 2 个后妈妈又买了 4 个,现在有多少苹果?A: 首先计算吃掉后的数量:5 - 2 = 3
然后加上新买的:3 + 4 = 7
最终答案是 7

现在请解答:Q: 书包里有 12 本书...

但这种方案仍依赖模型的理解能力,复杂任务时容易出错。

2. 工具增强型(Function Calling)

当 OpenAI 推出 Function Calling 功能后,游戏规则彻底改变。现在我们可以:

  • 定义外部工具(如查询天气、计算器)
  • 让模型自主决定何时调用工具

示例代码(Python):

from openai import OpenAI

client = OpenAI()

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "获取指定城市的天气",
        "parameters": {"city": {"type": "string"}
        }
    }
}]

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "上海今天天气怎么样?"}],
    tools=tools
)

# 模型会返回工具调用请求
print(response.choices[0].message.tool_calls)

3. 记忆与状态管理

通过 Conversation Memory 技术,AI 终于能记住聊天历史了。常用方案:

  1. 短期记忆 :保存最近 N 轮对话
  2. 长期记忆 :用向量数据库存储关键信息

LangChain 的 ConversationBufferWindowMemory 示例:

from langchain.memory import ConversationBufferWindowMemory

memory = ConversationBufferWindowMemory(k=3)  # 记住最近 3 轮
memory.save_context({"input": "我叫张三"}, 
    {"output": "你好张三!"}
)

print(memory.load_memory_variables({}))
# 输出: {'history': 'Human: 我叫张三 \nAI: 你好张三!'}

4. 多 Agent 协作架构

当单个 Agent 搞不定时,可以组建 Agent 团队(Swarms)。比如:

  • 分析师 Agent:负责数据查询
  • 撰稿人 Agent:负责内容生成
  • 审核 Agent:负责质量检查

实战:多步骤 Agent 案例

用 LangChain 实现一个能查天气、做行程建议的 Agent:

from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

# 定义工具(模拟天气查询)def get_weather(city: str):
    return f"{city} 天气:25℃,晴天"

tools = [{
    "name": "get_weather",
    "description": "查询城市天气",
    "parameters": {"city": {"type": "string"}
    }
}]

# 构建 Agent
prompt = ChatPromptTemplate.from_template("你是一个旅行助手,根据天气为用户建议行程。用户输入:{input}"
)
llm = ChatOpenAI(model="gpt-3.5-turbo")
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 执行
result = agent_executor.invoke({"input": "我明天要去北京,应该怎么安排?"})
print(result["output"])

运行后你会看到 Agent 自动执行了这些步骤:
1. 调用 get_weather 查询北京天气
2. 根据天气生成行程建议

生产环境建议

可复用 Skill 设计

  • 模块化 :每个 Skill 应该像乐高积木一样独立(如天气查询、日程生成)
  • 标准化接口 :统一输入输出格式,方便组合
  • 版本控制 :给 Skill 打上语义化版本号

监控决策链

  • 记录 Agent 的完整思考过程(可以用 LangSmith)
  • 关键指标:工具调用准确率、响应延迟、用户满意度

性能考量

不同架构的权衡对比:

方案 延迟 成本 适用场景
纯 Prompt 简单问答
单 Agent+ 工具调用 中等复杂任务
多 Agent 协作 企业级复杂系统

结语

从写 Prompt 到构建智能 Agent,就像从骑自行车到开飞机。虽然复杂度增加,但能解决的问题也呈指数级增长。最后留个思考题:

你认为一个合格的 AI Agent 最应该具备哪三项核心能力? 欢迎在评论区分享你的见解~

正文完
 0
评论(没有评论)