Ga naar de hoofdinhoud

Hoe we Ask Titan bouwden een beheerde enterprise-AI-assistent met LangGraph en MCP

Ask Titan routeert businessvragen naar beheerde capabilities voor gestructureerde data, Power BI-semantische modellen en enterprise-documenten. LangGraph coördineert de runtime; MCP biedt een consistente capabilitygrens; application policy bepaalt welke tools het model bereiken.

LangGraphMCPDatabricks + SQLPower BI + DAXQdrant + RAG
Ask Titan-runtime
governed capabilities
01
Vraag + identiteitBepaal gebruiker en conversatie
↓
02
Toegestane capabilitiesOntdek, filter en bind tools
↓
03
Orkestreer + voer uitSQL · Power BI / DAX · documenten / RAG
↓
04
Antwoord + uitvoeringsbewijsBewaar state en sourcetelemetry

Een enterprise-assistent is geen ChatGPT-wrapper

Een eenvoudige user → LLM → database → answer-flow is voldoende om een prototype uit te leggen. Voor enterprise-systemen is dat niet genoeg. De applicatie moet ook bepalen tot welke capabilities een gebruiker toegang heeft, welke bron de vraag moet beantwoorden, op welke metadata het model mag vertrouwen, hoe mislukte queries worden afgehandeld, hoe conversatiestate wordt bijgehouden en hoe een antwoord terug te voeren is op de uitvoering die het opleverde.

Eén model, directe toegang

Gebruiker → LLM → Database → Antwoord

Dit verbergt autorisatie, bronselectie, queryuitvoering, statemanagement en observability achter één connection.

Scheid verantwoordelijkheden rond het model

Identiteit + beleid Orchestratie Specialistische uitvoering State + bewijs

Ask Titan houdt deze verantwoordelijkheden in de applicatie. De LLM ontvangt alleen de capabilities en context die nodig zijn voor het huidige request.

De architectuur start met constraints, niet met frameworkkeuzes

We behandelden deze als afzonderlijke engineeringproblemen in plaats van ze samen te voegen in één agentprompt.

01

SQL ≠ DAX ≠ retrieval

Verschillende bronnen vereisen verschillende metadata en executionsemantiek.

02

Beschikbaar betekent niet toegestaan

Een capability kan bestaan zonder voor de huidige gebruiker of runtime-modus beschikbaar te zijn.

03

Schema moet vóór query komen

Bronmetadata moet worden ontdekt in plaats van door het model te worden verzonnen.

04

Iedere loop heeft een exit nodig

Autonomie is alleen nuttig wanneer er deterministische runtimegrenzen omheen staan.

05

Context kan niet onbeperkt groeien

Opgeslagen conversatie en actieve LLM-context zijn verschillende onderwerpen.

06

Antwoorden hebben een uitvoeringsspoor nodig

Voor datavragen is alleen de uiteindelijke tekst onvoldoende operationeel bewijs.

Een beheerde multi-toolruntime rond de LLM

Ask Titan is georganiseerd in vijf hoofdlagen: frontend, middleware, orchestration, MCP-capabilities en enterprise-databronnen. Identity en capability-policy bepalen wat voor een request gebruikt mag worden, terwijl conversation-state en execution-observability naast de runtime worden afgehandeld.

Referentiearchitectuur voor de Ask Titan enterprise-AI-assistent Een bedrijfsvraag gaat vanuit Microsoft Teams naar de Ask Titan-middleware en API, vervolgens naar de LangGraph-orchestrator, door het MCP-capabilitydomein en uiteindelijk naar enterprise-databronnen. Identiteits- en capabilitybeleid bepalen wat is toegestaan, terwijl checkpoints en uitvoeringstelemetrie buiten het model worden bewaard. FRONTEND MIDDLEWARE + API ORCHESTRATOR MCP CAPABILITIES DATABRONNEN 01 · KANAAL Microsoft Teams bedrijfsvraag geauthenticeerde gebruiker threadcontext 02 · ASK TITAN API Middleware / API aanvraag authenticeren conversatie laden runtime-inputs voorbereiden BELEIDSINPUTS Identiteit + rechten scope van applicatiebeleid 03 · LANGGRAPH Ask Titan orchestrator plannen · tool-call · observeren doorgaan of afronden STATUS Conversatie checkpoints threadcontinuïteit opslaan 04 · CAPABILITY-INTERFACE ONGESTRUCTUREERDE DATA Documentagent retrieval · brononderbouwing GESTRUCTUREERDE DATA SQL-agent schemainspectie · SQL-uitvoering SEMANTISCHE DATA Power BI-agent modelmetadata · DAX-uitvoering DOCUMENTBRON Vectordatabase enterprise-documenten GESTRUCTUREERDE BRONNEN Databricks / SQL SQL Server · Synapse SEMANTISCHE BRON Power BI-semantisch model model measures · relaties · DAX CONTROL PLANE Configuratie buiten de actieve runtimebeurt tooldefinities · prompts · databronconfiguratie STATUS + OBSERVABILITY Conversatiestatus en uitvoeringsbewijs checkpoints · tool-calls · query-ID’s · duur · verwerkte data kosten indien beschikbaar

Volg een vraag door de runtime van Ask Titan

Het diagram hieronder volgt één request door Ask Titan. Het voorbeeld vraagt: “Welke klanten veroorzaakten vorige maand onze margedaling?” Ask Titan bepaalt de toegang van de gebruiker, routeert de vraag naar de Power BI-capability, voert de benodigde DAX uit tegen het semantische model en retourneert het resultaat terwijl de relevante uitvoeringsmetadata behouden blijven.

Ask Titan-vraagflow door de runtime Een bedrijfsvraag komt binnen via Microsoft Teams, wordt verwerkt door de Ask Titan-middleware, bereikt de LangGraph-orchestrator, wordt via de MCP-capabilitygrens naar de Power BI-agent geleid, uitgevoerd op een semantisch model en levert een antwoord op. Conversatiestatus, tool-events en telemetrie van het semantische model worden samen met het antwoord opgeslagen. FRONTEND MIDDLEWARE + API ORCHESTRATOR MCP CAPABILITY BRON 01 · KANAAL Microsoft Teams vraag over margedaling gebruiker + thread 02 · IDENTITEIT Gebruiker bepalen + beleid auth · runtimemodus 03 · LANGGRAPH Ask Titan orchestrator toegestane tools koppelen capability kiezen 04 · GESELECTEERDE CAPABILITY ONGESTRUCTUREERDE DATA Documentagent GESTRUCTUREERDE DATA SQL-agent SEMANTISCHE DATA Power BI-agent model inspecteren · DAX genereren 05 · BRONUITVOERING Power BI-semantisch model model metadata · DAX-resultaat BUITEN DE MODELPROMPT OPGESLAGEN CONVERSATIESTATUS Thread-scoped checkpoints continuïteit buiten de prompt TOOL-EVENTS Capability-call + resultaatmetadata toolnaam · args · timings BRONTELEMETRIE DAX / query-ID / duur / kosten wanneer de bron dit beschikbaar stelt

De orchestrator bepaalt welke capability wordt gebruikt; de capability is eigenaar van hoe het werk wordt uitgevoerd

Wat moet hierna gebeuren?

  • Kies uit toegestane capabilities.
  • Behoud de actieve conversatiestatus.
  • Ga verder, roep een tool aan of rond af.

Hoe wordt deze bron correct bevraagd?

  • Ontdek bronmetadata.
  • Genereer bronspecifieke bewerkingen.
  • Voer uit, interpreteer fouten en verfijn.
Vereenvoudigd LangGraph-patroon
graph = StateGraph(ConversationState)

graph.add_node("agent", agent_node)
graph.add_node("tools", tool_node)

graph.add_conditional_edges(
    "agent",
    route_next_step,
    {"tools": "tools", "end": END},
)

graph.add_edge("tools", "agent")

graph = graph.compile(
    checkpointer=conversation_memory,
)
let op:Het top-level model ontvangt alleen de informatie die voor de huidige request nodig is. Schemadetails, DAX-logica, retrievalgedrag en connectorspecifieke handling blijven binnen de relevante capability.

Standaardiseer de capability boundary. Beperk daarna wat het model bereikt

MCP geeft de orchestrator een consistente manier om capabilities te ontdekken en aan te roepen. Het beslist niet of een capability geschikt is voor deze gebruiker. Ask Titan bepaalt die application policy voordat tools aan de orchestrator worden gebonden.

MCP-tools bestaan

Sales SQL · Productie SQL · Finance Power BI · documenten …

→

Bepaal toegestane capabilities

Identiteit, entitlements en runtimeconfiguratie bepalen de toegestane subset.

→

Alleen geverifieerde tools bereiken het model

Niet-beschikbare capabilities ontbreken in de callable toolset van het model.

Vereenvoudigde capability filtering
available_tools = discover_capabilities()
policy = resolve_capability_policy(user)

permitted_tools = [
    tool for tool in available_tools
    if policy.allows(tool.name)
]

agent = build_orchestrator(
    tools=permitted_tools,
    state=conversation_state,
)

Tooltoegang is één laag

Identiteit
Wie doet het verzoek?

Capability-autorisatie
Welke Ask Titan-tools mogen worden gekoppeld?

Tool-/bronscope
Welke geconfigureerde tabellen, modellen of collecties mag de tool gebruiken?

Datasource-autorisatie
Wat staat de onderliggende bron daadwerkelijk toe?

Belangrijk: autorisatie van tools op applicatieniveau is niet gelijk aan row-level- of column-level-security in een gekoppelde bron.

Eén assistent. Drie verschillende execution paths

De architectuur dwingt niet iedere vraag door RAG. Gestructureerde databases, Power BI semantic models en bedrijfsdocumenten zijn aparte execution domains omdat ze verschillende metadata, businesssemantiek en failure modes hebben.

SQL-uitvoering

Gebruik bronmetadata vóór het genereren van een readquery; voer uit tegen de geconfigureerde databaseboundary en geef rijen plus querymetadata terug.

  1. Inspecteer schema
  2. Kies joins + kolommen
  3. Query genereren
  4. Voer uit + corrigeer
Databricks · SQL Server · Synapse

Power BI + DAX

Wanneer measures, relaties en businessdefinities in een semantisch model staan, inspecteer dan dat model en genereer DAX in plaats van het te omzeilen met ruwe SQL.

  1. Toon modeltabellen
  2. Laad measure-metadata
  3. DAX genereren
  4. Voer uit + verfijn
Power BI semantic models

Documenten + RAG

Herschrijf de vraag voor retrieval, haal relevante documentchunks uit de geconfigureerde collectie op en onderbouw het antwoord met die bronnen.

  1. Herschrijf de vraag
  2. Haal chunks op
  3. Voeg broncontext toe
  4. Geef een onderbouwd antwoord terug
Qdrant · bedrijfsdocumenten
Architectuurconclusie: RAG is een mogelijkheid binnen Ask Titan, niet de architectuur van Ask Titan.

State, context en observability zijn gerelateerd. Maar ze zijn niet hetzelfde

Een duurzame conversatie kan veel groter zijn dan de context die een model bij de volgende beurt zou moeten ontvangen. Configuratie hoort bovendien buiten de actieve agentloop, terwijl uitvoeringsbewijs ook na het uiteindelijke antwoord beschikbaar moet blijven.

Bewaar meer dan u prompt

Threadcheckpoints bewaren conversatiestate. Oudere afgeronde turns kunnen inklappen tot gebruiker + eindantwoord terwijl de actieve toolinteractie intact blijft. Oversized toolpayloads hoeven niet opnieuw naar het model te worden afgespeeld.

Configureer buiten de agent

Databronnen, tooldefinities, model/providerinstellingen, prompts, semantische metadata, vectorcollecties en user entitlements zijn duurzame configuratie en geen ad-hoc promptcontent.

Bewaar de softwaretrail

Bewaar toolcalls en brontelemetrie rondom het antwoord. Voor database-backed capabilities kan dit query-ID's, SQL/DAX, duur, verwerkte data en kosten omvatten waar beschikbaar.

VRAAGGebruikersbericht-IDanker voor de uitvoering
→
AGENT + TOOLSTussenliggende eventstoolcalls · argumenten · source-resultmetadata
→
ANTWOORDAssistant message-IDkoppelt het antwoord terug aan execution evidence

Observability is geen chain-of-thought. Het nuttige audit- en debugoppervlak is het software-execution path: toolcalls, queries, timings en resultaten. Private model reasoning maakt geen deel uit van dat oppervlak.

Foutafhandeling is onderdeel van de architectuur

Ask Titan moet meer afhandelen dan alleen succesvolle tool calls. Een capability kan verkeerd worden geselecteerd, een gegenereerde query kan mislukken, een resultaat kan te groot zijn voor de actieve context en een agent-loop kan langer doorgaan dan bedoeld. Deze situaties worden afgehandeld in de applicatielaag, terwijl toegang tot de onderliggende systemen door die systemen zelf wordt afgedwongen.

Foutmodus Architectuurrespons
Verkeerde capability geselecteerd Beperk de beschikbare tools tot de capabilities die voor de huidige request zijn toegestaan.
Ongeldige schema-aanname of query Lees bronmetadata en geef uitvoeringsfouten terug aan de specialistische capability voor een begrensde retry.
Agentloop wordt niet afgerond Tel tool-planningsiteraties en stop uitvoering wanneer de geconfigureerde limiet is bereikt.
Toolresultaat overschrijdt de actieve context Sla het volledige resultaat buiten de modelcontext op en geef alleen een begrensde representatie terug aan het model.
Antwoord kan niet worden teruggevoerd naar uitvoering Koppel het antwoord aan tool-events en source-querymetadata zoals query-ID, duur en resultaatdetails.

Toolautorisatie ≠ bronautorisatie

Bepalen welke capability aan het model wordt aangeboden vervangt permissions in het warehouse of semantische model niet.

Een read-only prompt ≠ een securitygrens

Alleen-lezen toegang moet worden afgedwongen via broncredentials, rollen, grants en platformcontrols.

MCP ≠ automatische toolveiligheid

MCP definieert de toolinterface. Autorisatie, inputvalidatie, netwerkcontrols en bronrechten worden afzonderlijk geïmplementeerd.

RAG ≠ gegarandeerde juistheid

Retrieval levert broncontext. De kwaliteit van het antwoord hangt nog steeds af van de opgehaalde documenten en hoe goed die bij de vraag passen.

Het model is onderdeel van de runtime. Niet de runtime zelf

Ask Titan is beter te doorgronden wanneer probabilistische modelbeslissingen binnen deterministische softwaregrenzen vallen. De applicatie beheert capability-exposure, graph-control, duurzame state en uitvoeringsbewijs. Specialistische capabilities beheren de bronsemantiek.

Scheid redeneren van uitvoeren.
Stel capabilities bewust beschikbaar.
Gebruik bronspecifieke execution models.
Scheid persisted state van modelcontext.
Maak het model niet de security boundary.
Begrens elke autonome loop.
Behoud een execution trail rond enterprise-antwoorden.

Deel 2 · Hoe we LangGraph en MCP gebruiken om Ask Titan te orkestreren

Vervolgens gaan we de orchestratie-laag in: hoe Ask Titan toegestane tools bepaalt, de LangGraph agent-tool-loop uitvoert, specialist-agents via MCP aanroept, conversatiestatus bewaart en de context vormt die naar het model wordt gestuurd.

Lees deel 2

Ask Titan-vragen over enterprise-AI-architectuur

Praktische antwoorden over LangGraph, MCP, capability-autorisatie, SQL, Power BI, RAG, conversatiestatus en observability.

Wat is een enterprise AI-assistentarchitectuur?

Een enterprise-AI-assistentarchitectuur omringt het taalmodel met expliciete applicatiecontrols voor identity, capability-toegang, orchestratie, state, bronspecifieke uitvoering en observability. Het model kan beslissen welke toegestane capability wordt gebruikt, maar is niet de security boundary of control plane.

Waarom gebruikt Ask Titan LangGraph?

Ask Titan gebruikt LangGraph om een agentlus met toestand en toolaanroepen uit te voeren. De graph maakt de besturing expliciet: de agent geeft een definitief antwoord of roept een beschikbare tool aan, toolresultaten gaan terug naar de agent en de runtime begrenst wanneer de lus stopt.

Waarvoor wordt MCP gebruikt in Ask Titan?

Het Model Context Protocol (MCP) is de gestandaardiseerde capability boundary tussen de top-level orchestrator en specialistische execution tools. Het laat de orchestrator capabilities ontdekken en aanroepen via een consistente interface terwijl bronspecifieke implementatiedetails achter iedere tool blijven.

Bepaalt MCP welke tools een gebruiker mag gebruiken?

Nee. Ask Titan bepaalt application-level capability access voordat tools aan de LangGraph-orchestrator worden gebonden. MCP stelt capabilities beschikbaar via een standaardinterface; authorization policy en datasourcepermissions blijven afzonderlijke controls.

Hoe kiest Ask Titan tussen SQL, Power BI en RAG?

De top-level orchestrator kiest uit toegestane specialistische capabilities op basis van de gebruikersvraag en toolbeschrijvingen. Gestructureerde databases gebruiken een SQL-pad, Power BI semantic models een DAX-georiënteerd pad en bedrijfsdocumenten retrieval en source grounding.

Is Ask Titan een RAG-applicatie?

Nee. Retrieval-augmented generation is één capability in Ask Titan, niet de totale architectuur. Vragen kunnen ook via governed structured-data-tools of Power BI semantic models worden beantwoord wanneer die bronnen de relevante businessfeiten en definities bevatten.

Hoe behoudt Ask Titan conversatiecontext?

Conversatiestate wordt opgeslagen met thread-scoped checkpoints. Bij het opbouwen van de volgende modelcontext kunnen oudere afgeronde turns worden samengevouwen tot gebruikersvraag en definitief antwoord, terwijl de actieve turn de volledige toolinteractie behoudt die nodig is voor correcte tool-call-uitvoering.

Hoe kan een Ask Titan-antwoord worden herleid tot de uitvoering ervan?

Ask Titan slaat uitvoeringsmetadata rond antwoorden op, waaronder tussentijdse tool calls en antwoordduur. Database-backed tools kunnen daarnaast query-ID's, querytekst, duur, verwerkte data en kosten- of verbruiksmetrics vastleggen waar de onderliggende bron die beschikbaar stelt.

Geeft Ask Titan de top-level LLM directe databasetoegang?

Nee. De top-level orchestrator roept een specialistische capability aan. De structured-data-capability beheert schema-inspectie, querygeneratie, database-executie en bronspecifieke telemetry in plaats van databaseconnectorlogica direct in de orchestrator te embedden.

Dwingt toolautorisatie automatisch row-level security af?

Nee. Toolautorisatie bepaalt welke Ask Titan-capabilities aan de agent worden aangeboden. Row-level, column-level en andere datasourcepermissions zijn afzonderlijke handhavingslagen die in de gekoppelde database, warehouse of semantic model moeten worden geïmplementeerd.

Koppel enterprise-AI aan beheerde data zonder de LLM je control plane te maken

Ask Titan is gebouwd voor businessvragen die gecontroleerde toegang tot bedrijfsdata, semantische modellen en documenten vereisen. Dezelfde architectuurprincipes kunnen ook richting geven aan maatwerk Data & AI-platformen waar uitlegbaarheid, permissions en bronsemantiek belangrijk zijn.

Een beheerde enterprise-AI-grens

01Bepaal toegestane capabilities vóór model binding
02Houd bronsemantiek binnen specialistische execution paths
03Begrensde tool-calling en actieve context
04Bewaar uitvoeringsbewijs rondom het uiteindelijke antwoord

Technische referenties

De Ask Titan-repository is privé. Deze publieke referenties documenteren de open technologieën en protocolconcepten die in dit artikel worden besproken.