AI Agent回复模板:让Agent的回答稳定可靠
🩺 摘要
同样的问题,AI今天回答A,明天回答B。格式也不一样。
📝 详情
为什么回复模板至关重要
没有模板的AI客服,每次回复的格式都不一样。今天说"您的订单号12345,已发货",明天可能说"我已查到订单12345,它已经在路上了"。用户看起来不专业,而且关键信息(订单号、状态、时间)容易被埋没在废话中。
用模板之后,输出格式高度统一,关键信息一眼可见。数据对比:某跨境电商部署模板系统后,用户满意度从72%提升到91%,客服转接率下降了40%。
Python实现:Jinja2模板引擎
from jinja2 import Template
from datetime import datetime
# 定义订单查询模板
ORDER_QUERY_TEMPLATE = Template("""
【订单查询结果】
━━━━━━━━━━━━━━━━━━
订单号:{{ order_id }}
商品:{{ product_name }}
金额:¥{{ amount }}
状态:{{ status }}
下单时间:{{ create_time }}
━━━━━━━━━━━━━━━━━━
{% if status == '已发货' %}
预计 {{ estimate_date }} 前送达
物流单号:{{ tracking_no }}
{% elif status == '退款中' %}
退款进度:{{ refund_progress }}%
预计 {{ refund_date }} 到账
{% endif %}
""")
def format_order_response(order_data: dict) -> str:
return ORDER_QUERY_TEMPLATE.render(
order_id=order_data.get('order_id', '未知'),
product_name=order_data.get('product_name', '未知'),
amount=order_data.get('amount', 0),
status=order_data.get('status', '未知'),
create_time=order_data.get('create_time', ''),
estimate_date=order_data.get('estimate_date', ''),
tracking_no=order_data.get('tracking_no', 'N/A'),
refund_progress=order_data.get('refund_progress', 0),
refund_date=order_data.get('refund_date', '')
)
对比:有模板 vs 无模板
| 维度 | 纯AI自由发挥 | 模板+AI填充 |
|---|---|---|
| 格式一致性 | 30% | 98% |
| 信息完整率 | 65% | 99% |
| 用户满意度 | 72% | 91% |
| 客服转接率 | 35% | 21% |
| 开发成本 | 低 | 中 |
实施步骤
第一步:梳理高频场景(订单查询、退货查询、物流查询),每个场景写一个Jinja2模板。
第二步:在主Prompt中引用模板——"请使用以下模板回复用户,用实际数据填充{{变量}}"。
第三步:用Pydantic做变量校验,确保填充的数据类型正确:
from pydantic import BaseModel
class OrderTemplateData(BaseModel):
order_id: str
amount: float
status: str # 已发货/退款中/待发货/已完成
def validate_and_render(template: Template, raw_data: dict) -> str:
try:
validated = OrderTemplateData(**raw_data)
return template.render(validated.model_dump())
except Exception as e:
return f"模板渲染失败:{e},原始数据:{json.dumps(raw_data, ensure_ascii=False)}"
第四步:A/B测试——10%流量用纯AI回复,90%用模板回复,对比满意度指标。
第五步:根据用户反馈迭代模板内容,每两周评审一次模板有效性。
💬 评论 (0)