onToolCall method

  1. @override
Future<void> onToolCall({
  1. required Trial trial,
  2. required ToolCallRecord record,
})
override

Called for each tool call.

Implementation

@override
Future<void> onToolCall({
  required Trial trial,
  required ToolCallRecord record,
}) async {
  final traceId = _traceIdFor(trial);
  _client.enqueue(
    LangfuseEvent(
      id: _uuid.v4(),
      type: 'span-create',
      timestamp: record.startedAt,
      body: {
        'id': _uuid.v4(),
        'traceId': traceId,
        'environment': config.environment,
        'name': 'tool.${record.toolName}',
        'startTime': record.startedAt.toUtc().toIso8601String(),
        'endTime': record.endedAt.toUtc().toIso8601String(),
        'input': {
          'callId': record.callId,
          'toolName': record.toolName,
          'arguments': record.arguments,
        },
        if (record.result != null) 'output': record.result!.toJson(),
        if (record.isError) ...{
          'level': 'ERROR',
          'statusMessage': record.errorMessage ?? 'tool error',
        },
      },
    ),
  );
}