监控 IBM watsonx 模型

IBM watsonx 提供针对商业应用场景进行优化的企业级基础模型。 本指南将向您展示如何使用 IBM watsonx 模型配合 OpenLLMetry 对应用程序进行监控,并将遥测数据发送至 Instana。

先决条件

确保满足下列先决条件:

  • Python 3.10 或更高版本。 Python 3.13 由于依赖项兼容性问题,该功能不被支持。 请访问 Python 3.12 或
  • IBM watsonx 凭据(项目 ID 和 API 密钥,来自 IBM watsonx
  • 一个 Instana 账户
  • 基础设置、代理模式和无代理模式入门指南

为您的 IBM watsonx 应用程序添加性能监控

  1. 安装必需的软件包。

    pip install traceloop-sdk langchain-ibm ibm_watsonx_ai ibm-watson-machine-learning
    注意: 如果您在使用 pandas 时遇到编译错误(例如 error: too few arguments to function '_PyLong_AsByteArray'),这表明您正在使用 Python 3.13 ,该版本目前尚未得到支持。 如需更多信息,请参阅 Python 该版本不兼容
  2. 设置环境变量。

    查找您的 IBM watsonx 登录凭据

    您可以在 IBM watsonx.ai 控制台中找到您的凭据:

    快速方法(“发现”栏目):

    • IBM watsonx.ai 主页上,查看是否有 “探索” 栏目,其中包含开发者信息
    • 如果可用,本节将在此处集中显示您的项目 ID、 watsonx.ai、 URL 以及 API 密钥
    • 直接复制这些值

    替代方法:

    • API 操作指南 :在 IBM Cloud 控制台中,导航至“IAM”>“ API 密钥 ”部分
      • 如果还没有,请创建一个新的 API 密钥
      • 复制 API 键的值(创建后将无法再次查看)
    • 项目编号
      • Go 添加到您的 watsonx.ai 项目
      • 选择或创建一个项目
      • 转到 “管理 ”选项卡
      • 查找并复制项目 ID
    • watsonx.ai URL :通常类似于 https://us-south.ml.cloud.ibm.com (但具体取决于您所在的地区)

    设置环境变量

    导出您的 IBM watsonx 凭据:
    export WATSONX_URL="<your-watsonx-url>"
    export WATSONX_PROJECT_ID="<your-project-id>"
    export WATSONX_API_KEY="<your-api-key>"

    或者,如果您更倾向于使用文件 .env 来存储凭据,请安装 python-dotenv

    pip install python-dotenv

    在项目目录中创建一个 .env 文件:

    WATSONX_URL=<your-watsonx-url>
    WATSONX_PROJECT_ID=<your-project-id>
    WATSONX_API_KEY=<your-api-key>

    然后在 Python 文件开头添加以下导入语句:

    from dotenv import load_dotenv
    load_dotenv()
  3. 创建您的 IBM watsonx 应用程序。 创建一个名为 Python 的文件,并输入以下代码:

    import os
    import random
    from langchain_ibm import WatsonxLLM
    from pydantic import SecretStr
    from traceloop.sdk import Traceloop
    from traceloop.sdk.decorators import workflow
    
    Traceloop.init(app_name="watsonx_chat_service", disable_batch=True)
    
    @workflow(name="watsonx_llm_query")  # type: ignore[arg-type]
    def generate_response(model_id: str, question: str) -> str:
        print(f"  → Initializing {model_id}...")
        llm = WatsonxLLM(
            model_id=model_id,
            url=SecretStr(os.getenv("WATSONX_URL", "")),
            apikey=SecretStr(os.getenv("WATSONX_API_KEY", "")),
            project_id=os.getenv("WATSONX_PROJECT_ID", ""),
            params={
                "max_new_tokens": 100,
                "temperature": 0.5,
            }
        )
        print(f"  → Sending request...")
        response = llm.invoke(question)
        print(f"  ✓ Response received")
        return response
    
    # Multiple models and prompts
    models = ['ibm/granite-8b-code-instruct', 'ibm/granite-4-h-small']
    questions = [
        "Tell me a fun fact about space exploration",
        "What would happen if you could travel at the speed of light?",
        "Explain quantum entanglement in simple terms",
        "What are the most interesting unsolved mysteries in science?",
        "If you could have any superpower, what would be most useful and why?"
    ]
    
    print("\n=== Starting WatsonX LLM Test ===\n")
    
    # Run multiple queries with different models and prompts
    for i in range(5):
        model = random.choice(models)
        question = random.choice(questions)
    
        print(f"\n[Query {i+1}/5]")
        print(f"Question: {question}")
    
        try:
            response = generate_response(model, question)
            print(f"Response: {response}\n")
        except Exception as e:
            print(f"ERROR: {str(e)}\n")
    
    print("=== Test Complete ===")
  4. 运行该应用程序。

    python3 watsonx_app.py

    该应用程序将向 IBM watsonx 发送问题,并显示回复内容。 OpenLLMetry 会自动捕获每次对 API 的调用所产生的跟踪信息,并将其发送至 Instana。

  5. 在 Instana 上查看数据。

    运行应用程序后, Instana Gen AI 可观测性仪表盘上将显示以下内容:

    • 使用的模型
    • 代币使用(输入和输出代币)
    • 响应延迟
    • 请求和响应内容

故障诊断

对于“轨迹未显示”或“连接错误”等常见问题,请参阅《 故障排除指南 》。

认证错误数

如果您遇到身份验证错误:

  1. 请确认您的设置 WATSONX_API_KEY 是否正确
  2. 请访问 IBM Cloud 检查您的 API 密钥是否有效
  3. 请确保您的 API 密钥尚未过期或被撤销
  4. 请确认您的项目 ID 是否正确

项目访问错误

如果您遇到项目访问错误:

  1. 请确认您的信息 WATSONX_PROJECT_ID 是否正确
  2. 请检查您的 API 密钥是否具有访问指定项目的权限
  3. 请确保该项目存在于您的 IBM watsonx 账户中
  4. 请确认项目位于正确的区域

找不到模型的错误

如果您遇到“找不到模型”的错误:

  1. 请确认型号名称是否正确(例如, ibm/granite-4-h-small
  2. 请确认该机型在您所在地区是否有售
  3. 请确保您的项目能够访问指定的模型
  4. 有关可用模型的信息,请参阅 IBM watsonx 中的模型文档

后续步骤