特定 的 ChatLanguageModel
和 StreamingChatLanguageModel
实现(请参见“可观测性”列)允许配置 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
映射允许在 onRequest
、onResponse
和 onError
方法之间传递信息。
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM Agent应用开发
- 区块链应用开发
- 大数据开发挖掘经验
推荐系统项目
目前主攻市级软件项目设计、构建服务全社会的应用系统。
参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。