mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-13 06:38:52 +02:00
![twitter-team](/assets/img/avatar_default.png)
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
24 lines
1.3 KiB
Scala
24 lines
1.3 KiB
Scala
package com.twitter.product_mixer.component_library.decorator.urt.builder.flexible_injection_pipeline
|
|
|
|
import com.twitter.product_mixer.component_library.decorator.urt.GroupByKey
|
|
import com.twitter.product_mixer.component_library.pipeline.candidate.flexible_injection_pipeline.transformer.FlipPromptInjectionsFeature
|
|
import com.twitter.product_mixer.component_library.pipeline.candidate.flexible_injection_pipeline.transformer.FlipPromptOffsetInModuleFeature
|
|
import com.twitter.product_mixer.core.feature.featuremap.FeatureMap
|
|
import com.twitter.product_mixer.core.model.common.UniversalNoun
|
|
import com.twitter.product_mixer.core.pipeline.PipelineQuery
|
|
|
|
object FlipPromptModuleGrouping extends GroupByKey[PipelineQuery, UniversalNoun[Any], Int] {
|
|
override def apply(
|
|
query: PipelineQuery,
|
|
candidate: UniversalNoun[Any],
|
|
candidateFeatures: FeatureMap
|
|
): Option[Int] = {
|
|
val injection = candidateFeatures.get(FlipPromptInjectionsFeature)
|
|
val offsetInModule = candidateFeatures.getOrElse(FlipPromptOffsetInModuleFeature, None)
|
|
|
|
// We return None for any candidate that doesn't have an offsetInModule, so that they are left as independent items.
|
|
// Otherwise, we return a hash of the injection instance which will be used to aggregate candidates with matching values into a module.
|
|
offsetInModule.map(_ => injection.hashCode())
|
|
}
|
|
}
|