Ok, i think i finally worked through all the butchering my bad workflow did. Should be cleaned up now.
// A feature that can show contextual cues to the user. Register one CueTarget
// per distinct trigger mechanism (e.g., kGlicSearch vs kGlicDigest) to enable
// independent UCB scoring and backoff tracking per trigger type.@sophiechang For discussion - After going through this and the subsequent CLs to fix the workflow, I'm inclined to say we split each trigger mechanism into it's own cue target (so education, shopping, etc), so they get ranked by UCB independently. Thoughts?
virtual void GenerateContent(content::WebContents* web_contents,Benedict Wongit might make sense here to also provide the intrusiveness of what they want to show and a feature can either deny if its not loud enough or call their callback? thoughts?
Yeah, got flipped; intrusiveness is passed in.
virtual void GenerateContent(content::WebContents* web_contents,Benedict Wongit might make sense here to also provide the intrusiveness of what they want to show and a feature can either deny if its not loud enough or call their callback? thoughts?
Rolled into the eligibility check; was previously inverted/flipped - that's the gating call on whether a cue target should trigger a cue or not.
// Generates the actual cue content.Benedict Wongshould be specific about when this is called. ie. this is only called if we decided to show this target's cue right?
Done, added documentation on lifecycle.
// Generates the actual cue content.Benedict Wongshould be specific about when this is called. ie. this is only called if we decided to show this target's cue right?
Done
EligibilityCallback callback);Benedict Wongjust "= 0;" so the teams actually implement - same with below
Done
EligibilityCallback callback);Benedict Wongjust "= 0;" so the teams actually implement - same with below
Done
// Checks page eligibility. This must be a cheap, local check.Benedict Wongwe should probably be specific for when this gets called - is it at page load time? other?
Done.
float confidence = 0.0f; // Source-specific confidence score [0, 1]Benedict Wonghmm i think this is probably just going to end up as a bool most of the time? should we just do that?
Done
float confidence = 0.0f; // Source-specific confidence score [0, 1]Benedict Wonghmm i think this is probably just going to end up as a bool most of the time? should we just do that?
Done
CueTargetType source = CueTargetType::kGlic;Benedict Wongcan we remove source from here? we can probably just keep track of it internally
im largely thinking of this as the consumer public interface
Done
CueTargetType source = CueTargetType::kGlic;Benedict Wongcan we remove source from here? we can probably just keep track of it internally
im largely thinking of this as the consumer public interface
Done
enum class CueIntrusiveness {Benedict Wongdo we want each team to specify this themselves? i feel like as triggering framework - we should help them prioritize
Logic was flipped previously; had a rogue agent workflow that managed to flip my workflow.
But this is framework defined, and passed into the eligibility checks, so that each cue target has the ability to decide whether it wants to support quiet cues independently (static cues or locally generated cues might allow us to do quiet cues, whereas server generated ones might be too costly).
Is this what you were thinking?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
// TODO(benedictwong): Remove from the public interface oncesame here with bug
virtual void GenerateContent(content::WebContents* web_contents,ok so plan here is that we always do ranking client side with no server side ranking? i think thats fine but just wanted to make sure you didnt want to consider that alt at all (and may make it annoying to consolidate llm calls)
to be less vague: i think we should leave that option open and so this might not necessarily be the right method signature to do so.
// RunLegacySingleSourcePath() is fully migrated. Targets should performthough this method does not exist
// TODO(benedictwong): Remove from the public interface oncebug please
// A feature that can show contextual cues to the user. Register one CueTarget
// per distinct trigger mechanism (e.g., kGlicSearch vs kGlicDigest) to enable
// independent UCB scoring and backoff tracking per trigger type.@sophiechang For discussion - After going through this and the subsequent CLs to fix the workflow, I'm inclined to say we split each trigger mechanism into it's own cue target (so education, shopping, etc), so they get ranked by UCB independently. Thoughts?
I don't love it as mentioned on chat. can we do it later if we see that there is actually a need
enum class CueIntrusiveness {Benedict Wongdo we want each team to specify this themselves? i feel like as triggering framework - we should help them prioritize
Logic was flipped previously; had a rogue agent workflow that managed to flip my workflow.
But this is framework defined, and passed into the eligibility checks, so that each cue target has the ability to decide whether it wants to support quiet cues independently (static cues or locally generated cues might allow us to do quiet cues, whereas server generated ones might be too costly).
Is this what you were thinking?
i see - hmm fine for now.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
// TODO(benedictwong): Remove from the public interface onceBenedict Wongsame here with bug
Done
virtual void GenerateContent(content::WebContents* web_contents,ok so plan here is that we always do ranking client side with no server side ranking? i think thats fine but just wanted to make sure you didnt want to consider that alt at all (and may make it annoying to consolidate llm calls)
to be less vague: i think we should leave that option open and so this might not necessarily be the right method signature to do so.
Ok, discussed offline - shifting to returning a optional generateCallback in the eligibility check. If present, the framework will preferentially use that. If absent, the framework will fallback to using MES, with the list of prioritized cue targets sent to MES.
This gives us enough flexibility and granularity to support separate cue targets / UCB scoring targets for individual verticals, OR to keep them combined if necessary.
For the MES request, we'll send ALL eligible, server-generated cue targets.
// RunLegacySingleSourcePath() is fully migrated. Targets should performthough this method does not exist
Done
// TODO(benedictwong): Remove from the public interface onceBenedict Wongbug please
Done
}Benedict Wong`// namespace page_content_annotations`
Done
// A feature that can show contextual cues to the user. Register one CueTarget
// per distinct trigger mechanism (e.g., kGlicSearch vs kGlicDigest) to enable
// independent UCB scoring and backoff tracking per trigger type.Sophie Chang@sophiechang For discussion - After going through this and the subsequent CLs to fix the workflow, I'm inclined to say we split each trigger mechanism into it's own cue target (so education, shopping, etc), so they get ranked by UCB independently. Thoughts?
I don't love it as mentioned on chat. can we do it later if we see that there is actually a need
Acknowledged
}Benedict Wong`// namespace page_content_annotations`
Done
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
virtual void CheckEligibility(content::WebContents* web_contents,should we just pass the weak ptr here then? instead of raw ptr
// will request content from MES.instead of MES -> lets just say that it will be generated centrally.
// will invoke it to produce content if this target wins UCB
// ranking. If null (and eligible is true), the controllerinstead of "wins UCB ranking" lets call this, framework decided to show the cue for this target
std::optional<CueIntrusiveness> eligible_intrusiveness = std::nullopt;dont need to define the `std::nullopt` here and next one
void GlicCueTarget::CheckEligibility(im a little worried about reentrantness here but you dont have the calling code yet so cant judge how error prone it is.
can we add to the todo that we might want to post this onto the task runner for the main thread
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
virtual void CheckEligibility(content::WebContents* web_contents,should we just pass the weak ptr here then? instead of raw ptr
One day i'll understand the difference between C and C++
instead of MES -> lets just say that it will be generated centrally.
Done
// will invoke it to produce content if this target wins UCB
// ranking. If null (and eligible is true), the controllerinstead of "wins UCB ranking" lets call this, framework decided to show the cue for this target
Done
std::optional<CueIntrusiveness> eligible_intrusiveness = std::nullopt;dont need to define the `std::nullopt` here and next one
Done
im a little worried about reentrantness here but you dont have the calling code yet so cant judge how error prone it is.
can we add to the todo that we might want to post this onto the task runner for the main thread
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |