[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"page:portfolio-slug:en:spotfinder-technology":3},{"componentName":4,"header":5,"contentShort":6,"contentShortHTML":7,"contentHTML":8,"publishDate":9,"dateChanged":9,"order":10,"noIndex":11,"postTopCategory":12,"postTexts":14,"files":25,"documents":26,"children":27,"uuid":28},"case-windtravel-technik","Wie eine Antwort entsteht","Embeddings, Werkzeuge, eine Wissensbasis und ein Sprachmodell mit festem Antwortformat – in einem kurzen, agentischen Ablauf.","\u003Cp>Embeddings, Werkzeuge, eine Wissensbasis und ein Sprachmodell mit festem Antwortformat – in einem kurzen, agentischen Ablauf.\u003C\u002Fp>","\u003Ch4>Wissensbasis mit Embeddings\u003C\u002Fh4>\u003Cp>Die Spotbeschreibungen sind in Abschnitte zerlegt und als Vektoren (Embeddings) in PostgreSQL mit pgvector gespeichert. Vor jeder Antwort wird die Frage ebenfalls zum Vektor und mit den Abschnitten verglichen; die passendsten gehen als Nachschlagetext in die Anweisung an das Modell. Gesucht wird nur in den Spotbeschreibungen und nur in dem, was die fragende Person lesen darf.\u003C\u002Fp>\u003Ch4>Werkzeuge statt erfundener Zahlen\u003C\u002Fh4>\u003Cp>Das Sprachmodell rechnet nicht und kennt keine Wetterdaten. Es bekommt vier Werkzeuge (Function Calling), jedes mit einem genauen Schema: Spots nach einem Wunsch suchen und reihen, einen Spot im Detail lesen, den Wind jetzt und in den nächsten 48 Stunden, und wo heute oder am Wochenende guter Wind ist. Das Modell liefert nur die Argumente – etwa Monat 11, mindestens 20 °C, 15 Knoten. Der Server prüft sie gegen das Schema, führt das Werkzeug aus und gibt ein knappes Ergebnis zurück. Zahlen in der Antwort stammen deshalb immer aus den Daten.\u003C\u002Fp>\u003Ch4>Ein kurzer, agentischer Ablauf\u003C\u002Fh4>\u003Cp>Eine Antwort entsteht in Runden: Das Modell ruft ein Werkzeug auf, liest das Ergebnis, ruft bei Bedarf ein weiteres auf – zum Beispiel erst die Suche, dann die Details zum besten Treffer – und schreibt erst dann die Antwort. Die Zahl der Runden ist begrenzt, jede Runde wird gebucht, und vor jeder weiteren wird geprüft, ob das Budget noch reicht. Die Person sieht währenddessen, dass gesucht wird.\u003C\u002Fp>\u003Ch4>Festes Antwortformat\u003C\u002Fh4>\u003Cp>Die Antwort ist kein freier Text, sondern ein JSON-Objekt nach einem strikten Schema: der Text für die Person, die genannten Spots, ob die Auswahl auf die Karte soll, ein Spot für die Buchung, bis zu drei Vorschläge für die nächste Frage und – nach einer Websuche – die Quellen. Die Seite prüft jede Spot-Kennung gegen ihre eigene Liste und baut Knöpfe und Adressen selbst – ein Link kann nicht kaputt, falsch oder in der falschen Sprache ankommen.\u003C\u002Fp>\u003Ch4>Das Modell ist eine Einstellung\u003C\u002Fh4>\u003Cp>Welches Sprachmodell antwortet, ist eine Einstellung des Agenten, kein Teil des Codes. Heute ist es ein kleines, günstiges Modell auf Azure OpenAI; andere Anbieter lassen sich anschließen. Für die Werkzeuge braucht es ein Modell mit Function Calling in der unterstützten Form.\u003C\u002Fp>","2026-10-27T10:40:00Z",40,false,{"name":13},"portfolio",[15],{"locale":16,"header":17,"contentShort":18,"contentShortHTML":19,"contentHTML":20,"slug":21,"metaTitle":22,"metaDescription":23,"focusKeyword":24},"en","How an answer is made","Embeddings, tools, a knowledge base and a language model with a fixed answer format – in a short, agentic flow.","\u003Cp>Embeddings, tools, a knowledge base and a language model with a fixed answer format – in a short, agentic flow.\u003C\u002Fp>","\u003Ch4>Knowledge base with embeddings\u003C\u002Fh4>\u003Cp>The spot descriptions are cut into sections and stored as vectors (embeddings) in PostgreSQL with pgvector. Before every answer the question becomes a vector too and is compared with the sections; the closest ones go into the model’s instruction as reference text. Only the spot descriptions are searched, and only what the person asking may read.\u003C\u002Fp>\u003Ch4>Tools instead of invented numbers\u003C\u002Fh4>\u003Cp>The language model does not calculate and knows no weather data. It gets four tools (function calling), each with an exact schema: search and rank spots for a wish, read one spot in detail, the wind now and over the next 48 hours, and where there is good wind today or at the weekend. The model only supplies the arguments – say month 11, at least 20 °C, 15 knots. The server checks them against the schema, runs the tool and returns a compact result. Numbers in the answer therefore always come from the data.\u003C\u002Fp>\u003Ch4>A short, agentic flow\u003C\u002Fh4>\u003Cp>An answer is made in rounds: the model calls a tool, reads the result, calls another one if needed – first the search, say, then the details of the best match – and only then writes the answer. The number of rounds is limited, every round is booked, and before each further one the budget is checked. Meanwhile the person sees that a search is running.\u003C\u002Fp>\u003Ch4>Fixed answer format\u003C\u002Fh4>\u003Cp>The answer is not free text but a JSON object following a strict schema: the text for the person, the spots named, whether the selection should go on the map, one spot for booking, up to three suggestions for the next question and – after a web search – the sources. The page checks every spot key against its own list and builds buttons and addresses itself – a link cannot arrive broken, wrong or in the wrong language.\u003C\u002Fp>\u003Ch4>The model is a setting\u003C\u002Fh4>\u003Cp>Which language model answers is a setting of the agent, not part of the code. Today it is a small, low-cost model on Azure OpenAI; other providers can be connected. The tools need a model with function calling in the supported form.\u003C\u002Fp>","spotfinder-technology","Spotfinder technology: embeddings, tools, AI","How the Spotfinder answers: a knowledge base with embeddings, tools through function calling, an agentic flow and a fixed answer format.","function calling",[],[],[],"01a17cf2-4c75-7d89-92f4-ddb8b4ab3531",1793100750794]