janwillemaltink
  • home
  • blog
  • Finetuning gids
janwillemaltink.
InstagramGitHubX
AI receipt scanner
🧾

AI receipt scanner

Tags
LLMsPostgresAnthropicFastAPILangGraph

✒️Door: @Jan Willem Altink

📅Datum: 27 april 2024

🕜Leestijd: 4 minuten

  • Inleiding
  • Wat
  • In het kort
  • Whiteboard
  • Gebruikte tools en technieken
  • Waarom
  • Plussen en minnen
  • Tot Slot

Update: leuk, dit projectje is opgepikt dor Langchain:

LinkedIn:

LangChain on LinkedIn: 🧾LangGraph Expense tracker Small project exploring the possibilities of…

🧾LangGraph Expense tracker Small project exploring the possibilities of LangGraph It lets you send pictures of invoices, structures and categorize the…

www.linkedin.com

LangChain on LinkedIn: 🧾LangGraph Expense tracker  Small project exploring the possibilities of…

X/Twitter:

Inleiding

Nieuw weekend, nieuw AI hobby projectje. Gezien ik me de afgelopen tijd erg veel met RAG heb bezig gehouden wou ik wat andere onderwerpen bekijken. Gekozen voor LangGraph, omdat dat me een super krachtige manier van het werken met agents en flow engineering leek. Mijn inschatting is dat die 2 onderwerpen super belangrijk gaan worden (en al zijn) bij de zoektocht naar betere kwaliteit output vanuit AI systemen. Ik denk ook dat het slim gebruik van een goed gedefinieerde flow en agents de potentie van een LLM of ander generatief AI model nog een heel stuk oprekken nadat het prompt al volledig geoptimaliseerd is.

icon
🔗GitHub: LangGraph Expense Tracker 🔗Whiteboard: Excalidraw link

Wat

In het kort

In het kort kun je met deze applicatie foto’s delen van bonnetjes, die dan in een vaste JSOn structuur geformatteerd worden door een LLM met image to text capaciteiten. Deze gestructureerde output categoriseren we en zetten we vervolgens in een database. De gebruiker kan zelf de categorieën kiezen, ook kun je als de output vanuit de foto herkenning niet helemaal correct is de LLM nog verbeter instructies geven of switchen tussen GPT4 en Claude Opus.

Whiteboard

schematische weergave van de langgraph applicatie

🔗Voor een grote versie van de whiteboard klik hier.

Gebruikte tools en technieken

  • 🐘PostGres - voor het opzetten van de database (link)
  • ✳️FastAPI - voor het opzetten van de API (link)
  • 🕸️LangGraph - voor het configureren van de flow (link)
  • 🔗LangChain - voor het definieren van de prompts en het aanroepen van de LLMs (link)
  • 🐳Docker - voor de database container (link)
  • 🛠️LangSmith - voor de analyse van de chains (link)
  • 🧠OpenAI & Anthropic - voor de LLMs (link & link)

Waarom

  • 📚LangGraph begrijpen- voor mijzelf is de belangrijkste reden van dit projectje om er wat van op te steken. Dat is gelukt, ik begrijp LangGraph een stuk beter, maar ook het opzetten van een database of het maken van een api waren allemaal vrij nieuw voor mij, dus het is goed om dat eens gedaan te hebben, deze specifieke usecase is dan natuurlijk meer een vehicel.
  • 👮🏼Werken met Agents - zoals in de inleiding ook al aangegeven wou ik graag een klein projectje bouwen met Agents, deze bekende paper laat de potentie daarvan goed zien.
  • 🕸️Flow engineering - nog zo’n concept dat denk ik veel waarde gaat toevoegen aan AI toepassingen. Ik vond dit een super waardevolle webinar over dat onderwerp.

Plussen en minnen

Hieronder een kort overzichtje van wat goed en minder goed ging bij het bouwen

icon
Goed:
  • Het gebruik van de LangChain Pydantic parser in combinatie met een krachtig Multimodal is een super krachtige methode voor het extracten van informatie uit een afbeelding.
  • de mate waarin je controle hebt over de flow is met LangGraph echt heel handig, het stelt je in staat om de LLM taak op te knippen en specifieker, kleiner en gerichter te maken, wat de output kwaliteit behoorlijk vergroot.
icon
Minder:
  • In mijn usecase heb ik de flow wel heel erg “dichtgetimmerd”; gaandeweg het bouwen kwam ik er achter dat juist ook een agent een vervolgstap laten bepalen behoorlijke kansen met zich mee brengt, bij een volgend project meot ik proberen meer flexibiliteit in het design te stoppen.
  • De Python code in met name de chain map is niet super netjes. Hier kan ik in metname de modulariteit en consistentie nog wel wat verbeteringen maken.

Tot Slot

Ik denk niet dat ik de LangGraph receipt extractor in het echt veel zal gaan gebruiken, maar als leerprojectje was het super leuk om te doen. Ik heb vrij veel nieuwe ideeen opgeschreven om uit te werken de komende tijd en denk er ook best wat van opgestoken te hebben.

Mocht je opmerkingen, vragen of suggesties hebben na het lezen hoor ik die zoals altijd heel graag.