AI is als een brein in een pot, zonder de ruggengraat die verbinding maakt met de rest van de wereld, is het waardeloos. Dit project biedt een brug – de MuleSoft AI Chain connector – om AI-services te verbinden met alle MuleSoft-componenten. Hoewel het project zich nog in de ontwikkelingsfase bevindt, belooft het vrij interessante en nuttige tools in de nabije toekomst. Enkele daarvan zijn connectors naar NLP-bibliotheken, Deep Learning-modellen en taalvertalingen, evenals connectors voor het bieden van webcrawling-mogelijkheden.
“AI-engines zijn als een brein in een pot— in staat om inzichten te bieden maar zonder het zenuwstelsel dat nodig is om processen, commando’s of updates binnen een organisatie te automatiseren, waardoor implementatie moeilijk wordt.”
– Oprichter van MuleSoft
Dit artikel richt zich op de aangepaste connector die interacteert met de AI-agenten. Het project werd gemaakt bovenop het langChain4j -project om eenvoudige toegang tot MuleSoft-componenten mogelijk te maken. Het project staat bekend als de MuleSoft AI Chain of MAC voor het gemak.
TL;DR
Het MuleSoft AI Chain Project verbindt AI-services met MuleSoft-componenten. Op deze manier maakt het functionaliteiten mogelijk voor sentimentanalyse, chatprompts, beeldgeneratie, documentanalyse en embed stores voor het bevragen van opgeslagen documenten. Het ondersteunt meerdere grote taalmodellen, is open-source en kan worden geïmplementeerd via CloudHub of on-premise, waardoor de installatie eenvoudig en flexibel is.
Hoewel nog in ontwikkeling, belooft het project aanzienlijk potentieel voor het verbeteren van klantenservice, marktonderzoek en contentcreatie. Belangrijke zorgen zijn onder meer datalekken, inconsistente AI-reacties en problemen met responstijd. Ondanks deze zorgen biedt het krachtige tools die taken kunnen transformeren van uren naar minuten, en nodigt het uit tot bijdragen en directe communicatie met ontwikkelaars.
Goed om te weten voordat u de MAC-connector instelt:
- Geen noodzaak om iets nieuws te leren, eenvoudig in te stellen
- Kan worden geïmplementeerd via CloudHub 1.0 en 2.0, evenals on-premise
- Maximaal 3 LLM’s kunnen tegelijkertijd worden gebruikt
- Ondersteunt momenteel alleen JDK 8 (in de toekomst Java 17)
- Voornamelijk getest op OpenAI en Mistral AI (voor andere LLM’s alleen proeftests)
- Niet productierijp
- Project is open-source (niet ondersteund door MuleSoft of Salesforce)
- Niet geschikt voor grote datasystemen? (nog geen specificatie over hoe grote systemen of hoe grote datasets kunnen worden gebruikt)

De bovenstaande informatie is gekoppeld aan de 0.1.0-versie van de connector
MAC ondersteunt de volgende LLM’s (Large Language Models) configuraties:

- Anthropic
- AWS bedrock
- Azure OpenAI
- Mistral AI
- Ollama
- OpenAI
In de volgende voorbeelden werd Open AI gebruikt voor het testen van de connector.
Hoe stelt u de connector in?
De installatie van het project is eenvoudig en kan worden gevonden via deze link: mac-project.ai
Tijdens het instellen van de connector kunt u wel of niet de volgende problemen tegenkomen:
Bij het compileren van Maven, zorg ervoor dat u de tests overslaat omdat het anders zal falen:mvn clean install -Dmaven.test.skip=true
De connector wordt mogelijk niet herkend na toevoeging aan de pom.xml. Als u een foutmelding krijgt betreffende de dependency, probeer dan uw .m2-map te zoeken en vervang de groupId met de naam van de map waar de connector is opgeslagen. De mapnaam kan een UUID zijn (bijvoorbeeld 0b429e15-7202-4436-b494-748364d1c28b).
In de terminal: open ~/.m2 (macOS)
Sentimentanalyzer

De operatie wordt gebruikt voor het begrijpen van het sentiment van de tekstinvoer, wat kan resulteren in een negatieve, positieve of neutrale toon.
INVOER: Tekst voor analyse → UITVOER: Sentimenttoon
Waarvoor zou u dit gebruiken, vraagt u zich misschien af? Hier is een lijst van mogelijke gebruikssituaties:
- Analyseer klantrecensies, enquêtes en feedbackformulieren in elke branche
- Volg de publieke opinie op sociale media en analyseer de resultaten
- Analyseer opmerkingen en discussies over branchetrends en producten van concurrenten en prioriteer die problemen
- Integreer het met klantenservicetickets, chatlogboeken en e-mails om gegevens te verzamelen en negatieve ervaringen snel aan te pakken
In de volgende voorbeelden gebruikten we GPT-3.5 als het standaardmodel.

Chatprompt

U kunt een prompt rechtstreeks naar de geconfigureerde LLM sturen en een gegenereerd antwoord krijgen.
INVOER: Promptverzoek → UITVOER: AI-gegenereerd antwoord
Chatantwoordoperatie met geheugen
De chats worden opgeslagen in het geheugen om de gespreksgeschiedenis voor elke gebruiker (per gebruikers-ID) bij te houden.
Het aantal berichten is beperkt en kan worden ingesteld in de configuratie. Nadat de limiet is bereikt, worden de vorige berichten verwijderd. De limiet wordt ingesteld wanneer de database wordt aangemaakt. Om de limiet te wijzigen, moet u de vorige database verwijderen of een nieuwe aanmaken. De database wordt in-memory opgeslagen voor de verstrekte sessie. Daarna worden de gegevens verwijderd.
De database wordt lokaal aangemaakt op het pad dat u heeft opgegeven. Momenteel is het databasebestandspad een verplicht veld en kunt u geen andere database instellen.

Bekijk de voorbeelden met chatgeschiedenis:
Afbeeldingen
Met de MAC-connector kunt u afbeeldingen genereren op basis van uw invoer en deze ook analyseren en informatie genereren op basis van de afbeeldingen.
Voor deze operatie gebruikt u het model dat afbeeldingen kan genereren. Gewoonlijk is dit een betaalde functie. In dit voorbeeld gebruikten we gpt-4-turbo .

INVOER: Prompt → UITVOER: Afbeeldings-URL gebaseerd op de prompt
In het transform message-component heb ik de afbeeldings-URL geëxtraheerd met de volgende DataWeave-expressie:
%dw 2.0 output application/json---
{
imageURL: "https:" ++ payload.rawSchemeSpecificPart as String
}

Voor deze afbeelding voerde ik de volgende prompt in:
“Maak een reeks stapsgewijze visuele handleidingen voor het instellen van een geavanceerde slimme thermostaat. Elke afbeelding moet verschillende fasen van het proces tonen”
Als resultaat krijgt u een afbeeldings-URL met de gegenereerde afbeelding. De responstijd voor dit verzoek was > 15 s.
Momenteel ondersteunen de afbeelding genereren en lezen operaties alleen Open AI Image Models.
Afbeeldingen lezen
Met deze operatie kunt u afbeeldingen analyseren om specifieke objecten te detecteren en te tellen, zoals auto’s op een parkeerplaats of producten op een plank. Het stelt u ook in staat om tekst te extraheren uit documenten, bonnetjes, facturen of handgeschreven notities, en effectief tekst in verschillende talen en alfabetten te verwerken, inclusief Cyrillisch en Arabisch!
INVOER: Prompt over de afbeelding en URL van de afbeelding -> UITVOER: AI-gegenereerd antwoord gebaseerd op de prompt
Vereisten voor de afbeeldingen:
- De afbeelding is kleiner dan 20 MB
- De afbeeldingsextensie is een van de volgende: [‘png’, ‘jpeg’, ‘gif’, ‘webp’]
Voor deze functie moet de API-sleutel worden toegevoegd aan de omgevingsvariabelen:
- Klik met de rechtermuisknop op uw Project > Run As > Run Configurations > Environment > Add
- Stel de moduleconfiguraties in het Image read-component in op de omgevingsvariabelen
Enkele interessante gebruikssituaties die we hebben getest:
Wees voorzichtig bij het verwerken van gevoelige gegevens! AI-systemen kunnen afbeeldingen verzamelen en verwerken zonder toestemming, wat leidt tot privacyschendingen!
Hoewel de afbeeldingsanalyzer over het algemeen goed presteert, kan hij af en toe onnauwkeurige resultaten produceren met hoge betrouwbaarheid!
Rag load document
Met deze operatie kunt u documenten analyseren en relevante informatie extraheren. Het AI-model extraheert en gebruikt relevante informatie om een antwoord te geven of te reageren op het verzoek. Informatie wordt opgehaald uit een in-memory embedding store die op de achtergrond werkt. RAG is een afkorting voor Retrieval-Augmented Generation.
INVOER:
- Gebruikersverzoek/commando (prompt)
- Bestandspad naar het document
- Bestandstype –
- tekst – Elk type tekstbestand (JSON, XML, txt, CSV, enz.)
- URI – Alleen enkele URL ondersteund
UITVOER: AI-gegenereerd antwoord gebaseerd op de prompt en het verstrekte document
Bekijk dit voorbeeld met een specificatie voor een thermostaat:
Gebruikssituaties:
- Verbeteren van chatbot-reacties – Door relevante documenten op te halen, kan de chatbot nauwkeurigere en informatievere antwoorden geven op gebruikersvragen.
- Contentcreatie – Schrijvers en journalisten kunnen RAG gebruiken om achtergrondinformatie te verzamelen en ervoor te zorgen dat hun artikelen goed geïnformeerd en uitgebreid zijn.
- Klantenservice – RAG kan klantenservicemedewerkers helpen door snel relevante probleemoplossingshandleidingen of beleidsregels op te halen om klantproblemen efficiënt op te lossen.
- Onderzoek – U kunt toegang krijgen tot informatie uit onderzoekspapers of documenten op basis van specifieke vragen.
Embeddings met documenten
Een van de coole functies die MAC biedt, is de mogelijkheid om documenten toe te voegen aan een store. Op deze manier kunt u om informatie vragen en de AI zal naar deze informatie zoeken binnen alle documenten, zodat u kunt ‘praten’ met uw opgeslagen documenten. Dat kan behoorlijk nuttig zijn om de hoeveelheid verkeerde informatie die de AI u geeft te verminderen.
Ik zal uitleggen hoe dit werkt met behulp van 3 MAC-operaties.
Embedding nieuwe store
De eerste stap is het aanmaken van uw embedding store. Dit kan eenvoudig worden gedaan door de “embedding new store”-operatie te gebruiken en een store-naam op te geven. Deze store-naam wordt hergebruikt in de andere operatie. Dus in de praktijk zult u dit waarschijnlijk in een van uw configuratiebestanden plaatsen.


Embedding document toevoegen aan store
In deze test gebruikte ik de volgende URL om wat informatie over Cloud Hub 2.0 op te halen: https://docs.mulesoft.com/cloudhub-2/ch2-deploy.
Om informatie uit een van uw documenten te kunnen extraheren, moet u die documenten ook opslaan. Momenteel kunt u 3 typen documenten opslaan:
- PDF,
- Tekst en
- URL.
Dus wat u moet doen om het document aan de store toe te voegen, is de “embedding add document to store”-functie gebruiken?
In deze functie moet u dezelfde store-naam gebruiken als degene die u zojuist heeft aangemaakt. Evenals het contextbestand van het document. U moet ook het bestandstype kiezen dat u gebruikt.


Embedding informatie ophalen uit store
Ten slotte kunt u AI vragen naar de informatie die u wilt. In dit voorbeeld vroeg ik ”Welke replica-statussen bestaan er in CloudHub en wanneer treden ze op?”. Om de informatie te kunnen vragen, moet u de “embedding get info from store”-functie gebruiken. U moet de naam van de store toevoegen waar het document met uw informatie is opgeslagen samen met de vraag (data) die u wilt stellen.

Zodra we dit verzoek doen, ontvangen we zoiets als dit. Op deze manier kunnen we praten met onze documenten.

Gebruikssituaties om deze functie te gebruiken zijn bijvoorbeeld:
- Kennisbank-initialisatie: Al onze kennisbankdocumenten opslaan in één store en een chatbot creëren die we kunnen vragen naar informatie die in die documenten bestaat zonder de noodzaak om ze allemaal zelf door te nemen.
- Gegevenssegmentatie: Nieuwe stores instellen voor verschillende typen gegevens of documenten voor betere organisatie.
- Aangepaste Embedding Stores: Gespecialiseerde embedding stores creëren die zijn afgestemd op specifieke toepassingen of gebruikssituaties, zoals branchespecifieke documentopslag.
Agent define prompt template
Een andere functie binnen de MAC-connector is de agent-defined prompt template. Deze functie kan worden gebruikt om in principe te vertellen wat de AI moet doen. Dit wordt gedaan door 3 invoervelden te gebruiken.
- Template : bevat de prompttemplate van de operatie.
- Instructions : biedt instructies voor de LLM en schetst de doelen van de taak.
- Dataset : specificeert de dataset die door de LLM moet worden geëvalueerd met behulp van de verstrekte template en instructies.

Ik testte dit door te proberen de agent een soort paspoort te laten maken op basis van een geschreven tekst. In het geval dat niet alle informatie wordt gegeven, is het complete veld false.

Houd er rekening mee dat de agent uitgebreide training vereist en u de template moet verfijnen om fouten te minimaliseren. In dit scenario zal de agent eenvoudig wat informatie verzamelen om alle benodigde velden in te vullen.

Voorbeelden van gebruikssituaties voor deze functie zijn:
- Klantenservice Agenten: Verbeter de klantenservice door case-samenvattingen, case-classificaties, het samenvatten van grote datasets en meer te bieden.
- Verkoopoperatie Agenten: Help verkoopteams bij het schrijven van verkoop-e-mails, het samenvatten van cases voor specifieke accounts, het beoordelen van de waarschijnlijkheid van het sluiten van deals en meer.
- Marketing Agenten: Help marketingteams bij het genereren van productbeschrijvingen, het maken van nieuwsbrieven, het plannen van sociale mediacampagnes en meer.
AI-tools
De werking van het hulpmiddel kan worden gebruikt voor het autonoom bevragen van API’s met de mogelijkheden van AI-diensten. Het bevragen gebeurt met natuurlijke taal. Het concept van hulpmiddelen is van toepassing op elk asset dat in de Anypoint Exchange wordt gepresenteerd. De verzameling van deze ‘hulpmiddelen’ wordt aangeleverd via een .json-bestand.
De groene route is het standaardpad. Het gebruikt openbare gegevens en kan elke algemene vraag beantwoorden. Als de groene route niet over de specifieke informatie beschikt, maakt de AI-agent verbinding met de relevante API uit de verzameling hulpmiddelen die in het configuratiebestand is ingesteld.

Voorbeeld van een config.json (u kunt het naar wens benoemen) bestand:
[
{
"action":"Execute GET requests for API endpoints.",
"url": "https://anypoint.mulesoft.com/mocking/api/v1/sources/exchange/assets/7b99cead-a984-497b-9e6c-c16a3b4dcb76/employee-api/1.0.1/m/employees",
"name": "Show accounts",
"method": "GET",
"headers": "",
"example-payload":"{}",
"query": [
"Get all accounts",
"Show all accounts"
"Show accounts for the country Switzerland",
"How many accounts do we have",
"Show a list of all accounts"
],
"description": "Get all information about all accounts. This action applies whenever users' intent is 'accounts', 'workforce', 'get accounts'. Use the headers to perform the request."
}
]
Action – Dit veld ondersteunt momenteel alleen GET- en POST-verzoeken in het hierboven getoonde formaat
URL – Volledige URL naar het eindpunt inclusief de resource
Header – Stel de headerparameters in indien nodig (momenteel alleen Basic auth)
Method – Stel de HTTP-methode in (momenteel alleen GET en POST)
Example Payload – Stel een object in hoe de gegevens eruit zouden moeten zien
Queries
– Stel de opdrachten in die een gebruiker zou vragen
Description – Wordt gebruikt door AI om te begrijpen hoe verbinding te maken met deze API en hoe de gegevens te gebruiken
In dit voorbeeld hebben we de openbare API uit de officiële documentatie gebruikt om te zien hoe het werkt op een grotere dataset:

Responstijd > 20s voor een verzoek aan een openbare API met 100 accounts met een eenvoudige query. Bij het testen van de operatie met meer complexe queries was de responstijd > 40s
Het combineren van het queryverzoek aan de API en een query met een algemene vraag is niet mogelijk:

Conclusie
Hoewel het project vrij nieuw is, biedt het interessante functies met onbegrensd potentieel. Deze AI-diensten zijn zeer flexibel en kunnen in verschillende systemen worden geïntegreerd. In de bovenstaande voorbeelden hebben we slechts de basistoepassingen van deze operaties gedemonstreerd, maar het is aan u hoe u ze zult gebruiken!
Wow! Maar…
Enkele van de risico’s en nadelen van het gebruik ervan:
- Tijdens gegevensverwerking of -overdracht bestaat het risico dat gegevens worden onderschept of onbedoeld worden blootgesteld aan onbevoegde partijen. In het geval van document embedding heeft u bezit van uw opslag, waardoor alleen de functies die die opslag gebruiken, die gegevens gebruiken.
- Bij het stellen van vragen aan AI kunnen er verschillen optreden tussen antwoorden op dezelfde vragen binnen dezelfde integratieomgeving en dat is iets om rekening mee te houden.
- Tijdens het testen van de functies van de MuleSoft AI Chain connector merkten we responstijden op van 2 tot 10 seconden. Dit kan time-outs & andere prestatieproblemen veroorzaken.
Aanvullende materialen
- Documentatie van het project: mac-project.ai
YouTubekanaal met video-uitleg: youtube.com/@MuleChainProjectLinkedingroep van het project: linkedin.com/groups/13047000/
Wilt u meer weten? Of dit zelf implementeren? Neem contact op en laten we een gesprek hebben (GPT)!












