监控 OpenAI 模型

OpenAI 提供基于Transformer的语言模型,支持自然语言理解和生成。 本指南将向您展示如何使用 OpenAI 模型配合 OpenLLMetry 对应用程序进行监控,并将遥测数据发送至 Instana。

先决条件

确保满足下列先决条件:

  • Python 3.8 或更高版本
  • 一个 OpenAI API 密钥(请从 OpenAI Platform 获取)
  • 一个 Instana 账户
  • 代理模式与无代理模式入门指南

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

  1. 安装必需的软件包。

    pip install openai traceloop-sdk
  2. 导出您的 OpenAI API 密钥。

    export OPENAI_API_KEY="your-openai-api-key>"
     
  3. 创建您的 OpenAI 应用程序。 创建一个名为 Python 的文件,并输入以下代码:

    import os
    from openai import OpenAI
    from traceloop.sdk import Traceloop
    from traceloop.sdk.decorators import workflow
    
    # Initialize OpenAI client
    client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
    
    # Initialize OpenLLMetry
    Traceloop.init(app_name="openai_chat_service", disable_batch=True)
    
    @workflow(name="openai_conversation")
    def ask_openai(question: str):
        """Send a question to OpenAI and get a response."""
    
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": question}]
        )
    
        return response.choices[0].message.content
    
    # Example usage
    if __name__ == "__main__":
        questions = [
            "What is AIOps and how does it help with IT operations?",
            "Explain the benefits of observability in modern applications."
        ]
    
        for question in questions:
            print(f"\nQuestion: {question}")
            answer = ask_openai(question)
            print(f"Answer: {answer}\n")
            print("-" * 80)
  4. 运行该应用程序。

    python3 openai_app.py

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

  5. 在 Instana 上查看数据。

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

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

使用流式响应

对于实时响应流,请使用流式 API :

@workflow(name="openai_streaming")
def ask_openai_streaming(question: str):
    """Stream responses from OpenAI in real-time."""

    stream = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": question}],
        stream=True
    )

    for chunk in stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)

    print()  # New line after streaming completes

故障诊断

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

认证错误数

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

  1. 请确认您的设置 OPENAI_API_KEY 是否正确
  2. 请检查您的 API 密钥在 OpenAI 平台上是否有效
  3. 请确保您的 API 密钥尚未过期或被撤销
  4. 请确认您的账户余额充足

速率限制错误

如果您遇到速率限制错误:

  1. 查看您的 OpenAI 账户的速率限制
  2. 如果进行多次调用,请在请求之间添加延迟
  3. 建议您升级 OpenAI 套餐,以获得更高的额度
  4. 为重试实现指数退避

找不到模型的错误

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

  1. 请确认型号名称是否正确(例如: gpt-4o-minigpt-4ogpt-3.5-turbo
  2. 请检查您的 API 密钥是否具有访问指定模型的权限
  3. 请确认该机型在您所在地区有售
  4. 有关可用模型的信息,请参阅 OpenAI's 上的模型文档

后续步骤