请求事件发送
大约 1 分钟
请求事件发送
我们AIAB系统中目前有三种事件,一种是用户请求事件,用来收集如请求响应时间、消耗token数等指标;另一种是用户评价事件,用来收集用户在使用过程中的用户反馈;同时,我们也支持埋点事件,用于收集一些埋点数据,下面介绍用户请求事件。
用户请求事件
用户请求事件是我们AIAB系统中默认的事件,用于收集用户在使用过程中发起请求的各项参数指标,为后续评估做参考。此事件在每次调用请求时会默认发送
以下是用户请求事件的相关代码:
public ResponseEntity<String> chatCompletion(ChatCompletionRequest request,
String flagKey,
String sdkKey,
String userId) {
......
//记录开始时间
long startTime = System.currentTimeMillis();
//调用真实大模型API获取响应
......
//计算响应时间
long responseTime = System.currentTimeMillis() - startTime;
//获取对应大模型token单价
Map<String, Object> price = (Map<String, Object>) configStore.get(name).get("price");
Double outputPrice = (Double) price.get("completion_tokens_cost");
Double inputPrice = (Double) price.get("prompt_tokens_cost");
//计算一次请求所需成本和消耗token数
Map<String, Object> responseMessages = calculateTotalCost(response, inputPrice, outputPrice);
//创建指标
HashMap<String, Object> eventTags = new HashMap<>();
eventTags.put("latency", responseTime);
//获取请求成本
eventTags.put("cost", responseMessages.get("cost"));
//获取请求消耗的token数
eventTags.put("token_usage", responseMessages.get("total_tokens"));
Eyeofcloud eyeofcloud = proxyDecisionService.getInstance(sdkKey);
EyeofcloudUserContext userContext = eyeofcloud.createUserContext(userId);
//发送事件
userContext.trackEvent("prompt_completion", eventTags);
return response;
}
注意:AIAB系统请求事件key固定为prompt_completion