Inzicht

Jovana Vujanic & Marnick Hens

11 min. read

Verbeter uw workflows: de kracht van MuleSoft AI chain (MAC)

“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.


  • 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)

MAC ondersteunt de volgende LLM’s (Large Language Models) configuraties:

Lijst van modellen
  • Anthropic
  • AWS bedrock
  • Azure OpenAI
  • Mistral AI
  • Ollama
  • OpenAI

In de volgende voorbeelden werd Open AI gebruikt voor het testen van de connector.


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:


Sentimentanalyzer

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.

Sentimentanalyzer voorbeeld
Verzoek met voorbeeldfeedback voor een medewerker
Chatantwoordprompt

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.

Chatantwoord met geheugen
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.

Afbeelding

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 
}
Afbeelding genereren

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:

  • Afbeelding lezen resultaat
  • Afbeelding lezen


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.

  1. Gebruikersverzoek/commando (prompt)
  2. Bestandspad naar het document
  3. Bestandstype –
    • pdf
    • tekst – Elk type tekstbestand (JSON, XML, txt, CSV, enz.)
    • URI – Alleen enkele URL ondersteund
  • Rag document voorbeeld
  • Rag document

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 nieuwe store
Embedding nieuwe store postman
Zodra het verzoek is verwerkt, krijgt u eenvoudig een 200-respons als het is gelukt.
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 document toevoegen
Embedding document toevoegen postman
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.

Embedding informatie ophalen

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

Embedding informatie ophalen postman

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.
Agent define prompt

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.

Agent define prompt postman

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.

Agent define prompt postman

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.

AI-hulpmiddelen

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:

AI-hulpmiddelen voorbeeld

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:

AI-hulpmiddelen voorbeeld

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! Deze hulpmiddelen kunnen taken die ooit uren duurden terugbrengen tot slechts enkele minuten. Een van de voordelen van dit project is dat het open-source is, waardoor u gemakkelijk kunt bijdragen en direct kunt communiceren met de ontwikkelaars over eventuele problemen die u tegenkomt.

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

Wilt u meer weten? Of dit zelf implementeren? Neem contact op en laten we een gesprek hebben (GPT)!

Geïnteresseerd in een samenwerking?