onLLMCall method
Future<void>
onLLMCall({
- required Trial trial,
- required List<
LLMMessage> requestMessages, - required ModelConfig modelConfig,
- required ModelMessage? response,
- required Duration duration,
- Object? error,
override
Called for each LLM call. response is null on errors.
Implementation
@override
Future<void> onLLMCall({
required Trial trial,
required List<LLMMessage> requestMessages,
required ModelConfig modelConfig,
required ModelMessage? response,
required Duration duration,
Object? error,
}) async {
final traceId = _traceIdFor(trial);
final endTime = DateTime.now();
final startTime = endTime.subtract(duration);
final usage = response?.usage;
_client.enqueue(
LangfuseEvent(
id: _uuid.v4(),
type: 'generation-create',
timestamp: startTime,
body: {
'id': _uuid.v4(),
'traceId': traceId,
'environment': config.environment,
'name': 'llm.${modelConfig.model}',
'startTime': startTime.toUtc().toIso8601String(),
'endTime': endTime.toUtc().toIso8601String(),
'model': modelConfig.model,
'modelParameters': _modelParameters(modelConfig),
'input': requestMessages.map((m) => m.toJson()).toList(),
if (response != null) 'output': response.toJson(),
if (usage != null)
'usage': {
'input': usage.promptTokens,
'output': usage.completionTokens,
'total': usage.totalTokens,
'unit': 'TOKENS',
},
if (error != null) ...{
'level': 'ERROR',
'statusMessage': error.toString(),
},
},
),
);
}