当前位置: 首页 > article >正文

深入理解LLM的可观测性

特定 的 ChatLanguageModelStreamingChatLanguageModel 实现(请参见“可观测性”列)允许配置 ChatModelListener,用于监听以下事件:

  • 对 LLM 的请求
  • LLM 的响应
  • 错误

这些事件包含的属性包括OpenTelemetry 生成 AI 语义约定中的描述,例如:

  • 请求:
    • 模型
    • 温度(Temperature)
    • Top P
    • 最大 Tokens
    • 消息
    • 工具
  • 响应:
    • ID
    • 模型
    • Token 使用情况
    • 结束原因
    • AI 助手消息

以下是使用 ChatModelListener 的示例:

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("讲一个关于 Java 的笑话");

attributes 映射允许在 onRequestonResponseonError 方法之间传递信息。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM Agent应用开发

  • 区块链应用开发

  • 大数据开发挖掘经验

  • 推荐系统项目

    目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!


http://www.kler.cn/news/318141.html

相关文章:

  • 31. RabbitMQ顺序消费
  • HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景
  • 解决配置文件中有spring.profiles.active = “@spring.profiles.active@“但是读取不到生效的配置文件的问题
  • pg入门17—如何查看pg版本
  • yolo介绍
  • Python画笔案例-059 绘制甩曲彩点动图
  • Linux下搭建iSCSI共享存储-Tgt
  • C++封装
  • 如何在C++中使用Poppler库读取PDF文件(一)
  • 解决方案 | 镭速助力动漫游戏行业突破跨网文件交换瓶颈
  • JUC并发编程_四大函数式接口
  • provide,inject父传子
  • Git使用教程-将idea本地文件配置到gitte上的保姆级别教程
  • 3.postman脚本语言、接口关联(json引用(变量)、脚本用正则表达式)、断言封装、自动化构造接口请求(Postman工具)
  • 如何在云端使用 Browserless 进行网页抓取?
  • 数据结构_1.1、数据结构的基本概念
  • 高校心理辅导系统:Spring Boot技术实现指南
  • Linux usb core阅读
  • 安卓沉浸式状态栏遇到的问题
  • 【Linux实践】实验三:LINUX系统的文件操作命令
  • 【强化学习系列】Gym库使用——创建自己的强化学习环境3:矢量化环境+奖励函数设计
  • 【30天玩转python】单元测试与调试
  • 制造企业MES系统委外工单管理探析
  • js中正则表达式中【exec】用法深度解读
  • 【Finetune】(五)、transformers之LORA微调
  • JetLinks物联网学习(前后端项目启动)
  • 学习编程利器《西蒙学习法》
  • 边学英语边学 Java|Synchronization in java
  • vite配置将es6打包成es5
  • Java-ArrayList和LinkedList区别