Skip to content
xiaoyang 的头像xiaoyang发布于 2025-01-161,465 字阅读约 5 分钟浏览加载中

可观测性 ​

大语言模型 (LLM) 可观测性 ​

某些 ChatLanguageModel 和 StreamingChatLanguageModel 的具体实现(请参阅“可观测性”列)支持配置 ChatModelListener,用于监听以下事件:

  • 向 LLM 发出的请求
  • LLM 返回的响应
  • 错误事件

这些事件包含多个属性,详见 OpenTelemetry 生成式 AI 语义约定,包括:

  • 请求属性:
    • 模型
    • 温度 (Temperature)
    • Top P
    • 最大令牌数 (Max Tokens)
    • 消息
    • 工具 (Tools)
  • 响应属性:
    • ID
    • 模型
    • 令牌使用量 (Token Usage)
    • 结束原因 (Finish Reason)
    • 助手消息 (Assistant Message)

以下是使用 ChatModelListener 的示例:

java
ChatModelListener listener = new ChatModelListener() {

    @Override
    public void onRequest(ChatModelRequestContext requestContext) {
        ChatModelRequest request = requestContext.request();
        Map<Object, Object> attributes = requestContext.attributes();
        ...
    }

    @Override
    public void onResponse(ChatModelResponseContext responseContext) {
        ChatModelResponse response = responseContext.response();
        ChatModelRequest request = responseContext.request();
        Map<Object, Object> attributes = responseContext.attributes();
        ...
    }

    @Override
    public void onError(ChatModelErrorContext errorContext) {
        Throwable error = errorContext.error();
        ChatModelRequest request = errorContext.request();
        ChatModelResponse partialResponse = errorContext.partialResponse();
        Map<Object, Object> attributes = errorContext.attributes();
        ...
    }
};

ChatLanguageModel model = OpenAiChatModel.builder()
        .apiKey(System.getenv("OPENAI_API_KEY"))
        .modelName(GPT_4_O_MINI)
        .listeners(List.of(listener))
        .build();

model.generate("Tell me a joke about Java");

attributes 映射允许在 onRequest、onResponse 和 onError 方法之间传递信息,从而实现更灵活的事件处理。

DISCUSSION

评论区

欢迎分享你的思考、补充或问题。

基于 VitePress 搭建