diff --git a/README.md b/README.md index e02e877..80e448a 100644 --- a/README.md +++ b/README.md @@ -288,46 +288,131 @@ Not sure a flowchart helps, but here it is: ```mermaid flowchart TD Start([Start]) --> Init[Initialize context & variables] - Init --> CheckBudget{Token budget
exceeded?} - CheckBudget -->|No| GetQuestion[Get current question
from gaps] - CheckBudget -->|Yes| BeastMode[Enter Beast Mode] - - GetQuestion --> GenPrompt[Generate prompt] - GenPrompt --> ModelGen[Generate response
using Gemini] - ModelGen --> ActionCheck{Check action
type} - - ActionCheck -->|answer| AnswerCheck{Is original
question?} - AnswerCheck -->|Yes| EvalAnswer[Evaluate answer] - EvalAnswer --> IsGoodAnswer{Is answer
definitive?} - IsGoodAnswer -->|Yes| HasRefs{Has
references?} - HasRefs -->|Yes| End([End]) - HasRefs -->|No| GetQuestion - IsGoodAnswer -->|No| StoreBad[Store bad attempt
Reset context] - StoreBad --> GetQuestion - - AnswerCheck -->|No| StoreKnowledge[Store as intermediate
knowledge] - StoreKnowledge --> GetQuestion - - ActionCheck -->|reflect| ProcessQuestions[Process new
sub-questions] - ProcessQuestions --> DedupQuestions{New unique
questions?} - DedupQuestions -->|Yes| AddGaps[Add to gaps queue] - DedupQuestions -->|No| DisableReflect[Disable reflect
for next step] - AddGaps --> GetQuestion - DisableReflect --> GetQuestion - - ActionCheck -->|search| SearchQuery[Execute search] - SearchQuery --> NewURLs{New URLs
found?} - NewURLs -->|Yes| StoreURLs[Store URLs for
future visits] - NewURLs -->|No| DisableSearch[Disable search
for next step] - StoreURLs --> GetQuestion - DisableSearch --> GetQuestion - - ActionCheck -->|visit| VisitURLs[Visit URLs] - VisitURLs --> NewContent{New content
found?} - NewContent -->|Yes| StoreContent[Store content as
knowledge] - NewContent -->|No| DisableVisit[Disable visit
for next step] - StoreContent --> GetQuestion - DisableVisit --> GetQuestion - - BeastMode --> FinalAnswer[Generate final answer] --> End + Init --> ExtractURLs[Extract URLs From Messages] + ExtractURLs --> CheckBudget{Token Budget
NOT Exceeded?} + + CheckBudget -->|Yes| StepSetup[Set Up Step And Select Current Question] + CheckBudget -->|No| ExitLoop[Exit Loop] + + StepSetup --> IsFirstStep{Is First Step?} + IsFirstStep -->|Yes| SetupEvaluation[Set Up Evaluation Metrics] + IsFirstStep -->|No| IsSubQuestion{Is Sub Question?} + + IsSubQuestion -->|Yes| EmptyEvaluation[Set Empty Evaluation Metrics] + IsSubQuestion -->|No| ContinueSetup[Continue Setup] + + SetupEvaluation --> FreshnessCheck{Step 1 &
Freshness Eval?} + EmptyEvaluation --> ContinueSetup + + FreshnessCheck -->|Yes| DisableFlags[Disable Answer & Reflect] + FreshnessCheck -->|No| ContinueSetup + DisableFlags --> ContinueSetup + + ContinueSetup --> ControlActions[Control Action Availability] + ControlActions --> GenPrompt[Generate Prompt And Schema] + GenPrompt --> ModelGen[Generate Response Using LLM] + ModelGen --> TrackAction[Track Action And Reset Flags] + TrackAction --> ActionSwitch{Select Action Type} + + %% Answer Flow + ActionSwitch -->|Answer| AnswerCheck{Step 1 &
!noDirectAnswer?} + AnswerCheck -->|Yes| MarkTrivial[Mark Trivial And Break] + AnswerCheck -->|No| EvalAnswer[Evaluate Answer] + + EvalAnswer --> IsOriginal{Is Original Question?} + IsOriginal -->|Yes| EvalPass{Evaluation Pass?} + IsOriginal -->|No| SubPass{Evaluation Pass?} + + EvalPass -->|Yes| MarkFinal[Mark Final And Break] + EvalPass -->|No| DecrementEvals[Decrement Evals & Add To PIP] + + DecrementEvals --> EvalsExhausted{All Evals Exhausted?} + EvalsExhausted -->|Yes| MarkNotFinal[Mark Not Final And Break] + EvalsExhausted -->|No| AnalyzeErrors[Analyze Errors & Disable Answer] + + SubPass -->|Yes| StoreKnowledge[Store Knowledge & Remove Gap] + SubPass -->|No| ContinueLoop1[Continue Loop] + AnalyzeErrors --> ContinueLoop1 + StoreKnowledge --> ContinueLoop1 + + MarkTrivial --> ExitLoop + MarkFinal --> ExitLoop + MarkNotFinal --> ExitLoop + + %% Reflect Flow + ActionSwitch -->|Reflect| DedupReflect[Deduplicate Questions] + DedupReflect --> NewQs{New Unique Questions?} + NewQs -->|Yes| AddGaps[Add To Gaps] + NewQs -->|No| LogFail[Log Failure] + AddGaps --> DisableReflect[Disable Reflect] + LogFail --> DisableReflect + DisableReflect --> ContinueLoop2[Continue Loop] + + %% Search Flow + ActionSwitch -->|Search| DedupSearch[Deduplicate Search] + DedupSearch --> ExecSearch[Execute Search Queries] + ExecSearch --> TeamCheck{Team >1 &
Multi-subproblems?} + + TeamCheck -->|Yes| TeamResearch[Research Plan & Recurse] + TeamResearch --> AggregateAnswers[Aggregate Answers] + AggregateAnswers --> TeamBreak[Break Loop] + TeamBreak --> ExitLoop + + TeamCheck -->|No| RewriteQueries[Rewrite Queries] + RewriteQueries --> ExecRewritten[Execute Rewritten] + ExecRewritten --> DisableSearch[Disable Search & Answer] + DisableSearch --> ContinueLoop3[Continue Loop] + + %% Visit Flow + ActionSwitch -->|Visit| NormalizeURLs[Normalize & Filter URLs] + NormalizeURLs --> ProcessPages[Process Pages] + ProcessPages --> UpdateVisit[Update Context] + UpdateVisit --> DisableVisit[Disable Visit] + DisableVisit --> ContinueLoop4[Continue Loop] + + %% Coding Flow + ActionSwitch -->|Coding| SolveCode[Solve Coding Issue] + SolveCode --> CodeSuccess{Success?} + CodeSuccess -->|Yes| StoreSolution[Store Solution] + CodeSuccess -->|No| LogCodeError[Log Error] + StoreSolution --> DisableCoding[Disable Coding] + LogCodeError --> DisableCoding + DisableCoding --> ContinueLoop5[Continue Loop] + + %% Loop Back + ContinueLoop1 --> StoreContext[Store Context] + ContinueLoop2 --> StoreContext + ContinueLoop3 --> StoreContext + ContinueLoop4 --> StoreContext + ContinueLoop5 --> StoreContext + StoreContext --> WaitStep[Wait STEP_SLEEP] + WaitStep --> CheckBudget + + %% Post-Loop Processing + ExitLoop --> CheckFinal{isFinal?} + CheckFinal -->|No| BeastMode[Beast Mode] + CheckFinal -->|Yes| FinalProcessing[Process Final Answer] + + BeastMode --> BeastPrompt[Generate Beast Prompt] + BeastPrompt --> BeastModel[Generate Beast Response] + BeastModel --> SetFinal[Set isFinal=true] + SetFinal --> FinalProcessing + + %% Final Assembly + FinalProcessing --> IsTrivial{Trivial?} + IsTrivial -->|Yes| BuildSimple[Build Simple MD] + IsTrivial -->|No| IsAggregated{Aggregated?} + + IsAggregated -->|Yes| BuildAggregate[Concat Answers & Filter Images] + IsAggregated -->|No| FinalizeAnswer[Finalize Answer] + + FinalizeAnswer --> BuildReferences[Build References] + BuildReferences --> WithImages{With Images?} + WithImages -->|Yes| BuildImageRefs[Build Image References] + WithImages -->|No| PrepareReturn[Prepare Return] + + BuildImageRefs --> PrepareReturn + BuildSimple --> PrepareReturn + BuildAggregate --> PrepareReturn + PrepareReturn --> End([End]) ```