目录
第三部分:监控与管理
- 第八章:可观测性(Observability)
- [第九章:LangSmith - 监控与调试平台](#第九章:LangSmith - 监控与调试平台)
- [第十章:PromptLayer - Prompt管理平台](#第十章:PromptLayer - Prompt管理平台)
第八章:可观测性(Observability)
8.1 什么是Observability?
8.1.1 Observability定义
**可观测性(Observability)**是指通过日志、指标和追踪来理解和诊断AI Agent系统行为的能力。对于AI Agent系统,可观测性至关重要,因为LLM的"黑盒"特性使得调试和优化变得困难。
Observability三大支柱
Observability
Logs
日志
Metrics
指标
Traces
追踪
记录事件
性能监控
请求追踪
8.1.2 Observability在AI Agent中的重要性
重要性分析
| 方面 | 无Observability | 有Observability | 改进 |
|---|---|---|---|
| 问题定位 | 困难,耗时数小时 | 快速,几分钟 | ⬆️ 90% |
| 性能优化 | 盲目优化 | 数据驱动优化 | ⬆️ 70% |
| 成本控制 | 无法追踪 | 精确追踪 | ⬆️ 100% |
| 用户体验 | 问题发现滞后 | 实时监控 | ⬆️ 80% |
8.1.3 Observability核心指标
1. LLM调用指标
python
# 关键指标
metrics = {
"llm_calls_total": 1000, # 总调用次数
"llm_tokens_used": 500000, # Token使用量
"llm_latency_p50": 1.2, # 50分位延迟(秒)
"llm_latency_p95": 3.5, # 95分位延迟(秒)
"llm_error_rate": 0.02, # 错误率
"llm_cost_total": 50.0 # 总成本(美元)
}
2. Agent执行指标
python
agent_metrics = {
"agent_runs_total": 500,
"agent_success_rate": 0.85,
"agent_avg_tool_calls": 2.3,
"agent_avg_latency": 4.5,
"agent_max_iterations": 10
}
3. RAG检索指标
python
rag_metrics = {
"rag_queries_total": 300,
"rag_avg_retrieval_time": 0.15, # 检索时间(秒)
"rag_avg_documents": 5, # 平均检索文档数
"rag_relevance_score": 0.82 # 相关性分数
}
8.1.4 Observability实现方案
方案1: LangSmith集成
python
from langchain.callbacks import LangChainTracer
# 启用LangSmith追踪
tracer = LangChainTracer()
llm = ChatOpenAI(callbacks=[tracer])
方案2: 自定义日志
python
import logging
from langchain.callbacks import BaseCallbackHandler
class ObservabilityHandler(BaseCallbackHandler):
def on_llm_start(self, serialized, prompts, **kwargs):
logging.info(f"LLM调用开始: {prompts}")
def on_llm_end(self, response, **kwargs):
logging.info(f"LLM调用结束: {response}")
def on_tool_start(self, serialized, input_str, **kwargs):
logging.info(f"工具调用: {serialized['name']}")
方案3: Prometheus指标
python
from prometheus_client import Counter, Histogram
llm_calls = Counter('llm_calls_total', 'Total LLM calls')
llm_latency = Histogram('llm_latency_seconds', 'LLM latency')
@llm_latency.time()
def call_llm(prompt):
llm_calls.inc()
# LLM调用逻辑
8.1.5 Observability最佳实践
✅ 推荐做法
- 全面追踪:追踪所有LLM调用和工具执行
- 结构化日志:使用结构化日志格式
- 关键指标监控:监控延迟、错误率、成本
- 告警设置:设置异常告警
- 数据保留:合理设置数据保留策略
第九章:LangSmith - 监控与调试平台
9.1 什么是LangSmith?
9.1.1 LangSmith定义
LangSmith是LangChain官方提供的监控、调试和评估平台,为AI Agent应用提供完整的可观测性解决方案。它可以帮助开发者追踪LLM调用、调试Prompt、评估模型性能。
LangSmith核心功能
LangSmith
追踪
Tracing
调试
Debugging
评估
Evaluation
监控
Monitoring
请求追踪
Prompt调试
性能评估
实时监控
9.1.2 LangSmith在AI Agent中的价值
价值量化
| 功能 | 价值 | 提升效果 |
|---|---|---|
| 问题定位 | 快速定位问题 | ⬆️ 90%效率提升 |
| Prompt优化 | 可视化调试Prompt | ⬆️ 50%效果提升 |
| 成本控制 | 精确追踪成本 | ⬇️ 30%成本降低 |
| 性能优化 | 数据驱动优化 | ⬆️ 40%性能提升 |
9.1.3 LangSmith核心功能详解
功能1: 请求追踪(Tracing)
python
from langchain.callbacks import LangChainTracer
from langsmith import Client
# 初始化追踪
tracer = LangChainTracer(
project_name="my-agent",
client=Client()
)
# 使用追踪
llm = ChatOpenAI(callbacks=[tracer])
追踪信息包括:
- LLM调用详情
- Token使用量
- 延迟时间
- 输入输出
- 错误信息
功能2: Prompt调试
LangSmith提供可视化的Prompt调试界面:
Prompt版本1
测试结果1
Prompt版本2
测试结果2
Prompt版本3
测试结果3
对比分析
选择最佳Prompt
功能3: 评估(Evaluation)
python
from langsmith import evaluate
# 定义评估函数
def evaluate_agent(run, example):
# 评估逻辑
return {
"accuracy": 0.9,
"relevance": 0.85
}
# 运行评估
results = evaluate(
lambda inputs: agent.run(inputs["question"]),
data="test_dataset",
evaluators=[evaluate_agent]
)
9.1.4 LangSmith使用示例
完整集成示例
python
from langchain.callbacks import LangChainTracer
from langsmith import Client
import os
# 设置LangSmith API Key
os.environ["LANGCHAIN_API_KEY"] = "your-api-key"
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "my-agent-project"
# 创建客户端
client = Client()
# 创建追踪器
tracer = LangChainTracer()
# 在Agent中使用
agent = initialize_agent(
tools=tools,
llm=llm,
callbacks=[tracer],
verbose=True
)
9.1.5 LangSmith最佳实践
✅ 推荐做法
- 项目组织:按项目组织追踪数据
- 标签使用:使用标签分类追踪
- 定期评估:定期运行评估测试
- 成本监控:监控Token使用和成本
- 告警设置:设置异常告警
第十章:PromptLayer - Prompt管理平台
10.1 什么是PromptLayer?
10.1.1 PromptLayer定义
PromptLayer是一个专门用于管理和监控Prompt的平台,提供Prompt版本控制、A/B测试、性能监控等功能。它帮助团队协作管理Prompt,优化Prompt效果。
PromptLayer核心功能
PromptLayer
版本控制
Version Control
A/B测试
A/B Testing
性能监控
Monitoring
团队协作
Collaboration
Prompt历史
效果对比
实时监控
共享Prompt
10.1.2 PromptLayer在AI Agent中的价值
价值分析
| 功能 | 价值 | 提升效果 |
|---|---|---|
| 版本管理 | Prompt版本控制 | ⬆️ 100%可追溯性 |
| A/B测试 | 科学优化Prompt | ⬆️ 30%效果提升 |
| 团队协作 | 共享和管理Prompt | ⬆️ 50%协作效率 |
| 性能监控 | 实时监控Prompt效果 | ⬆️ 40%问题发现速度 |
10.1.3 PromptLayer核心功能详解
功能1: Prompt版本控制
python
import promptlayer
# 记录Prompt版本
promptlayer.track.prompt(
prompt_name="customer_service",
prompt_input_variables=["customer_query"],
version=1
)
# 使用Prompt
response = llm(promptlayer.prompts.get("customer_service"))
功能2: A/B测试
50%
50%
A更好
B更好
用户请求
随机分配
Prompt版本A
Prompt版本B
结果A
结果B
对比分析
哪个更好?
使用版本A
使用版本B
功能3: 性能监控
python
# 记录Prompt执行
promptlayer.track.score(
request_id=request_id,
score=0.9, # 评分
metadata={"user_feedback": "helpful"}
)
10.1.4 PromptLayer使用示例
完整集成
python
import promptlayer
import openai
# 初始化PromptLayer
promptlayer.api_key = "your-api-key"
# 包装OpenAI客户端
openai = promptlayer.openai.OpenAI()
# 使用Prompt
response = openai.chat.completions.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": promptlayer.prompts.get("system_prompt")
},
{
"role": "user",
"content": user_message
}
],
pl_tags=["production", "customer_service"]
)
10.1.5 PromptLayer最佳实践
✅ 推荐做法
- 版本命名:使用清晰的版本命名规则
- 标签使用:使用标签分类Prompt
- 定期测试:定期进行A/B测试
- 监控指标:监控关键性能指标
- 团队协作:建立Prompt评审流程