首页 / 文章 / 实用指南:提升生产环境中AI智能体响应质量的巧妙方法

实用指南:提升生产环境中AI智能体响应质量的巧妙方法

《实用笔记》操作指南:提升生产环境中AI智能体响应质量的巧妙方法——为采用该模式的团队提供的合同模板、校验机制及可直接插入的代码片段。

2176 词

可将此内容视为《提升生产环境中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的批处理说明:不要将提供者密钥放入仓库中,设定每次会话的令牌上限,并将转录内容存储在评估测试用例旁边,以便后续更换模型时仍能保持可比性。