LangChain实验跟踪集成指南:面向ML研究员

LangChain 实验跟踪集成指南:面向 ML 研究员

引言

实验跟踪是机器学习研究和大模型应用开发的关键环节。本文将详细介绍 LangChain 支持的实验跟踪工具,帮助你更好地管理和分析模型调用过程。


一、主流实验跟踪工具对比

工具/平台 核心功能 免费额度 是否需要 API Key 官方地址
Weights & Biases 实验跟踪、可视化、协作 免费个人版 https://wandb.ai
LangSmith LLM 调试、评估、跟踪 免费试用 https://smith.langchain.com
MLflow 实验管理、模型管理 完全开源免费 否(自托管) https://mlflow.org
Arize AI 模型监控、评估 有免费层 https://arize.com
Evidently AI 模型评估、监控 有免费层 否(本地/可选云) https://evidentlyai.com
PromptLayer Prompt 管理、跟踪 免费 1000 次/月 https://promptlayer.com

二、LangSmith(LangChain 官方工具)

2.1 简介

LangSmith 是 LangChain 官方推出的 LLM 应用调试和跟踪平台,与 LangChain 无缝集成。

获取 API Key

  1. 访问 https://smith.langchain.com 注册
  2. 创建项目并获取 API Key

配置环境变量

复制代码
setx LANGCHAIN_TRACING_V2 true
setx LANGCHAIN_API_KEY "xxxxxxxxxxxxxxxxxxxxxxxx"
setx LANGCHAIN_PROJECT "your-project-name"

2.2 基本使用

python 复制代码
import os
from langchain_openai import ChatOpenAI
from langsmith import traceable

# 启用 LangSmith 跟踪
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-api-key"
os.environ["LANGCHAIN_PROJECT"] = "weather-agent"

# 普通调用会自动被跟踪
llm = ChatOpenAI(
    base_url="http://localhost:11434/v1/",
    api_key="ollama",
    model="qwen3.5:4b"
)

response = llm.invoke("你好,请介绍自己")
print(response.content)
# 所有调用都会自动记录到 LangSmith Dashboard

2.3 使用装饰器自定义跟踪

python 复制代码
import os
from langchain_openai import ChatOpenAI
from langsmith import traceable
from langchain_core.tools import tool

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-api-key"

@traceable
def get_weather(city: str) -> str:
    """查询天气(模拟)"""
    # 这里可以是真实的天气 API 调用
    return f"{city} 天气晴,温度 25°C"

@traceable(run_type="llm")
def ask_ai(question: str) -> str:
    """调用 AI 回答问题"""
    llm = ChatOpenAI(
        base_url="http://localhost:11434/v1/",
        api_key="ollama",
        model="qwen3.5:4b"
    )
    return llm.invoke(question).content

# 使用
answer = ask_ai("解释一下 RAG 技术")
print(answer)
# 所有调用链会被 LangSmith 自动跟踪

三、Weights & Biases (W&B)

3.1 简介

W&B 是业界流行的机器学习实验跟踪平台,支持 LLM 应用的监控和可视化。

获取 API Key

  1. 访问 https://wandb.ai 注册
  2. 在 Settings 页面获取 API Key

安装和配置

复制代码
pip install wandb
wandb login  # 输入 API Key

3.2 基本使用

python 复制代码
import wandb
from langchain_openai import ChatOpenAI
from langchain_core.callbacks import BaseCallbackHandler

# 初始化 W&B 实验
wandb.init(
    project="llm-experiments",
    name="experiment-1",
    config={
        "model": "qwen3.5:4b",
        "temperature": 0.7
    }
)

# 定义自定义回调
class WandBTracker(BaseCallbackHandler):
    def on_llm_end(self, response, **kwargs):
        # 记录 LLM 响应
        wandb.log({
            "response": response.generations[0][0].text,
            "token_usage": response.llm_output.get("token_usage", {})
        })

# 使用
llm = ChatOpenAI(
    base_url="http://localhost:11434/v1/",
    api_key="ollama",
    model="qwen3.5:4b",
    callbacks=[WandBTracker()]
)

result = llm.invoke("什么是大模型?")
print(result.content)

# 记录实验指标
wandb.log({"response_length": len(result.content)})
wandb.finish()

四、MLflow(开源方案,完全免费)

4.1 简介

MLflow 是一个开源的机器学习生命周期管理平台,完全免费,可本地部署。

安装

复制代码
pip install mlflow

4.2 基本使用

python 复制代码
import mlflow
from langchain_openai import ChatOpenAI

# 启动 MLflow UI(命令行):
# mlflow ui

# 设置实验
mlflow.set_experiment("LLM Agent Experiments")

# 开始一次运行
with mlflow.start_run(run_name="qwen3.5-test"):
    
    # 记录参数
    mlflow.log_param("model", "qwen3.5:4b")
    mlflow.log_param("temperature", 0.7)
    
    # 调用模型
    llm = ChatOpenAI(
        base_url="http://localhost:11434/v1/",
        api_key="ollama",
        model="qwen3.5:4b",
        temperature=0.7
    )
    
    test_prompts = [
        "你好",
        "什么是 RAG?",
        "如何使用 LangChain?"
    ]
    
    for i, prompt in enumerate(test_prompts):
        response = llm.invoke(prompt)
        print(f"Q{i+1}: {prompt}")
        print(f"A{i+1}: {response.content[:100]}...\n")
        
        # 记录每次调用
        mlflow.log_metric(f"response_length_{i}", len(response.content))
        mlflow.log_text(response.content, f"response_{i}.txt")
    
    print("实验完成!可在 MLflow UI 查看结果")

# 查看结果:浏览器访问 http://localhost:5000

五、PromptLayer(Prompt 管理工具)

5.1 简介

PromptLayer 专注于 Prompt 管理和 LLM 调用跟踪,有免费额度。

获取 API Key

  1. 访问 https://promptlayer.com 注册
  2. 获取 API Key

配置环境变量

复制代码
setx PROMPTLAYER_API_KEY "xxxxxxxxxxxxxxxxxxxxxxxx"

代码示例

python 复制代码
import os
from langchain_openai import ChatOpenAI

# 使用 PromptLayer 包装的 LLM
llm = ChatOpenAI(
    base_url="http://localhost:11434/v1/",
    api_key="ollama",
    model="qwen3.5:4b",
    pl_tags=["experiment", "weather-agent"]  # 自定义标签
)

# 所有调用会自动记录到 PromptLayer
response = llm.invoke("查询天气的方法")
print(response.content)

六、实战:完整的实验跟踪系统

python 复制代码
import os
import mlflow
import wandb
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langsmith import traceable

# === 配置 ===
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-langsmith-key"

# === 定义工具 ===
@tool
@traceable
def get_weather(city: str) -> str:
    """查询指定城市的天气信息"""
    return f"{city} 天气:晴,25°C,湿度 50%"

# === 实验配置 ===
EXPERIMENT_CONFIG = {
    "model": "qwen3.5:4b",
    "temperature": 0.7,
    "tools": ["get_weather"],
    "max_iterations": 5
}

# === 初始化 MLflow ===
mlflow.set_experiment("Weather Agent Experiments")

with mlflow.start_run(run_name="weather-agent-v1"):
    
    # 记录配置
    mlflow.log_params(EXPERIMENT_CONFIG)
    
    # 初始化 LLM
    llm = ChatOpenAI(
        base_url="http://localhost:11434/v1/",
        api_key="ollama",
        model=EXPERIMENT_CONFIG["model"],
        temperature=EXPERIMENT_CONFIG["temperature"]
    )
    
    # 创建智能体
    tools = [get_weather]
    from langchain_core.prompts import ChatPromptTemplate
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是一个天气助手,可以查询天气信息。"),
        ("user", "{input}"),
        ("placeholder", "{agent_scratchpad}")
    ])
    
    agent = create_tool_calling_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    
    # 测试用例
    test_cases = [
        "北京今天天气怎么样?",
        "上海的温度是多少?",
        "广州下雨吗?"
    ]
    
    # 运行实验
    for i, test_case in enumerate(test_cases):
        print(f"\n=== 测试用例 {i+1}: {test_case} ===")
        
        result = executor.invoke({"input": test_case})
        output = result["output"]
        
        print(f"回答: {output[:200]}...")
        
        # 记录到 MLflow
        mlflow.log_metric(f"response_length_{i}", len(output))
        mlflow.log_text(output, f"response_{i}.txt")
    
    print("\n=== 实验完成! ===")
    print("LangSmith: https://smith.langchain.com")
    print("MLflow UI: http://localhost:5000")

七、快速选择指南

场景 推荐方案 是否免费 特点
LangChain 原生集成 LangSmith 有免费层 官方工具,深度集成
完全开源自托管 MLflow 免费 功能全面,本地部署
机器学习研究 Weights & Biases 有免费层 可视化强,协作友好
Prompt 优化 PromptLayer 有免费层 专注 Prompt 管理
模型监控 Arize AI 有免费层 生产级监控工具

八、常见问题

Q: 是否有完全免费的实验跟踪方案?

A: 是的,MLflow 完全开源免费,可本地部署使用。

Q: LangSmith 和 W&B 哪个更好?

A: LangSmith 对 LangChain 集成更紧密,W&B 在传统 ML 领域更强。根据你的使用场景选择。

Q: 如何在团队中共享实验结果?

A: LangSmith 和 W&B 都提供团队协作功能,支持实验结果的共享和评论。

Q: 是否支持本地部署?

A: MLflow 完全支持本地部署。LangSmith 和 W&B 提供企业版私有部署选项。


LangChain 的实验跟踪工具让模型评估和优化变得简单:

  1. 官方支持:LangSmith 与 LangChain 无缝集成
  2. 开源方案:MLflow 完全免费,可本地部署
  3. 专业工具:W&B、Arize 提供企业级功能
  4. 灵活选择:根据需求在不同工具间切换
  5. 可视化分析:所有工具提供直观的 Dashboard

推荐入门路径:先用 LangSmith 快速上手,需要更深度的分析时再接入 MLflow 或 W&B。

相关推荐
zhojiew1 小时前
DuckLake湖仓数据格式常用操作实践以及和Iceberg的对比
数据库
万粉变现经纪人1 小时前
2026最新CSDN博客质量分v6.0深度解读:从评分机制到80+实战提分指南
数据库·人工智能·深度学习·csdn·csdn博客·csdn博客质量分6.0·博客质量分
曹牧1 小时前
Oracle:嵌套子查询
数据库·oracle
王莎莎-MinerU2 小时前
Agent 时代,科学数据 API 需要重新设计
大数据·前端·数据库·人工智能·个人开发
jghhh012 小时前
MATLAB蒙特卡罗方法求解伊辛模型
数据库·人工智能·matlab
一个天蝎座 白勺 程序猿2 小时前
时序大模型云服务快速上手:定义与核心能力
数据库·iotdb·云服务·timechoai
sukioe2 小时前
Redis 数据类型入门:5 大核心类型与常见业务场景
数据库·redis·缓存
学地理的小胖砸2 小时前
【批量处理tiff文件生成jpg缩略图】
数据库·人工智能·python
承渊政道2 小时前
【MySQL数据库学习】(MySQL数据类型)
数据库·学习·mysql·ubuntu·bash·数据库开发·数据库系统