No description
  • Groovy 63.2%
  • Perl 31.2%
  • HTML 3%
  • JavaScript 1.7%
  • CSS 0.5%
  • Other 0.4%
Find a file
2026-10-28 17:51:22 +01:00
.claude/skills Skills: update, add for JS 2026-07-10 10:17:55 +02:00
buildSrc fix building correct WAR-file 2024-09-17 19:03:28 +02:00
docker define DeepL API URL and Auth Key in .env 2026-10-07 12:48:16 +02:00
gradle/wrapper fix building correct WAR-file 2024-09-17 19:03:28 +02:00
grails-app optimize UI of benchmark details 2026-10-28 17:51:22 +01:00
src add the imageCategory to the Asset 2026-10-28 13:34:17 +01:00
storage benchmark: image categories and stability value 2026-10-28 12:56:25 +01:00
tools Implement sending domain instance to JMS via application event 2024-06-21 13:56:38 +02:00
.editorconfig upgrade .editorconfig 2024-04-30 09:48:54 +02:00
.gitignore add /storage to .gitignore 2025-01-31 11:44:16 +01:00
.sdkmanrc java=17.0.19-tem 2026-06-11 16:29:46 +02:00
application.yml-template add first version of Keyword Review Agent 2026-10-05 17:16:32 +02:00
build.gradle PP 2025-09-01 09:45:08 +02:00
deploy.sh deploy to temp folder 2026-06-10 20:40:16 +02:00
deploy2STAGE.sh do not overwrite prompts during deploy 2025-06-26 09:37:46 +02:00
deployDocker2PROD.sh adjustments for new server 2025-03-26 16:55:08 +01:00
deployDocker2STAGE.sh optimize docker stuff 2025-03-25 18:27:13 +01:00
gradle.properties version = 1.6.2 2026-10-14 14:11:12 +02:00
gradlew upgrade build & deployment scripts 2024-01-11 08:53:24 +01:00
grails-cli.yml add grails console 2024-07-04 09:58:36 +02:00
PortForwardStage.sh extend queue management and UIs 2024-04-26 10:15:27 +02:00
README.md update README.md 2026-05-20 12:50:56 +02:00
RPC.md implement keyword enrichment using JMS RPC 2025-06-18 17:54:49 +02:00
settings.gradle upgrade GRAILS 6.2.2 2024-11-21 09:39:10 +01:00
test.html Begin implementing chat API connection 2024-03-18 13:36:08 +01:00

Westend61 AI-Keywording ("AIwording")

Use any LLM to keyword images automatically.

todo

  • Ext. Kwd: Submission -> Manipulate (AI system + keep all terms + skip QA ) in einem Durchgang setzten

  • QA: "Save & enrich" -> Danach ist die Bildauswahl wieder zurückgesetzt -> siehe ext.kwd

  • Submission: Marker for (keep all AI keywords plus the mapped ones!) (UI in AM&EK)

  • Submission: Marker for skip QA (UI in AM&EK)

  • stats on queue for tokens/price day/week/month/year

  • number of keywords in QA image not correct for all image (some are 0)

done

  • start initCache() im background/later to speedup for QA edit
  • Do Aiwording after X hours (Settings) after creation in App
  • "Object" wird als nicht eindeutig erkannt, obwohl es eine "replacement regel" gibt, und damit ist es eindeutig!!
  • Das gleiche in AIwording: Ext. Kwd: Submission -> Manipulate (AI system + keep all terms + skip QA ) in einem Durchgang setzten (auch intern)
  • QA: Add a new keyword not working !!
  • Submission "edit photographer captions" (see ext. kwd)
  • QA: new keyword field : es fehlt der suggest wie in ext. kwd
  • QA: linke kwds Leiste soll nicht mitscrollen -> ext. Kwd
  • QA : Manipulate : Neben "APPROVE Submission" noch ein "APPROVE Submission keep all terms"
  • QA: if user has an older open Sub. and opens a new, then the new is also locked
  • AdminPanel: Show a list of all locked submission and button to unlock only one
  • QA: list : also link "AM Id" field
  • QA: list : Edit filter geht nicht (auf) !!!
  • Submission ins Hauptmenü
  • CSS: QA : Manipulate Tabs broken!
  • unlock Submission : 1. job in the night and older than X hours, 2. Admin Panel
  • copy all relevant infos to ProcessQueue from submission
  • ProcessQueue -> ProcessQueueItem
  • QA: edit Asset : keywords (now, enriched [985]) Anzahl ist Buchstaben, soll aber wörter sein !!
  • make sure the release annotation is done after aiwording for every Asset (before QA)
  • ignore terms: Support "*" : "overcoming *"
  • Keywording replacement regeln anwenden
  • QA -> edit asset: use better colours
  • QA: New command for term(s) "blacklist this" -> remove from all and add to blacklist
  • Blacklist for AI keywords: Remove them directly
  • support multiple prompts (2 for every model/llm)
  • stats in QA fixing
  • external keywording: Submission manipulate: add the AI systems
  • enrich only after QA not during AIwording !!
  • first: enrich by using alle languages, map synsets and merge en terms back to english
  • map in keywording for "de" and "es" and add preferred terms to "en" Ex
  • If filter e.g. "new only" the "mark all" marks all also the hidden wants
  • QA: show thesaurus the keywords are in?
  • Store Assets with errors in List an process at end of Submission again, do not stop Submission
  • show not mapped on Asset
  • add additional infos from author and model release

Usage

Build and start the docker container in ./docker/encoder

cd ./docker/encoder
docker build . encoder_blip

The build process can take a long time, but only has to be done once.

Afterward run the docker container

docker run -it -p 127.0.0.1:8000:8000 --rm  -v ./app.py:/app.py encoder_blip

On a macbook with m1 chip, add the following flag to the docker build and run commands

--platform linux/amd64

OpenAI API limits

limits

  • day 1000 request
  • 20000 tokens / minute

Task scheduling

The spring scheduler is configured in de.w61.aiwording.schedule.SchedulingConfiguration.

The number of workers is defined in ProcessingService.

Every 2 minutes the ProcessingService checks if a worker is idle. Then it checks if there is a new ProcessQueueItem waiting to be processed. It there is it is started in an idle worker.