Guardrails项目日志与历史记录深度解析
guardrails 项目地址: https://gitcode.com/gh_mirrors/gua/guardrails
引言
在开发基于大语言模型(LLM)的应用时,调试和监控模型调用过程至关重要。Guardrails项目提供了完善的日志记录和历史追踪功能,帮助开发者深入了解每次Guard调用的完整生命周期。本文将全面解析Guardrails的日志系统,展示如何有效利用这些功能进行开发和调试。
基础概念
Guardrails中的Guard
类会自动记录所有调用历史,这些记录存储在guard.history
属性中。每次调用Guard.__call__
或Guard.parse
方法都会生成一个Call
日志对象,按执行顺序添加到历史堆栈中。
访问调用历史
基本访问方式
# 创建Guard实例
my_guard = Guard.from_rail(...)
# 进行多次调用
response_1 = my_guard(...)
response_2 = my_guard.parse(...)
# 访问历史记录
print(my_guard.history) # 显示所有调用记录
查看最新调用详情
使用Rich库可以美观地打印最后一次调用的详细信息:
from rich import print
print(guard.history.last.tree)
Call日志详解
每个Call
对象包含了一次完整调用的全生命周期信息。
获取特定调用
first_call = my_guard.history.first # 获取第一次调用
last_call = my_guard.history.last # 获取最后一次调用
输入参数查看
print("初始提示词:\n-----")
print(first_call.prompt)
print("提示词参数:\n------------- ")
print(first_call.prompt_params)
输出示例展示了完整的提示模板和实际传入的参数值。
输出结果查看
print("状态: ", first_call.status) # 调用最终状态
print("验证后的响应:", first_call.validated_output) # 最终有效输出
资源消耗统计
对于需要优化成本的场景,Call
对象提供了详细的token消耗统计:
print("提示token用量: ", first_call.prompt_tokens_consumed)
print("补全token用量: ", first_call.completion_tokens_consumed)
print("总token用量: ", first_call.tokens_consumed)
原始LLM响应追踪
当出现验证失败和重试时,可以查看所有原始LLM响应:
print("LLM原始响应\n-------------")
for response in first_call.raw_outputs:
print(response)
深入步骤级日志
每个Call
包含一个Iteration
堆栈,记录调用过程中的每个步骤。
访问特定步骤
first_step = first_call.iterations.first
查看步骤详情
print("第一步LLM响应:\n------------------")
print(first_step.raw_output)
print("\n验证器日志:\n--------------")
for log in first_step.validator_logs:
print(log.json(indent=2))
验证器日志会详细显示每个字段的验证结果、错误信息和修正建议。
步骤级资源统计
print("本步骤提示token: ", first_step.prompt_tokens_consumed)
print("本步骤补全token: ", first_step.completion_tokens_consumed)
print("本步骤总token: ", first_step.tokens_consumed)
实际应用场景
- 调试验证失败:通过查看验证器日志,快速定位不符合要求的字段
- 优化提示工程:分析多次调用的prompt和响应,改进提示模板
- 成本分析:统计token使用情况,优化调用策略
- 质量监控:跟踪验证通过率,评估模型表现
最佳实践
- 在开发阶段定期检查
guard.history
,确保验证逻辑按预期工作 - 对生产环境的重要调用保存历史记录,便于后续分析
- 结合token统计优化提示设计,降低成本
- 利用验证日志改进rail规范,提高验证通过率
Guardrails的日志系统为开发者提供了强大的调试和监控能力,是构建可靠LLM应用的重要工具。通过充分利用这些功能,可以显著提高开发效率和系统可靠性。
guardrails 项目地址: https://gitcode.com/gh_mirrors/gua/guardrails
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考