2025-01-27 15:59:48 +08:00
2025-01-27 15:59:48 +08:00
2025-01-26 14:53:55 +08:00
2025-01-27 13:47:13 +08:00
2025-01-27 13:47:13 +08:00
2025-01-27 15:21:40 +08:00
2025-01-26 15:26:46 +08:00

export GOOGLE_API_KEY=...  # ask han
export JINA_API_KEY=jina_...  # get from jina.ai
npm install
# example: no tool calling 
npm run dev "1+1="
npm run dev "what is the capital of France?"

# example: simple
npm run dev "what is the latest news from Jina AI?"

# example: wrong answer
npm run dev "what is the twitter account of jina ai's founder"

# example: open question, long chain of thoughts
npm run dev "who will be president of US in 2028?"
npm run dev "what should be jina ai strategy for 2025?"

flowchart TD
    subgraph Inputs[System Inputs]
        OrigQuestion[Original Question]
        TokenBudget[Token Budget]
    end

    subgraph States[Global States]
        direction TB
        GapQueue[Question Queue]
        ContextStore[Action History]
        BadStore[Failed Attempts]
        QuestionStore[Question History]
        KeywordStore[Keyword History]
    end

    subgraph Outputs[System Outputs]
        FinalAnswer[Answer]
    end

    TokenBudget -->|check| End[System End]
    
    OrigQuestion -->|initialize| GapQueue
    GapQueue -->|pop| NextQ[Question]
    NextQ -->|generate| AIResponse[Response]
    AIResponse -->|analyze| ActionType{Action Type}
    
    ActionType -->|is search| SearchOp[Search Results]
    SearchOp -->|store| ContextStore
    SearchOp -->|add| KeywordStore
    SearchOp -->|continue| TokenBudget
    
    ActionType -->|is read| URLData[URL Content]
    URLData -->|store| ContextStore
    URLData -->|continue| TokenBudget
    
    ActionType -->|is reflect| NewQuestions[Questions]
    NewQuestions -->|check against| QuestionStore
    NewQuestions -->|filter| UniqueQuestions[Unique Questions]
    UniqueQuestions -->|push to| GapQueue
    UniqueQuestions -->|add to| QuestionStore
    UniqueQuestions -->|continue| TokenBudget
    
    ActionType -->|is answer| AnswerCheck{Original Question}
    AnswerCheck -->|compare with| OrigQuestion
    AnswerCheck -->|is not| ContextStore
    ContextStore -->|continue| TokenBudget
    
    AnswerCheck -->|is| Evaluation[Answer Quality]
    Evaluation -->|check| ValidCheck{Quality}
    ValidCheck -->|passes| FinalAnswer
    FinalAnswer -->|return| End
    
    ValidCheck -->|fails| BadStore
    ValidCheck -->|fails and clear| ContextStore

    classDef state fill:#e1f5fe,stroke:#01579b
    classDef input fill:#e8f5e9,stroke:#2e7d32
    classDef output fill:#fce4ec,stroke:#c2185b
    class GapQueue,ContextStore,BadStore,QuestionStore,KeywordStore state
    class OrigQuestion,TokenBudget input
    class FinalAnswer output
Description
Keep searching, reading webpages, reasoning until it finds the answer (or exceeding the token budget)
Readme Pixar 32 MiB
Languages
TypeScript 99%
Dockerfile 0.5%
JavaScript 0.5%