# Uafhængig kritik: LLM Web-Search Test & Testresultater

## Metodologi-kritik

### Stikprøvestørrelse — kritisk svaghed
- Kun 1 prompt pr. model. Ingen gentagelser, ingen varians-beregning. Latency og cost kan svinge 2-5x afhængigt af load, cache og web-resultater.
- Kun 1 emne-domæne: Hermes Agent. Resultaterne er overfitted til ét specifikt opslag med relativt lille web-tilstedeværelse.
- Ingen variation i prompt-type: kun faktuelle “find X”-spørgsmål. Mangler sammenligninger, danske queries, tvetydige emner, misinformation og multi-hop reasoning.

### Ground truth problem
- Testen markerede `hermes-agent.org` som forkert/alternativ URL, men det er ikke tilstrækkeligt verificeret.
- Kritiker-agenten fandt, at både `hermes-agent.org` og `hermes-agent.nousresearch.com` er aktive Hermes Agent-sider med Nous Research-kontekst.
- Derfor bør vi ikke kalde `hermes-agent.org` “forkert” uden redirect-/ejer-verifikation. Det mere præcise er: “ikke den URL vi har som canonical Visit-url i app_directory.”

### Fairness
- OpenRouter og NanoGPT fik næsten samme, men ikke identiske, engelske prompts.
- Fusion, exa-answer og NanoGPT `/api/web` er forskellige produkttyper og bør ikke rangeres på én simpel skala.
- Cost bør sammenlignes som cost-per-kvalitet, ikke kun rå pris.

### Cost og latency
- OpenRouter cost kom fra API-data; NanoGPT cost bør dokumenteres tydeligere.
- Latency er single-shot klientmåling; der mangler P50/P95.

### Kvalitetsvurdering
- “Høj kvalitet” var subjektivt og manglede rubric.
- Der bør scores på URL-korrekthed, kildeautoritet, dansk sprog, svarstruktur, dybde og hallucination.

## Hvilke konklusioner holder?

### Holder
- Fusion er dyrt/langsomt i testen.
- fastgpt fejlede med 502.
- `structured` på NanoGPT `/api/web` var ustabilt i smoke-testen.
- Brave/Exa `/api/web` understøtter kun `searchResults`.
- `answer` er ugyldigt outputType; korrekt er `sourcedAnswer`.
- One-shot politik for danske beskrivelser er fornuftig.

### Delvist
- `gpt-4o-mini-search-preview` skal valideres mod canonical URL, men “forkert URL” er for hård formulering.
- `exa-answer` ser billig og lovende ud, men er kun testet på én prompt.
- `linkup sourcedAnswer` ser lovende ud, men kræver flere tests.

### Ikke stærkt nok bevist
- Endelig anbefalet rangorden mellem modeller.
- “Undgå linkup-research-low” som generel regel.
- Hybrid-strategien som empirisk bevist.

## Manglende tests før workflow 3B/3C

1. 5-10 reference-prompts på forskellige app-typer.
2. 3 gentagelser pr. model for P50/P95 latency og cost-varians.
3. Ground-truth tabel med verificerede canonical URLs før testen.
4. Automatisk URL-verifikation: HTTP status, redirect chain, canonical match, domæne-ejer/brand-match.
5. Danske prompts.
6. Tvetydige emner.
7. Error-handling og fallback-test.
8. Concurrent/batch-test.
9. Cache-test.
10. Test af Perplexity Sonar og `gpt-4o-search-preview`.

## Prioriterede optimeringsforslag

### P0 — før produktion
1. Definér ground-truth tabel med 10 apps og verificerede canonical URLs.
2. Kør 3 gentagelser pr. metode og rapportér P50/P95.
3. Ret quality note: `hermes-agent.org` bør kaldes “ikke canonical i app_directory”, ikke nødvendigvis forkert, indtil det er verificeret.

### P1 — bedre beslutningsgrundlag
4. Test `perplexity/sonar-pro-search`, `perplexity/sonar-pro`, `gpt-4o-search-preview` og evt. `relace/relace-search`.
5. Tilføj danske test-prompts.
6. Indfør scoring-rubric 0-5 for URL, kilde, dansk, struktur, dybde, hallucination.
7. Rapporter cost-per-quality-score.

### P2 — workflow-optimering
8. Implementér cache og one-shot lock pr. `app_ref_id`.
9. Fallback-kæde: billig søgning først, dyr model kun ved lav score.
10. Circuit breaker ved 502/504/timeouts.

### P3 — dokumentation
11. Dokumentér NanoGPT cost-kilde.
12. Fjern kategoriske “undgå”-labels baseret på ét failed test; brug “fejlede i smoke-test”.

## Samlet vurdering

Testen er et fornuftigt første udkast, og guiderne er brugbare. Men konklusionerne var for stærke ift. datagrundlaget. Den bør behandles som smoke-test, ikke produktionsbenchmark. P0-forbedringerne bør laves før workflow 3B/3C køres bredt.
