惊爆!提示工程架构师揭秘Agentic AI上下文工程实体识别核心技术
当我们谈论Agentic AI(具身智能/自主代理AI)时,最核心的问题从来不是“它能做什么”,而是“它能理解什么”——毕竟,一个无法准确理解上下文的自主代理,和只会机械执行指令的“工具人”没有本质区别。而实体识别,正是Agentic AI理解上下文的“第一块拼图”:它像一把“信息手术刀”,从用户的输入(文本、语音、图像)中精准提取出关键元素(比如“华为Mate 60 Pro”“订单号123456
Agentic AI上下文工程实战:实体识别的核心技术与提示工程密码
关键词
Agentic AI、上下文工程、实体识别、提示工程、大语言模型(LLM)、知识图谱、意图理解
摘要
当我们谈论Agentic AI(具身智能/自主代理AI)时,最核心的问题从来不是“它能做什么”,而是“它能理解什么”——毕竟,一个无法准确理解上下文的自主代理,和只会机械执行指令的“工具人”没有本质区别。而实体识别,正是Agentic AI理解上下文的“第一块拼图”:它像一把“信息手术刀”,从用户的输入(文本、语音、图像)中精准提取出关键元素(比如“华为Mate 60 Pro”“订单号123456”“充电慢”),为Agent的决策提供最基础的“事实依据”。
但Agentic AI的实体识别,和传统NLP的实体识别有着天壤之别:它需要处理动态上下文(多轮对话中的信息关联)、开放域实体(未预定义的新类型)、歧义消解(“苹果”是水果还是公司?)——这些挑战,传统的CRF、BERT模型已经难以应对。此时,提示工程成为了破局的关键:它不是“调参”,而是“教Agent如何思考”——通过设计精准的提示词,让LLM学会在动态场景中识别实体,甚至自主扩展实体类型。
本文将从提示工程架构师的视角,拆解Agentic AI上下文工程中实体识别的核心逻辑:
- 为什么实体识别是Agentic AI的“地基”?
- 传统实体识别为何无法适配Agentic AI?
- 提示工程如何让LLM成为“实体识别专家”?
- 实战中如何解决实体识别的三大痛点(歧义、动态、多模态)?
一、背景:Agentic AI的“理解危机”与实体识别的价值
1.1 从“工具AI”到“Agentic AI”:理解上下文是本质区别
我们先做个类比:
- 传统AI(比如ChatGPT的基础版)像“餐厅里的传菜员”:你点什么,它传什么,不需要理解“你为什么点这个”(比如你说“要一份番茄鸡蛋面”,它不会问“你是素食主义者吗?”);
- Agentic AI像“餐厅里的资深服务员”:它会听出你话里的“弦外之音”——比如你说“最近减肥,要个清淡的”,它会主动推荐“蔬菜沙拉”,甚至提醒“我们的沙拉酱是低卡的”。
这种“理解能力”的核心,是Agentic AI拥有上下文工程系统:它能将用户的输入(文本、语音、行为)转化为结构化的“上下文信息”,并基于这些信息做决策。而实体识别,就是上下文工程的“第一步”——如果连“用户要的是番茄鸡蛋面”都识别错了,后续的推荐和服务根本无从谈起。
1.2 实体识别:Agentic AI的“信息拼图游戏”
假设你是一个智能客服Agent,用户发来一条消息:
“我昨天买的华为Mate 60 Pro充电很慢,订单号是123456,帮我解决一下。”
你需要从这条消息中提取哪些信息?
- 产品实体:华为Mate 60 Pro(核心服务对象);
- 问题实体:充电很慢(需要解决的核心矛盾);
- 订单号实体:123456(关联用户的购买记录)。
这些实体,就是Agent理解用户需求的“拼图块”:只有把这些拼图正确拼在一起,Agent才能生成准确的决策(比如“查询订单123456的购买记录→确认华为Mate 60 Pro的保修政策→推荐充电慢的排查步骤”)。
如果实体识别错误,会发生什么?
- 把“华为Mate 60 Pro”识别成“华为手机”:Agent可能推荐通用的充电问题解决方案,而忽略Mate 60 Pro的特定硬件特性;
- 漏识别“订单号123456”:Agent需要反复追问用户订单号,降低服务效率;
- 把“充电很慢”识别成“电池损坏”:Agent可能直接引导用户寄修,而实际上用户的问题可能只是“充电器没插紧”。
1.3 传统实体识别的“无力感”:为什么Agentic AI需要新方法?
传统的实体识别(比如基于CRF、BERT的模型)有三个致命缺陷,无法适配Agentic AI的需求:
(1)闭域限制:只能识别预定义的实体类型
传统模型需要提前定义实体类型(比如“人物、地点、组织”),如果遇到未预定义的类型(比如“订单号、问题类型、产品型号”),模型就会“失明”。而Agentic AI需要处理开放域场景——比如电商Agent需要识别“优惠券码”,医疗Agent需要识别“症状描述”,这些都是无法提前穷举的。
(2)缺乏上下文关联:无法处理多轮对话的动态信息
传统模型处理的是“单句文本”,而Agentic AI需要处理多轮对话:比如用户第一次说“我买了个华为手机”,第二次说“它充电很慢”,传统模型无法将“华为手机”和“充电很慢”关联起来,而Agent需要知道“用户的问题是‘华为手机充电慢’”。
(3)歧义消解能力弱:无法处理“一词多义”
比如“苹果”既可以是水果,也可以是公司;“银行”既可以是金融机构,也可以是河边的堤岸。传统模型依赖“局部语境”(比如“吃苹果”→水果),但Agentic AI需要全局上下文(比如用户说“我要谈苹果的合作”→公司)——这种全局理解能力,传统模型很难做到。
二、核心概念解析:用“餐厅故事”讲清楚实体识别与上下文工程
为了让大家更直观理解,我们用“餐厅服务员”的类比,重新定义Agentic AI中的核心概念:
2.1 概念1:Agentic AI = 能“自主思考”的服务员
Agentic AI的核心特征是自主决策循环(Perceive→Plan→Act→Reflect):
- 感知(Perceive):收集用户输入(比如“我要清淡的”);
- 规划(Plan):基于输入和上下文制定策略(比如“推荐蔬菜沙拉”);
- 执行(Act):实施策略(比如“下单蔬菜沙拉”);
- 反思(Reflect):根据结果调整策略(比如“如果用户说沙拉不好吃,下次推荐蒸菜”)。
2.2 概念2:上下文工程 = 服务员的“记忆与经验”
上下文工程是Agentic AI的“大脑后台”,负责管理三类信息:
- 短期上下文:当前对话的即时信息(比如用户刚说的“充电很慢”);
- 长期上下文:用户的历史数据(比如用户之前买过华为手机);
- 领域知识:行业规则(比如华为手机的保修政策)。
而实体识别,就是从“短期上下文”中提取关键信息,存入“长期上下文”的过程——就像服务员把“用户要清淡的”记在小本本上,下次用户来的时候,直接推荐清淡的菜品。
2.3 概念3:实体识别 = 服务员“挑出关键需求”
实体是上下文信息中的“原子单位”——它是不可分割的、有明确意义的信息块。比如:
- 用户说“我要一份番茄鸡蛋面加卤蛋”:
- 主菜实体:番茄鸡蛋面;
- 加菜实体:卤蛋;
- 用户说“我明天要去北京见张三谈苹果的合作”:
- 地点实体:北京;
- 人物实体:张三;
- 公司实体:苹果。
2.4 概念4:提示工程 = 教服务员“怎么听懂话”
提示工程是用自然语言指令,让LLM学会完成特定任务的方法。比如,你想让服务员学会识别“清淡菜品”,可以这样教它:
“如果用户说‘减肥’‘不想吃油’‘要素的’,那他们要的是清淡菜品。比如用户说‘我减肥,要个清淡的’,你要推荐蔬菜沙拉。”
同样,要让LLM学会识别实体,你可以用提示词告诉它:
“请从文本中识别出产品、问题类型、订单号实体。比如文本‘我买的华为手机充电慢,订单号123456’中,产品是‘华为手机’,问题类型是‘充电慢’,订单号是‘123456’。”
2.5 概念关系图:用Mermaid看清楚逻辑链
graph TD
A[Agentic AI] --> B[上下文工程]
B --> C[实体识别]
C --> D[提示工程]
D --> E[大语言模型(LLM)]
B --> F[意图理解]
F --> G[规划决策]
G --> H[执行反馈]
H --> B
解释:
- Agentic AI的核心是上下文工程;
- 实体识别是上下文工程的基础(提取关键信息);
- 提示工程是实体识别的工具(教LLM识别实体);
- 实体识别的结果用于意图理解,进而驱动规划决策和执行反馈;
- 执行反馈会更新上下文工程(比如用户确认“订单号是123456”,Agent会把这个实体存入长期上下文)。
三、技术原理:Agentic AI中实体识别的“底层逻辑”
3.1 传统实体识别vs.Agentic AI实体识别:核心差异
我们用表格对比两者的区别:
维度 | 传统实体识别 | Agentic AI实体识别 |
---|---|---|
实体类型 | 预定义(闭域) | 动态扩展(开放域) |
上下文处理 | 单句文本 | 多轮对话+长期记忆 |
歧义消解 | 局部语境 | 全局上下文+领域知识 |
模型依赖 | CRF、BERT等传统模型 | 大语言模型(LLM)+提示工程 |
3.2 Agentic AI实体识别的技术框架:四步流程
Agentic AI的实体识别不是“单步任务”,而是融入上下文工程的闭环流程,具体分为四步:
步骤1:定义实体类型(Business-Driven)
实体类型必须贴合业务需求——比如:
- 电商Agent:产品、订单号、优惠券码、问题类型;
- 医疗Agent:症状、药物、病史、检查项目;
- 教育Agent:知识点、题目类型、学生水平、错题集。
注意:实体类型不是“固定死的”,而是可以动态扩展的——比如电商Agent新增了“配件”类型,只需要用提示工程告诉LLM“配件是手机的附属产品,比如充电器、耳机”即可。
步骤2:设计提示词(Prompt Engineering)
提示词是LLM识别实体的“说明书”,好的提示词需要包含三个要素:
- 任务描述:明确要做什么(比如“识别产品、问题类型、订单号实体”);
- 示例(Few-Shot):用具体例子让LLM理解要求(比如“文本‘我买的华为手机充电慢,订单号123456’中,产品是‘华为手机’”);
- 输出格式:规定输出的结构(比如JSON格式,方便后续处理)。
示例提示词(电商客服场景):
请从以下文本中识别出指定类型的实体,输出JSON格式:
- 文本内容:{text}
- 需要识别的实体类型:产品、问题类型、订单号
- 要求:
1. 实体必须属于指定类型;
2. 实体边界要准确(比如“华为Mate 60 Pro”是完整产品,不要拆分成“华为”和“Mate 60 Pro”);
3. 没有该类型实体时,不输出。
示例:
文本:我昨天买的小米14屏幕碎了,订单号是789012
输出:{"entities": [{"entity": "小米14", "type": "产品"}, {"entity": "屏幕碎了", "type": "问题类型"}, {"entity": "789012", "type": "订单号"}]}
步骤3:调用LLM识别实体(Model Execution)
用LLM执行提示词,得到实体识别结果。这里需要注意两个点:
- 模型选择:优先选择支持长上下文的模型(比如GPT-4o、Claude 3 Opus),因为Agentic AI需要处理多轮对话的长文本;
- 温度设置:温度(Temperature)越低,输出越稳定(比如设置为0),避免LLM产生“幻觉”(识别出不存在的实体)。
代码示例(用LangChain+GPT-4o实现):
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
# 1. 定义提示模板
entity_prompt = PromptTemplate(
input_variables=["text", "entity_types"],
template="""请从以下文本中识别出指定类型的实体,输出JSON格式:
- 文本内容:{text}
- 需要识别的实体类型:{entity_types}
- 要求:
1. 实体必须属于指定类型;
2. 实体边界要准确;
3. 没有该类型实体时,不输出。
示例:
文本:我昨天买的小米14屏幕碎了,订单号是789012
输出:{"entities": [{"entity": "小米14", "type": "产品"}, {"entity": "屏幕碎了", "type": "问题类型"}, {"entity": "789012", "type": "订单号"}]}
"""
)
# 2. 初始化LLM
llm = ChatOpenAI(
model="gpt-4o",
temperature=0,
api_key="YOUR_API_KEY"
)
# 3. 准备输入
text = "我昨天买的华为Mate 60 Pro充电很慢,订单号是123456,帮我解决一下"
entity_types = "产品、问题类型、订单号"
# 4. 生成提示词
prompt = entity_prompt.format(text=text, entity_types=entity_types)
# 5. 调用LLM
response = llm.invoke([HumanMessage(content=prompt)])
# 6. 解析结果(假设输出是JSON字符串)
import json
entities = json.loads(response.content)
print(entities)
输出结果:
{"entities": [
{"entity": "华为Mate 60 Pro", "type": "产品"},
{"entity": "充电很慢", "type": "问题类型"},
{"entity": "123456", "type": "订单号"}
]}
步骤4:实体验证与上下文更新(Validation & Memory)
LLM的实体识别结果可能存在错误(比如幻觉、边界模糊),因此需要验证:
- 规则验证:比如订单号必须是6位数字,否则标记为错误;
- 知识验证:比如“华为Mate 60 Pro”是否存在(调用产品数据库查询);
- 用户验证:如果无法确定,询问用户(比如“请问你的订单号是123456吗?”)。
验证通过后,将实体存入Agent的上下文记忆(比如用LangChain的ConversationBufferMemory
),用于后续决策:
from langchain.memory import ConversationBufferMemory
# 初始化记忆模块
memory = ConversationBufferMemory()
# 将实体存入记忆
memory.save_context(
inputs={"text": text},
outputs={"entities": entities}
)
# 后续决策时,从记忆中提取实体
print(memory.load_memory_variables({}))
3.3 数学模型:LLM如何“学会”实体识别?
传统实体识别用**条件随机场(CRF)**模型,其核心是计算标签序列的条件概率:
P(y∣x)=1Z(x)exp(∑i=1n∑kλkfk(yi−1,yi,x,i))P(y|x) = \frac{1}{Z(x)} \exp\left( \sum_{i=1}^n \sum_{k} \lambda_k f_k(y_{i-1}, y_i, x, i) \right)P(y∣x)=Z(x)1exp(i=1∑nk∑λkfk(yi−1,yi,x,i))
其中:
- xxx:输入文本序列;
- yyy:标签序列(比如“B-产品”“I-产品”“O”);
- Z(x)Z(x)Z(x):归一化因子(确保概率和为1);
- fkf_kfk:特征函数(比如“第i个词是‘华为’,前一个标签是‘O’”);
- λk\lambda_kλk:特征权重(模型训练得到)。
而LLM(比如GPT-4)用**自注意力机制(Self-Attention)**处理实体识别:
- 将输入文本转化为token嵌入(比如“华为”→[0.1, 0.2, …, 0.9]);
- 通过多头自注意力层计算每个token与其他token的关联(比如“华为”和“Mate 60 Pro”的关联度很高);
- 用线性层+Softmax输出每个token的标签概率:
P(yi=l∣x)=softmax(W⋅hi+b)P(y_i = l | x) = \text{softmax}(W \cdot h_i + b)P(yi=l∣x)=softmax(W⋅hi+b)
其中:
- hih_ihi:第i个token的隐藏状态(自注意力层的输出);
- W,bW, bW,b:可训练参数;
- lll:标签(比如“产品”“问题类型”)。
关键区别:传统CRF需要手动设计特征,而LLM通过自注意力机制自动学习“哪些token属于同一实体”——这也是LLM能处理开放域实体的核心原因。
四、实战:解决Agentic AI实体识别的三大痛点
4.1 痛点1:歧义实体——“苹果”到底是水果还是公司?
问题场景:用户说“我要谈苹果的合作”,LLM可能误判“苹果”是水果。
解决方案:用上下文依赖提示,让LLM结合全局语境判断。
优化后的提示词:
请从文本中识别出公司实体,规则如下:
- 如果文本中提到“合作”“项目”“业务”,则“苹果”是公司;
- 如果提到“吃”“水果”“榨汁”,则“苹果”是水果。
示例:
文本1:我要谈苹果的合作 → 公司实体:苹果
文本2:我买了一箱苹果 → 无公司实体
代码验证:
输入文本:“我要谈苹果的合作”,输出结果:
{"entities": [{"entity": "苹果", "type": "公司"}]}
4.2 痛点2:动态实体——新增“配件”类型怎么办?
问题场景:电商Agent新增“配件”实体类型(比如“充电器”“耳机”),传统模型需要重新训练,而LLM可以用Few-Shot提示快速适配。
提示词设计:
请从文本中识别出产品、配件、订单号实体:
- 产品:手机的主设备(比如华为Mate 60 Pro);
- 配件:手机的附属产品(比如充电器、耳机);
- 订单号:6位数字。
示例:
文本:我买的华为Mate 60 Pro的充电器坏了,订单号是123456 → 产品:华为Mate 60 Pro,配件:充电器,订单号:123456
代码验证:
输入文本:“我买的小米14的耳机没声音,订单号是789012”,输出结果:
{"entities": [
{"entity": "小米14", "type": "产品"},
{"entity": "耳机", "type": "配件"},
{"entity": "789012", "type": "订单号"}
]}
4.3 痛点3:多模态实体——如何识别图片中的实体?
问题场景:用户发送一张“华为Mate 60 Pro充电慢”的照片,同时说“我的手机充不进电”,需要从图片中识别“华为Mate 60 Pro”,从文本中识别“充不进电”。
解决方案:用多模态LLM(比如GPT-4o、Gemini Pro),同时处理文本和图像。
代码示例(用GPT-4o处理多模态输入):
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from PIL import Image
import base64
import io
# 1. 将图片转为Base64编码
def image_to_base64(image_path):
with Image.open(image_path) as img:
buffered = io.BytesIO()
img.save(buffered, format="PNG")
return base64.b64encode(buffered.getvalue()).decode()
# 2. 初始化多模态LLM
llm = ChatOpenAI(model="gpt-4o", api_key="YOUR_API_KEY")
# 3. 准备输入(文本+图片)
text = "我的手机充不进电"
image_base64 = image_to_base64("huawei_mate_60_pro.jpg")
# 4. 构造多模态消息
messages = [
HumanMessage(
content=[
{"type": "text", "text": f"请从文本和图片中识别出产品和问题类型实体:文本是{text}"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_base64}"}}
]
)
]
# 5. 调用LLM
response = llm.invoke(messages)
# 6. 解析结果
print(response.content)
输出结果:
{"entities": [
{"entity": "华为Mate 60 Pro", "type": "产品"},
{"entity": "充不进电", "type": "问题类型"}
]}
4.4 实战案例:智能客服Agent的实体识别全流程
我们用一个完整的案例,展示Agentic AI实体识别的全流程:
场景描述
用户输入:“我昨天买的华为Mate 60 Pro充电很慢,订单号是123456,帮我解决一下。”
步骤1:定义实体类型
- 产品:手机主设备;
- 问题类型:用户的问题描述;
- 订单号:6位数字。
步骤2:设计提示词
如3.2中的示例提示词。
步骤3:调用LLM识别实体
输出结果:
{"entities": [
{"entity": "华为Mate 60 Pro", "type": "产品"},
{"entity": "充电很慢", "type": "问题类型"},
{"entity": "123456", "type": "订单号"}
]}
步骤4:验证实体
- 订单号验证:调用电商系统API,确认123456是有效的订单号;
- 产品验证:查询产品数据库,确认华为Mate 60 Pro存在;
- 问题类型验证:无错误。
步骤5:更新上下文记忆
将实体存入Agent的记忆模块,用于后续决策:
memory.save_context(
inputs={"text": "我昨天买的华为Mate 60 Pro充电很慢,订单号是123456,帮我解决一下"},
outputs={"entities": entities}
)
步骤6:意图理解与决策
Agent从记忆中提取实体,理解用户意图是“申请华为Mate 60 Pro的充电问题售后”,然后生成决策:
- 调用订单系统,查询123456的购买记录和保修状态;
- 调用产品知识库,获取华为Mate 60 Pro充电慢的排查步骤;
- 向用户发送排查步骤,并询问是否需要进一步帮助。
五、未来展望:实体识别的“下一个阶段”
5.1 技术趋势:从“识别”到“理解+链接”
未来的实体识别,将不再是“提取信息块”,而是**“理解信息块的关系+链接知识图谱”**:
- 实体关系抽取:比如识别“华为Mate 60 Pro”和“充电很慢”的关系是“存在问题”;
- 实体链接:将“华为Mate 60 Pro”链接到知识图谱,获取其硬件参数(比如“支持66W快充”);
- 动态实体扩展:Agent自主学习新的实体类型(比如用户提到“折叠屏手机”,Agent自动将其加入实体类型列表)。
5.2 潜在挑战:幻觉、复杂度、跨语言
- 幻觉问题:LLM可能识别出不存在的实体(比如“用户没提订单号,LLM却输出123456”),需要更严格的验证机制(比如结合外部数据库);
- 复杂度问题:多轮对话的长上下文会增加计算成本,需要优化LLM的上下文压缩技术;
- 跨语言问题:不同语言的实体边界和歧义不同(比如中文“苹果”和英文“Apple”的歧义场景不同),需要多语言提示工程。
5.3 行业影响:Agentic AI的“普及加速器”
实体识别的优化,将推动Agentic AI在更多领域的普及:
- 电商:更精准的售后处理(比如识别“产品型号”和“问题类型”);
- 医疗:更准确的症状识别(比如从用户描述中提取“咳嗽、发烧”等实体);
- 教育:更个性化的辅导(比如识别“学生的错题类型”和“知识点薄弱点”)。
六、总结:实体识别是Agentic AI的“地基”,提示工程是“水泥”
Agentic AI的核心是“理解上下文”,而实体识别是理解上下文的“第一块拼图”。传统的实体识别方法无法应对Agentic AI的动态、开放、多轮需求,而提示工程+LLM成为了破局的关键——它让Agent能够自主学习实体类型、处理歧义、关联上下文。
作为提示工程架构师,我们的职责不是“调参”,而是“教Agent如何思考”:通过设计精准的提示词,让LLM学会在复杂场景中识别实体;通过验证和记忆机制,确保实体识别的准确性;通过链接知识图谱,丰富实体的语义信息。
思考问题:鼓励你进一步探索
- 如果你要设计一个面向教育的Agentic AI(比如智能辅导老师),你会定义哪些实体类型?如何用提示工程优化这些实体的识别?
- 如何解决多模态实体识别中的“模态对齐”问题(比如图片中的“华为手机”和文本中的“我的手机”是同一个实体)?
- 如何让Agent自主学习新的实体类型(比如用户提到“量子计算”,Agent自动将其加入“知识点”实体类型)?
参考资源
- OpenAI Prompt Engineering Guide:https://platform.openai.com/docs/guides/prompt-engineering
- LangChain Documentation:https://python.langchain.com/docs/
- 《Agentic AI: A New Paradigm for AI Systems》(论文):https://arxiv.org/abs/2308.08155
- 《Named Entity Recognition with BERT》(论文):https://arxiv.org/abs/1901.08043
- 《Few-Shot Learning with Large Language Models》(论文):https://arxiv.org/abs/2005.14165
结语
Agentic AI的时代,不是“比谁的模型更大”,而是“比谁的Agent更能理解用户”。实体识别作为理解上下文的基础,是每个Agentic AI开发者必须掌握的核心技术。而提示工程,正是让Agent“听懂话”的关键密码——掌握它,你就能打造出真正“懂用户”的Agentic AI。
下一篇文章,我们将探讨“Agentic AI的意图理解:如何让Agent‘猜中用户的小心思’”,敬请期待!
更多推荐
所有评论(0)