实用指南:提升生产环境中AI智能体响应质量的巧妙方法
《实用笔记》操作指南:提升生产环境中AI智能体响应质量的巧妙方法——为采用该模式的团队提供的合同模板、校验机制及可直接插入的代码片段。
可将此内容视为《提升生产环境中AI智能体响应质量的巧妙方法》中理念的面向操作员的简化版本:清晰的阶段划分、有序的代码模块,以及能在交接过程中保留的恢复说明。 将“概览”阶段视为可量化的基准最为有效。在扩大范围之前,先记录一份最佳响应示例、一个故障案例以及回滚说明。 在功能结果旁同时记录处理时间以及token或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。
1. 为智能体提供恰当的上下文,而非过多上下文
在“1. 给予代理执行阶段”中,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,这样操作人员无需查看整个系统结构即可进行审核。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务功能的完整性。
User Question
↓
Query Embedding
↓
Vector Search
↓
Top-K Results
↓
Reranking
↓
Relevant Chunks
↓
LLM
↓
Final Answer
2. 在修改大语言模型之前进行调试
在“调试检索前置”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程与异常恢复路径。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的功能。 当下一步操作为代码执行或工具调用时,应优先使用具有结构化格式且经过模式验证的输出,而非自由形式的文本描述。
Question
↓
Query Transformation
↓
Retrieved Documents
↓
Similarity Scores
↓
Reranking
↓
Final Context
↓
Prompt
↓
LLM Response
results = vector_store.similarity_search(
query=user_question,
k=5
)
for result in results:
print("Score:", result.score)
print("Source:", result.metadata.get("source"))
print("Content:", result.page_content[:500])
3. 在增加上下文范围之前优化分块处理
在“3. 改进模块化结构”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 优先选择小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应指向单一责任点,而非复杂的流程链。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务功能的完整性。 在“3. 改进模块化结构”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 在功能结果之外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外账单。
。
Chunk 1:
Employees are eligible for reimbursement when...
Chunk 2:
...the expense was approved by their manager and
submitted within 30 days.
4. 不要将整个对话内容发送给模型
在处理“不要发送”这一阶段时,首先列出相关规范:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放,以便操作人员无需查看整个系统结构即可进行审计。 缓存稳定的系统指令和工具架构。重复发送相同的前置信息是导致资源浪费的常见原因。
Conversation Context
Recent Messages:
- User asked about refund eligibility.
- Agent explained the standard policy.
- User mentioned they purchased an annual plan.
Conversation Summary:
Customer purchased an annual subscription
and wants to know whether they qualify for a refund.
Current Question:
Can I still get a refund?
5. 将系统指令、上下文与用户输入分开
在完成5个独立系统指令阶段时,首先写下相关约定:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 同时记录正常流程和故障恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的组成部分,而非后续的优化内容。 在成本较高的步骤之后设置检查点。当操作员重新尝试某个后续节点时,恢复流程不应再次调用相同的LLM接口。
SYSTEM INSTRUCTIONS
You are a customer support agent.
Answer using the provided knowledge.
Do not invent company policies.
If the answer isn't available, say that you don't know.
KNOWLEDGE
<retrieved_documents>
USER QUESTION
<user_question>
6. 教导智能体何时应回答“我不知道”
在完成“教导智能体”的6个阶段时,首先需明确相关规范:所需输入、成功标志以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 建议采用小型、可测试的单元,而非庞大的脚本。当某一步骤失败时,故障应指向单一责任点,而非复杂的流程链。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的LLM接口。 在完成“教导智能体”的6个阶段时,首先需明确相关规范:所需输入、成功标志以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及Token或查询成本。提前了解成本情况,可避免从演示环境过渡到共享环境时出现意外费用。
If the answer cannot be supported by the provided
knowledge, do not guess.
Clearly state that the information is unavailable.
7. 避免在提示词中包含业务逻辑
“7个要点:避免业务逻辑”这一方法在被视为可衡量的标准时效果最佳。在扩大范围之前,先记录一份理想的响应文本、一个失败案例以及回滚说明。 将配置信息置于应用程序代码之外。环境文件、密钥存储和功能开关应集中存放,以便操作人员无需查看全部内容即可进行审计。 为每轮对话和每次会话设定预算令牌限制。智能工具往往会过度扩展上下文,设置上限可防止演示过程变成意外的费用账单。
def check_refund_eligibility(customer, purchase):
if not customer.is_premium:
return False
if customer.account_age_years < 2:
return False
if purchase.days_since_purchase > 30:
return False
if customer.previous_refund:
return False
return True
LLM
→ Understands the request
→ Decides which tool to use
→ Explains the result
Application
→ Enforces business rules
→ Validates data
→ Performs deterministic operations
8. 明确工具的职责
将“8个给定工具的明确阶段”视为可度量的界面使用效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。 同时记录正常流程和恢复流程。重试机制、人工审核环节以及死信处理都是产品的一部分,而非后续需要补充的内容。 使用结构简洁的工具,并为它们添加明确的副作用标签。主机需要在自动批准之前知道哪些调用会改变状态。
process_customer_data()
get_customer_order()
cancel_customer_order()
update_customer_address()
create_support_ticket()
9. 验证代理产生的结果
“9个验证点”表明,将该阶段视为可度量的对象时效果最佳。在扩大范围之前,需记录一份理想的执行日志、一个故障案例以及回滚说明。 优先选择小型且可测试的单元,而非庞大的脚本。当某个步骤出现故障时,故障应指向单一责任模块,而非复杂的流程链。 保持图表状态简洁且具有类型定义。嵌套的数据结构会掩盖哪个节点修改了哪个字段的信息,还会在流程中断后导致无法继续执行。 “9个验证点”表明,将该阶段视为可度量的对象时效果最佳。在扩大范围之前,需记录一份理想的执行日志、一个故障案例以及回滚说明。 除了功能结果外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在流程从演示环境转向共享环境时出现意外费用。
User
↓
LLM
↓
Refund API
User
↓
LLM
↓
Tool Request
↓
Application Validation
↓
Business Rules
↓
Refund API
{
"customer_id": "12345",
"eligible": true,
"reason": "Purchase is within the refund window"
}
10. 无充分理由切勿添加多个代理
在进入“10. 严禁添加”阶段时,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放,以便操作人员无需查看整个流程即可进行审核。 对于涉及资金支出或修改生产数据的节点,必须设置人工审批环节。编译时的连接方式并不等同于业务流程的完整性。
User
↓
Router Agent
/ | \
↓ ↓ ↓
RAG SQL API
\ | /
\ | /
Final Agent
↓
Response
11. 基于实际问题构建评估数据集
在“11 构建与评估”阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程与异常恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的内容。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
Easy questions
Ambiguous questions
Multi-step questions
Out-of-domain questions
No-answer questions
Tool-use questions
Adversarial questions
12. 追踪整个智能体工作流程
在“12 Trace the Entire”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 优先选择小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应指向单一责任点,而非复杂的流程链。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务功能的完整性。 在“12 Trace the Entire”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 在功能结果之外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在流程从演示环境转向共享环境时出现意外账单。
Request ID
↓
User Question
↓
Query Transformation
↓
Retrieved Documents
↓
Reranking Results
↓
Prompt Version
↓
Model
↓
Tool Calls
↓
Tool Responses
↓
Final Response
↓
Validation
13. 不要只追求精确度进行优化
在处理“13. 不要只追求精确度进行优化”这一阶段时,首先需明确相关约定:所需的输入参数、成功标志,以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 应将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,这样操作人员无需查看整个系统结构即可进行审计。 在耗时较高的步骤之后设置检查点。当操作人员重新执行后续节点时,恢复流程不应再次调用相同的大型语言模型。
Response Quality
+
Reliability
+
Latency
+
Cost
+
User Experience
总结
在完成“最终思考”阶段时,首先写下接口规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。
操作检查清单
在处理“操作检查清单”阶段时,同样要先列出接口规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单有助于保证后续代码修改的准确性。
将此阶段视为输入与验证后输出之间的契约。为相关产物命名,明确成功判定标准,杜绝无声的半完成状态。
在成本较高的操作之后设置检查点。当操作员重新尝试后续节点时,续程功能不应再次对同一次LLM调用收费。
锁定依赖版本,并记录用于演示的镜像摘要。可重复性比经验知识更为可靠。
在功能结果旁记录执行时间以及token或查询成本。提前了解成本情况,可避免从演示环境过渡到共享环境时出现意外收费。
在成本较高的操作之后设置检查点。当操作员重新尝试后续节点时,续程功能不应再次对同一次LLM调用收费。
在升级整个技术栈之前,先冻结各版本,为关键路径保存标准操作记录,并确认回滚步骤。共享环境需要设置速率限制、进行租户检查,同时明确密钥轮换的责任人。与其追求华而不实的临时演示,不如注重扎实的可靠性。
关于1481fc99429e的批处理说明:不要将提供者密钥放入仓库中,设定每次会话的令牌上限,并将转录内容存储在评估测试用例旁边,以便后续更换模型时仍能保持可比性。