klimatbyran / garbo Goto Github PK
View Code? Open in Web Editor NEWKlimatkollen's data pipeline, processing company sustainability reports
Klimatkollen's data pipeline, processing company sustainability reports
After giving feedback, Garbo tries again and returns no values, or significantly less than before.
Example: For ABB Garbo did very well in the first attempt, got minor feedback and when trying again gave Error code 412
https://discord.com/channels/1049333222309371965/1234422986199531560
Example 2: Lagercrantz, after feedback Garbo didn't even find the company name :(
https://discord.com/channels/1049333222309371965/1234420545421049877
Garbo can receive feedback from the user and try again to look for the correct data. This only works once, after the first interaction the user is stuck with the final result and it would be very helpful to have more dialouge to continue tweaking.
There seems to have been work done to solve this but it's not working for me yet :)
When a new pdf is sent to the bot- we should try to keep the interaction object somehow so we can send updates to it during the process. Probably we should start with the flow jobs and keep the interaction object at the main job and then update for each substep that is started or finished.
Something like that.
ABB har två olika totaler, ett som är "representativt" och ett som är "strikt". Ett prompt skulle kanske vara att säga att Garbo ska välja den total som är mest heltäckande, och om detta är fallet så måste hon klargöra i kommentaren att det finns två scenarion och vad det andra är.
After using llamaparse, Garbo is still struggling to read the tables correctly, in the sense that she is reading the numbers messily from one row, mixing with another row/column.
See example: https://discord.com/channels/1049333222309371965/1234386294629597185
Det vore bra eftersom samma rapporter körs mycket, om det finns ett sätt att säga "Approve" som innebär att det är det resultatet som sparas. Och om rapporten körs igen, så krävs det en Approve och "are you sure you want to override the saved result?" innan nästa sparas ovanpå. På så sätt säkerställer vi att vi har en godkänd version som inte kan ändras hur som helst.
ChromaDb and Redis
Prompt
Företag har huvudsakligen fossila utsläpp. I de fall de har biogena utsläpp rapporteras dessa (oftast) separat, i enlighet med GHG-protokollet. Om vi ber Garbo att rapportera dem separat kommer hon antagligen inte att inkludera dem i totalen. För vissa företag är detta betydande utsläpp och vi kommer på sikt att behöva visa dem, även om vi exkluderar det i MVP.
From Discord:
Lista ut vilka sidor som innehåller de viktiga datat som vi är ute efter och skapa ett jobb som skapar en ny pdf med just de viktigaste sidorna och sedan skickar vi dessa till /parse - då spar vi både pengar och beräkningskraft = energi - och även får det att gå snabbare. Inget vi prioriterar just nu men definitivt till att vi ska tolka tusentals sidor.
Ett inte obetydande antal företag rapporterar utsläpp i andra kategorier än de som GHG-protokollet anger. FÖRSLAG: Därför skulle vi behöva att Garbo 1. mappar mot GHG-protokollets kategorier och 2. identifierar andra utsläppskällor som hon kan lista. Antingen kan en människa därifrån hjälpa henne med mappningen, eller så kan vi med kod summera så att totalerna stämmer.
Gäller även sammanslagna kategorier, där om det tex står "logistik" så är det bättre att Garbo redovisar det separat än gissar kategori, tills vi tränat henne på vad som passar var.
En specifik kategori av företag med den här utmaningen är fastighetsbranschen, där vi kanske kan specialträna Garbo på deras lite egna tweak av GHG-protokollet. Fastighetsägarna har tagit fram en bransch-guide för Scope 3
https://www.fastighetsagarna.se/fakta/broschyrer-och-faktablad/riktlinjer/vagledning-rapportering-av-utslapp-i-scope-3-for-fastighetsagare/ och det finns även en rapporteringsstandard från European Public Real Estate Association https://www.epra.com/media/EPRA_Sus-BPR_2014_1424420907752.pdf
Men det gäller även andra företag som freestylear, tex SBAB. Detta kommer säkert bli mindre vanligt med tiden.
Jag tror att det är bra om Garbo kan göra en self-check om det är så att hon identifierar företaget som en finansiell insitiution, och i sin kommentar säga huruvida de rapporterar finansierade utsläpp eller inte. I så fall borde hon identifiera antingen om de står i en separat tabell som ofta är fallet, eller om det finns en till pdf och så kan vi lösa det.
Jag tror att det kommer vara vanligt att det finns ett lagg här, så att finansierade utsläpp visas för 2022 i 2023 års rapport osv. Då vill vi att det omnämns i kommentaren.
Vissa företag förbjuder Garbo att ladda ner deras rapport, så vi behöver ett sätt att komma runt detta. I nuläget har vi identifierat Swedbank och Astra Zeneca som detta gäller (dvs 2/150)
Choose a relevant db to save results in - Elasticsearch + Kibana?
The AI generated JSON is sometimes inconsistent between runs, example:
"scope3": {
"emissions": "3595000",
"unit": "ton CO2e",
"baseYear": "2019",
"categories": "Error 404"
},
"scope3": {
"emissions": "3595000",
"unit": "ton CO2e",
"baseYear": "2019",
"categories": {
"Error 404": "Missing specific categories data"
}
},
Elasticsearch will complain if 'categories' is sometimes an array and sometimes a single value. The defined type is 'nested', which lets ES decide for itself what structure it has. Unfortunately it only helps the first run. Depending on what is passed, ES will continue to expect this structure (we want an array).
Solutions:
Explicitly define the data structure and make sure we always get that.
PRO: Explicit data structure
CON: Needs error handling, some reports might get lost simply due to this inconsistency.
OR
Change the data type to text, and parse the JSON and save as a string
PRO: Everything will be saved
CON: Blob of text, visualization in kibana more difficult?
Vissa företag har utsläppen någon annan stans än i hållbarhetsrapporten. Tex H&M har en separat pdf som heter typ sustainability discosure. I de fallen vill vi att Garbo identifierar att det finns en referen eller länk till utsläppsdata, och i bästa fall kan gå vidare dit själv. Arion Bank är en annan dubbel-weirdo som har en separat pdf för sina finansierade utsläpp (kat 15), så där vill vi att Garbo plockar upp på det.
Instead of letting each step create the next step - can we use Flows to have different subjobs that can be aggregated to a bigger one?
Garbo är lite slarvig, och kan ibland behöva flera chanser på sig att göra rätt. Kan vi automatisera multipla genomkörningar (typ 5 st), och se till att hon ger sig själv godkänt när det är konsekvent samma resultat, eller de som är mest sannolik?
I så fall, vad visar hon i Discord? Kanske den "bästa" versionen av 5, och om hon har fått inkonsekventa resultat i sina genomkörningar (mer än 1 annorlunda) så flaggar hon för det, så kan man välja att titta på de andra också och manuellt godkänna den som är rätt.
LKAB har ett bibliotek för sina årsrapporter som är svårt at ladda ner från:
https://lkab.mediaflowportal.com/documents/folder/215701/
Garbo har ibland svårt att läsa pdf'er, och då kanske ett bra mellansteg är att hon får hjälp av en annan tjänst som är bättre på att tolka pdfs, vi pratade om någon som heter llama.
Förslag är att om Garbo inte hittar några siffror, så kan hon be llama om hjälp, och sedan prova igen därifrån, så att vi inte behöver köra allt genom llama.
Garbo är lite slarvig och kan behöva flera försök för att hitta rätt. En del av lösningen tänker vi kan vara att ha en till knapp i Discord, så att det kan vara Approve-Feedback-Retry-Reject. Så blir det enklare för människan att bara starta om de som är fel, och godkänna när det är rätt.
Många företag rapporterar enligt GRI. Där finns disclosures som ska svara till Scope 1 (GRI 305-1), Scope 2 (GRI 305-2) och Scope 3 (GRI 305-3). Kanske kan det hjälpa Garbo att hitta utsläppen om hon letar efter detta?
https://www.globalreporting.org/publications/documents/english/gri-305-emissions-2016/
Many of the reports get stuck somewhere after I send them to llamparse, and I never get any data back. Maybe this is because it takes too long for llama to process it.
Suggestion/idea: To only send the pages identified as relevant to llamaparse, maybe using keywords to look for. Risk is that we don't send all the relevant info.
Add error handling to the entire flow, and output to discord if something goes wrong. Currently the last started job just looks stuck if it crashes.
Handle errors in the entire workflow, and output errors to discord to give the user an indication what wen wrong.
Add and setup elasticsearch client (define index and data structure), and integrate with the instance running in the cluster.
Progressively save more data as the workflow proceeds.
TODO: figure out how to act or error, should data be deleted or kept for later?
It might be a good idea to let the LLM decide on what buttons we should ask the reviewer to verify instead of us having boring standard buttons that are hard to interpret
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.