[{"data":1,"prerenderedAt":718},["ShallowReactive",2],{"\u002Fdocs\u002Fapi-reference\u002Fmango-agent":3},{"id":4,"title":5,"body":6,"description":710,"extension":711,"meta":712,"navigation":713,"path":714,"seo":715,"stem":716,"__hash__":717},"docs\u002Fdocs\u002F4.api-reference\u002F1.mango-agent.md","MangoAgent",{"type":7,"value":8,"toc":698},"minimark",[9,13,42,47,197,201,208,224,230,233,239,245,248,254,273,282,307,309,315,320,326,330,336,346,457,459,465,468,483,485,491,494,503,505,509,605,607,610,694],[10,11,5],"h1",{"id":12},"mangoagent",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-python shiki shiki-themes github-dark","from mango.agent import MangoAgent\n","python","",[21,22,23],"code",{"__ignoreMap":19},[24,25,28,32,36,39],"span",{"class":26,"line":27},"line",1,[24,29,31],{"class":30},"snl16","from",[24,33,35],{"class":34},"s95oV"," mango.agent ",[24,37,38],{"class":30},"import",[24,40,41],{"class":34}," MangoAgent\n",[43,44,46],"h2",{"id":45},"constructor","Constructor",[14,48,50],{"className":16,"code":49,"language":18,"meta":19,"style":19},"MangoAgent(\n    llm_service: LLMService,\n    tool_registry: ToolRegistry,\n    db: NoSQLRunner | None = None,\n    agent_memory: MemoryService | None = None,\n    schema: dict[str, SchemaInfo] | None = None,\n    introspect: bool = False,\n    max_iterations: int = 8,\n    memory_top_k: int = 3,\n    max_turns: int = 5,\n)\n",[21,51,52,57,63,69,91,107,129,145,161,176,191],{"__ignoreMap":19},[24,53,54],{"class":26,"line":27},[24,55,56],{"class":34},"MangoAgent(\n",[24,58,60],{"class":26,"line":59},2,[24,61,62],{"class":34},"    llm_service: LLMService,\n",[24,64,66],{"class":26,"line":65},3,[24,67,68],{"class":34},"    tool_registry: ToolRegistry,\n",[24,70,72,75,78,82,85,88],{"class":26,"line":71},4,[24,73,74],{"class":34},"    db: NoSQLRunner ",[24,76,77],{"class":30},"|",[24,79,81],{"class":80},"s9osk"," None",[24,83,84],{"class":30}," =",[24,86,81],{"class":87},"sDLfK",[24,89,90],{"class":34},",\n",[24,92,94,97,99,101,103,105],{"class":26,"line":93},5,[24,95,96],{"class":34},"    agent_memory: MemoryService ",[24,98,77],{"class":30},[24,100,81],{"class":80},[24,102,84],{"class":30},[24,104,81],{"class":87},[24,106,90],{"class":34},[24,108,110,113,116,119,121,123,125,127],{"class":26,"line":109},6,[24,111,112],{"class":34},"    schema: dict[",[24,114,115],{"class":87},"str",[24,117,118],{"class":34},", SchemaInfo] ",[24,120,77],{"class":30},[24,122,81],{"class":80},[24,124,84],{"class":30},[24,126,81],{"class":87},[24,128,90],{"class":34},[24,130,132,135,138,140,143],{"class":26,"line":131},7,[24,133,134],{"class":34},"    introspect: ",[24,136,137],{"class":80},"bool",[24,139,84],{"class":30},[24,141,142],{"class":87}," False",[24,144,90],{"class":34},[24,146,148,151,154,156,159],{"class":26,"line":147},8,[24,149,150],{"class":34},"    max_iterations: ",[24,152,153],{"class":80},"int",[24,155,84],{"class":30},[24,157,158],{"class":87}," 8",[24,160,90],{"class":34},[24,162,164,167,169,171,174],{"class":26,"line":163},9,[24,165,166],{"class":34},"    memory_top_k: ",[24,168,153],{"class":80},[24,170,84],{"class":30},[24,172,173],{"class":87}," 3",[24,175,90],{"class":34},[24,177,179,182,184,186,189],{"class":26,"line":178},10,[24,180,181],{"class":34},"    max_turns: ",[24,183,153],{"class":80},[24,185,84],{"class":30},[24,187,188],{"class":87}," 5",[24,190,90],{"class":34},[24,192,194],{"class":26,"line":193},11,[24,195,196],{"class":34},")\n",[43,198,200],{"id":199},"methods","Methods",[202,203,205],"h3",{"id":204},"setup-none",[21,206,207],{},"setup() → None",[209,210,211,212,215,216,219,220,223],"p",{},"Initializes the agent. Runs schema introspection if ",[21,213,214],{},"introspect=True"," and ",[21,217,218],{},"db"," is set. Builds the system prompt. Must be called before the first ",[21,221,222],{},"ask()",".",[209,225,226,227,229],{},"Called automatically on the first ",[21,228,222],{}," if not called manually.",[231,232],"hr",{},[202,234,236],{"id":235},"askquestion-on_tool_callnone-agentresponse",[21,237,238],{},"ask(question, on_tool_call=None) → AgentResponse",[209,240,241],{},[242,243,244],"em",{},"async",[209,246,247],{},"Asks a question and returns the complete answer.",[209,249,250],{},[251,252,253],"strong",{},"Parameters:",[255,256,257,264],"ul",{},[258,259,260,263],"li",{},[21,261,262],{},"question: str"," — natural language question",[258,265,266,269,270],{},[21,267,268],{},"on_tool_call: Callable[[str, dict, str], None] | None"," — optional callback called after each tool execution with ",[21,271,272],{},"(tool_name, tool_args, result_text)",[209,274,275,278,279],{},[251,276,277],{},"Returns:"," ",[21,280,281],{},"AgentResponse",[14,283,285],{"className":16,"code":284,"language":18,"meta":19,"style":19},"response = await agent.ask(\"How many users signed up last week?\")\n",[21,286,287],{"__ignoreMap":19},[24,288,289,292,295,298,301,305],{"class":26,"line":27},[24,290,291],{"class":34},"response ",[24,293,294],{"class":30},"=",[24,296,297],{"class":30}," await",[24,299,300],{"class":34}," agent.ask(",[24,302,304],{"class":303},"sU2Wk","\"How many users signed up last week?\"",[24,306,196],{"class":34},[231,308],{},[202,310,312],{"id":311},"ask_streamquestion-asyncgeneratordict-none",[21,313,314],{},"ask_stream(question) → AsyncGenerator[dict, None]",[209,316,317],{},[242,318,319],{},"async generator",[209,321,322,323,325],{},"Same as ",[21,324,222],{}," but yields events as they happen. Use for real-time UIs.",[209,327,328],{},[251,329,253],{},[255,331,332],{},[258,333,334,263],{},[21,335,262],{},[209,337,338,341,342,345],{},[251,339,340],{},"Yields"," dicts with ",[21,343,344],{},"type"," field:",[14,347,349],{"className":16,"code":348,"language":18,"meta":19,"style":19},"async for event in agent.ask_stream(\"...\"):\n    match event[\"type\"]:\n        case \"tool_call\":\n            # event[\"tool_name\"], event[\"tool_args\"]\n        case \"tool_result\":\n            # event[\"tool_name\"], event[\"success\"], event[\"preview\"]\n        case \"answer\":\n            # event[\"text\"]\n        case \"done\":\n            # event[\"iterations\"], event[\"input_tokens\"],\n            # event[\"output_tokens\"], event[\"memory_hits\"],\n            # event[\"tool_calls_made\"]\n",[21,350,351,373,387,398,404,413,418,427,432,441,446,451],{"__ignoreMap":19},[24,352,353,355,358,361,364,367,370],{"class":26,"line":27},[24,354,244],{"class":30},[24,356,357],{"class":30}," for",[24,359,360],{"class":34}," event ",[24,362,363],{"class":30},"in",[24,365,366],{"class":34}," agent.ask_stream(",[24,368,369],{"class":303},"\"...\"",[24,371,372],{"class":34},"):\n",[24,374,375,378,381,384],{"class":26,"line":59},[24,376,377],{"class":30},"    match",[24,379,380],{"class":34}," event[",[24,382,383],{"class":303},"\"type\"",[24,385,386],{"class":34},"]:\n",[24,388,389,392,395],{"class":26,"line":65},[24,390,391],{"class":30},"        case",[24,393,394],{"class":303}," \"tool_call\"",[24,396,397],{"class":34},":\n",[24,399,400],{"class":26,"line":71},[24,401,403],{"class":402},"sAwPA","            # event[\"tool_name\"], event[\"tool_args\"]\n",[24,405,406,408,411],{"class":26,"line":93},[24,407,391],{"class":30},[24,409,410],{"class":303}," \"tool_result\"",[24,412,397],{"class":34},[24,414,415],{"class":26,"line":109},[24,416,417],{"class":402},"            # event[\"tool_name\"], event[\"success\"], event[\"preview\"]\n",[24,419,420,422,425],{"class":26,"line":131},[24,421,391],{"class":30},[24,423,424],{"class":303}," \"answer\"",[24,426,397],{"class":34},[24,428,429],{"class":26,"line":147},[24,430,431],{"class":402},"            # event[\"text\"]\n",[24,433,434,436,439],{"class":26,"line":163},[24,435,391],{"class":30},[24,437,438],{"class":303}," \"done\"",[24,440,397],{"class":34},[24,442,443],{"class":26,"line":178},[24,444,445],{"class":402},"            # event[\"iterations\"], event[\"input_tokens\"],\n",[24,447,448],{"class":26,"line":193},[24,449,450],{"class":402},"            # event[\"output_tokens\"], event[\"memory_hits\"],\n",[24,452,454],{"class":26,"line":453},12,[24,455,456],{"class":402},"            # event[\"tool_calls_made\"]\n",[231,458],{},[202,460,462],{"id":461},"new_session-mangoagent",[21,463,464],{},"new_session() → MangoAgent",[209,466,467],{},"Returns a new agent with the same configuration but a fresh conversation history. Schema and system prompt are reused — no re-introspection.",[14,469,471],{"className":16,"code":470,"language":18,"meta":19,"style":19},"session = agent.new_session()\n",[21,472,473],{"__ignoreMap":19},[24,474,475,478,480],{"class":26,"line":27},[24,476,477],{"class":34},"session ",[24,479,294],{"class":30},[24,481,482],{"class":34}," agent.new_session()\n",[231,484],{},[202,486,488],{"id":487},"reset_conversation-none",[21,489,490],{},"reset_conversation() → None",[209,492,493],{},"Clears the conversation history in place.",[14,495,497],{"className":16,"code":496,"language":18,"meta":19,"style":19},"agent.reset_conversation()\n",[21,498,499],{"__ignoreMap":19},[24,500,501],{"class":26,"line":27},[24,502,496],{"class":34},[231,504],{},[43,506,508],{"id":507},"properties","Properties",[510,511,512,528],"table",{},[513,514,515],"thead",{},[516,517,518,522,525],"tr",{},[519,520,521],"th",{},"Property",[519,523,524],{},"Type",[519,526,527],{},"Description",[529,530,531,547,562,576,591],"tbody",{},[516,532,533,539,544],{},[534,535,536],"td",{},[21,537,538],{},"llm_service",[534,540,541],{},[21,542,543],{},"LLMService",[534,545,546],{},"The configured LLM",[516,548,549,554,559],{},[534,550,551],{},[21,552,553],{},"tool_registry",[534,555,556],{},[21,557,558],{},"ToolRegistry",[534,560,561],{},"The tool registry",[516,563,564,568,573],{},[534,565,566],{},[21,567,218],{},[534,569,570],{},[21,571,572],{},"NoSQLRunner | None",[534,574,575],{},"The connected database",[516,577,578,583,588],{},[534,579,580],{},[21,581,582],{},"agent_memory",[534,584,585],{},[21,586,587],{},"MemoryService | None",[534,589,590],{},"The memory service",[516,592,593,598,602],{},[534,594,595],{},[21,596,597],{},"conversation_length",[534,599,600],{},[21,601,153],{},[534,603,604],{},"Number of messages in the current conversation",[231,606],{},[43,608,281],{"id":609},"agentresponse",[14,611,613],{"className":16,"code":612,"language":18,"meta":19,"style":19},"@dataclass\nclass AgentResponse:\n    answer: str                  # natural language answer\n    tool_calls_made: list[str]   # names of tools called\n    input_tokens: int            # total input tokens across all LLM calls\n    output_tokens: int           # total output tokens across all LLM calls\n    iterations: int              # number of LLM calls in this turn\n    memory_hits: int             # number of memory examples injected\n",[21,614,615,621,631,641,654,664,674,684],{"__ignoreMap":19},[24,616,617],{"class":26,"line":27},[24,618,620],{"class":619},"svObZ","@dataclass\n",[24,622,623,626,629],{"class":26,"line":59},[24,624,625],{"class":30},"class",[24,627,628],{"class":619}," AgentResponse",[24,630,397],{"class":34},[24,632,633,636,638],{"class":26,"line":65},[24,634,635],{"class":34},"    answer: ",[24,637,115],{"class":87},[24,639,640],{"class":402},"                  # natural language answer\n",[24,642,643,646,648,651],{"class":26,"line":71},[24,644,645],{"class":34},"    tool_calls_made: list[",[24,647,115],{"class":87},[24,649,650],{"class":34},"]   ",[24,652,653],{"class":402},"# names of tools called\n",[24,655,656,659,661],{"class":26,"line":93},[24,657,658],{"class":34},"    input_tokens: ",[24,660,153],{"class":87},[24,662,663],{"class":402},"            # total input tokens across all LLM calls\n",[24,665,666,669,671],{"class":26,"line":109},[24,667,668],{"class":34},"    output_tokens: ",[24,670,153],{"class":87},[24,672,673],{"class":402},"           # total output tokens across all LLM calls\n",[24,675,676,679,681],{"class":26,"line":131},[24,677,678],{"class":34},"    iterations: ",[24,680,153],{"class":87},[24,682,683],{"class":402},"              # number of LLM calls in this turn\n",[24,685,686,689,691],{"class":26,"line":147},[24,687,688],{"class":34},"    memory_hits: ",[24,690,153],{"class":87},[24,692,693],{"class":402},"             # number of memory examples injected\n",[695,696,697],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}",{"title":19,"searchDepth":59,"depth":59,"links":699},[700,701,708,709],{"id":45,"depth":59,"text":46},{"id":199,"depth":59,"text":200,"children":702},[703,704,705,706,707],{"id":204,"depth":65,"text":207},{"id":235,"depth":65,"text":238},{"id":311,"depth":65,"text":314},{"id":461,"depth":65,"text":464},{"id":487,"depth":65,"text":490},{"id":507,"depth":59,"text":508},{"id":609,"depth":59,"text":281},"Full API reference for the MangoAgent class.","md",{},true,"\u002Fdocs\u002Fapi-reference\u002Fmango-agent",{"title":5,"description":710},"docs\u002F4.api-reference\u002F1.mango-agent","IYO6Y4G1bpINxqedZftLf_BQFDFRE8YzhgHociMm2E0",1776189331879]