Skip to main content

Documentation Index

Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt

Use this file to discover all available pages before exploring further.

LiteLLM 提供了一个统一的接口,用于通过一致的 OpenAI 兼容 API 调用 LLM 提供商。它既可以作为 Python SDK 直接嵌入到你的应用中,也可以作为 代理服务器 为客户端应用暴露一个 OpenAI 兼容的端点。 本指南将向你展示如何使用以下方式通过 LangSmith 追踪 LiteLLM 调用:

安装

使用 LiteLLM Python SDK 或 LiteLLM 代理时,请安装以下内容:
pip install litellm langsmith openai
本指南中的示例使用 OpenAI 模型,但你可以为你的用例安装必要的提供商。

使用 LiteLLM Python SDK

LiteLLM 支持两种将追踪发送到 LangSmith 的方式,它们在不同的层面上运行:
  • LangSmith SDK 追踪:通过设置 LANGSMITH_TRACING=true 启用应用级追踪。当你想追踪更广泛的业务逻辑、多步骤管道或使用 @traceable 创建的 span 时,这很有用。
  • LiteLLM 内置的 langsmith 回调:直接从 LiteLLM 记录模型调用。当你想专门追踪 LiteLLM 请求或运行异步应用时,推荐使用此方式。
避免为相同的 LiteLLM 调用同时启用 LiteLLM 的 langsmith 回调和 LangSmith 追踪,因为这可能导致重复的追踪。

使用 LANGSMITH_TRACINGtraceable

你可以将 LANGSMITH_TRACING=true@traceable 一起使用,以在 LangSmith 中获得可预测的追踪。这种方法确保 输入输出 列反映你的函数参数和返回值,允许你保留完整的消息结构(包括 rolecontent)。它在简单的同步脚本中也能可靠地工作,无需 asyncio 事件循环或额外的回调配置。
  1. 设置以下环境变量,为 LiteLLM Python SDK 用法启用 LangSmith 追踪:
    export LANGSMITH_API_KEY="your_api_key"
    export LANGSMITH_PROJECT="litellm-integration"
    export LANGSMITH_TRACING="true"
    
    LangSmith UI 中创建 LangSmith API 密钥 根据你使用的提供商,你还需要设置 API 密钥:
    export OPENAI_API_KEY="your_openai_key"
    
  2. 将以下代码添加到你的脚本文件中:
    from langsmith import traceable
    from litellm import completion
    
    @traceable(name="LiteLLM Chat Completion")
    def run(messages):
        response = completion(
            model="gpt-4o",
            messages=messages,
        )
        # 返回助手消息,以便 LangSmith UI 显示 role + content
        return response["choices"][0]["message"]
    
    messages = [
        {"role": "user", "content": "Explain observability in LLM systems."}
    ]
    
    result = run(messages)
    print(result["content"])
    
    @traceable 将你的函数作为 LangSmith 运行进行检测。当设置 LANGSMITH_TRACING=true 时,LangSmith 会自动:
    • 在函数被调用时创建一个运行。
    • 将函数参数记录为运行输入。
    • 执行函数体(包括 LiteLLM 调用)。
    • 将函数的返回值记录为运行输出。
    • 捕获计时、错误和嵌套的 span(如果有)。
    在此示例中,messages 参数成为追踪输入,返回的助手消息对象成为追踪输出。LiteLLM 调用本身正常运行——@traceable 通过可观测性包装它,而不是修改其行为。这种方法追踪的是你的应用逻辑,而不仅仅是模型调用。
    有关使用 @traceable 的更多通用示例,请参阅 自定义检测 页面。

使用 langsmith 回调记录 LiteLLM 调用

LiteLLM 可以使用其内置的 回调系统 直接将追踪发送到 LangSmith。当你在异步 Python 服务中运行 LiteLLM,并且希望 LiteLLM 本身发出模型级日志时,这很有用。 LiteLLM 回调在异步环境中运行。使用 litellm.acompletion() 进行异步调用时,你可以启用 langsmith 回调来记录成功的模型调用。
此方法最适合异步应用。对于简单的同步脚本,请使用 上一节 中显示的 @traceable 方法。
  1. 设置以下环境变量:
    export LANGSMITH_API_KEY="your_api_key"
    export LANGSMITH_PROJECT="litellm-integration"
    
    LangSmith UI 中创建 LangSmith API 密钥 根据你使用的提供商,你还需要设置 API 密钥:
    export OPENAI_API_KEY="your_openai_key"
    
  2. 要在最小脚本中运行此操作:
    • 使用 acompletion()(异步 API)。
    • 使用 asyncio.run(...) 运行以创建事件循环。
    • 设置 langsmith_batch_size = 1 以立即刷新。
    import asyncio
    import litellm
    from litellm import acompletion
    
    # 启用 LiteLLM → LangSmith 回调
    litellm.success_callback = ["langsmith"]
    
    # 对于短期运行的脚本,立即发送而不是等待批量刷新
    litellm.langsmith_batch_size = 1
    
    async def main():
        response = await acompletion(
            model="gpt-4o",
            messages=[
                {"role": "user", "content": "Explain observability in LLM systems."}
            ],
        )
    
        # 打印助手消息内容以进行本地验证
        print(response["choices"][0]["message"]["content"])
    
        # 在进程退出前留出时间让后台记录器刷新
        await asyncio.sleep(1)
    
    if __name__ == "__main__":
        asyncio.run(main())
    
    该回调将 LiteLLM 的模型请求和响应数据直接发送到 LangSmith,包括提供商元数据和令牌使用情况。由于 LiteLLM 控制有效负载,与 @traceable 示例相比,输入输出 列可能包含额外的元数据。

使用 LiteLLM 代理

LiteLLM 代理作为独立服务器运行,并暴露一个 OpenAI 兼容的 API。
  1. 要让代理直接将请求记录到 LangSmith,请在 config.yaml 中配置回调:
    model_list:
      - model_name: gpt-4o
        litellm_params:
          model: openai/gpt-4o
    
    litellm_settings:
      callbacks: ["langsmith"]
    
  2. 在你的代理环境中设置环境变量:
    export LANGSMITH_API_KEY="your_api_key"
    export LANGSMITH_PROJECT="litellm-proxy"
    export OPENAI_API_KEY="your_openai_key"
    
    LiteLLM 代理作为单独的服务运行。如果你在代理级别启用 LangSmith 追踪,必须在代理的运行时环境中配置 LANGSMITH_API_KEY 和相关环境变量。这些设置不会与你的应用进程共享。
  3. 启动代理:
    litellm --config config.yaml
    
    默认情况下,代理在 http://localhost:4000/v1 运行。你的应用使用任何 OpenAI 兼容客户端(Python、JavaScript、curl 等)调用它。 启用 callbacks: ["langsmith"] 后,代理会将模型请求和响应数据直接发送到 LangSmith。客户端应用中无需进行追踪配置。
  4. 从另一个终端窗口调用代理:
    from openai import OpenAI
    
    client = OpenAI(
        base_url="http://localhost:4000/v1",
        api_key="anything"  # 代理可能需要密钥,但默认情况下不验证
    )
    
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "user", "content": "What is LiteLLM?"}
        ],
    )
    
    print(response.choices[0].message.content)
    
    客户端发送正常的聊天补全请求,代理处理提供商路由和响应格式化。

后续步骤