Category CTA on condensed query + memoized effective_question
This commit is contained in:
parent
9ef74547ce
commit
a24ae90ecb
2 changed files with 15 additions and 5 deletions
|
|
@ -281,9 +281,14 @@ module DepiedencapAiCitations
|
||||||
def self.effective_question(post)
|
def self.effective_question(post)
|
||||||
return "" if post.blank?
|
return "" if post.blank?
|
||||||
|
|
||||||
|
# Mémoïsé par post : PlaygroundHook (génération) puis Sanitizer (for_post
|
||||||
|
# + suggested_category) appellent tous effective_question — un seul appel
|
||||||
|
# de condensation par message utilisateur au lieu de trois.
|
||||||
|
Discourse.cache.fetch("dpec_effq:#{post.id}", expires_in: CACHE_TTL) do
|
||||||
latest = post.raw.to_s.gsub(/<[^>]+>/, " ").squish
|
latest = post.raw.to_s.gsub(/<[^>]+>/, " ").squish
|
||||||
condense_query(latest, history_for(post))
|
condense_query(latest, history_for(post))
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.history_for(post)
|
def self.history_for(post)
|
||||||
return [] if post.blank? || post.topic.blank?
|
return [] if post.blank? || post.topic.blank?
|
||||||
|
|
@ -303,8 +308,8 @@ module DepiedencapAiCitations
|
||||||
|
|
||||||
# Réécrit le dernier message en requête autonome à partir de l'historique
|
# Réécrit le dernier message en requête autonome à partir de l'historique
|
||||||
# (ex. "Ok, box calf goodyear" après "mes Carmina" → "entretien Carmina
|
# (ex. "Ok, box calf goodyear" après "mes Carmina" → "entretien Carmina
|
||||||
# box calf Goodyear"). Modèle dédié léger (pas Qwen 30B : pas de mode
|
# box calf Goodyear"). Même LLM que la génération (qwen3:30b MoE, rapide
|
||||||
# thinking à gérer, latence courte) — indispo/erreur → dernier message tel quel.
|
# à ~3B actifs, think:false forcé) — indispo/erreur → dernier message tel quel.
|
||||||
def self.condense_query(latest, history)
|
def self.condense_query(latest, history)
|
||||||
return latest if history.blank?
|
return latest if history.blank?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,13 @@ module DepiedencapAiCitations
|
||||||
|
|
||||||
return if post.custom_fields["depiedencap_ai_citations"] == "t"
|
return if post.custom_fields["depiedencap_ai_citations"] == "t"
|
||||||
|
|
||||||
question = user_question(post)
|
|
||||||
user_post = originating_user_post(post)
|
user_post = originating_user_post(post)
|
||||||
|
# La suggestion de catégorie doit voir la requête reformulée (qui porte
|
||||||
|
# l'intention, ex. « entretenir »), pas le dernier message brut —
|
||||||
|
# sinon un tour de suivi (« ok, box calf goodyear ») suggère la mauvaise
|
||||||
|
# catégorie. effective_question est mémoïsé par post : pas d'appel en plus.
|
||||||
|
question =
|
||||||
|
user_post ? Retrieval.effective_question(user_post) : user_question(post)
|
||||||
# Mêmes reformulation/cache que ce que le LLM a vu (PlaygroundHook) : sans
|
# Mêmes reformulation/cache que ce que le LLM a vu (PlaygroundHook) : sans
|
||||||
# ça, la question réécrite par condense_query pour la génération et la
|
# ça, la question réécrite par condense_query pour la génération et la
|
||||||
# question brute utilisée ici pour les citations divergeraient.
|
# question brute utilisée ici pour les citations divergeraient.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue