Service

Generative AI and LLM development

Software features built on large language models, designed so that their output is useful, checkable and safe to put in front of users.

What it is

Generative AI and LLM development means building software in which a large language model does part of the work: drafting, summarising, answering, classifying, extracting or transforming content. The model call is usually a small part of the code. Most of the engineering sits around it: assembling the right context, shaping the prompt, validating what comes back, handling failures and measuring quality over time.

An LLM produces probable text rather than guaranteed facts, and the same input can produce different outputs. A dependable feature accounts for that behaviour instead of assuming it away.

When it suits a project

An LLM tends to be a good fit when the input is unstructured language, the task is hard to express as fixed rules, and an imperfect first result can be reviewed or corrected. Common examples include drafting assistants, document summaries, support reply suggestions and turning free text into structured records.

It is often a poor fit when a task needs exact calculation, when a simple rule or database query already solves it, or when an unreviewed mistake would be costly. Early scoping should check for this, because a conventional solution may be the better choice.

How it is typically approached

  • Define the task and the failure modes. Agree what a good output looks like, what a bad one looks like, and what should happen when the model is unsure.
  • Collect test cases early. A small set of realistic inputs and expected qualities makes it possible to compare prompts and models on evidence rather than impressions.
  • Design the prompt and context. Clear instructions, relevant data and examples where they help. If answers must come from your own content, retrieval is added; see RAG development.
  • Constrain the output. When other code consumes the result, a defined schema and validation step catch malformed responses before they cause harm. The guide on data extraction with LLMs shows this in practice.
  • Handle production concerns. Streaming, timeouts, retries, rate limits, cost monitoring, logging and protection against prompt injection.
  • Keep evaluating. Rerun the test cases whenever a prompt or model changes, so that a regression is noticed before users find it.

What I can help with

I can help with scoping an LLM feature, choosing an approach, writing and testing prompts, building the Python backend around the model, and connecting it to a user interface. The guide on adding an LLM feature to a full stack app walks through the main decisions, and the full stack development page covers the surrounding product work.

Frequently asked questions

Do I need to train my own model?

Usually not. Many features can be built on an existing hosted or open-weight model using good prompts and context. Fine-tuning or training tends to be considered only after that approach has been tested and a specific gap has been identified.

How do you stop an LLM from making things up?

It cannot be eliminated entirely, but it can be reduced. Common measures include grounding answers in retrieved sources, allowing the model to say it does not know, validating outputs, showing citations and keeping a person in the loop for important decisions.

Which model should a project use?

That depends on the quality the task needs, along with latency, cost and data handling requirements. The practical way to decide is to run candidate models against the same test cases for your task.

Can an LLM feature be added to existing software?

Yes. It is commonly added as a backend service that your existing application calls, which limits changes to the rest of the system and keeps API keys away from the browser.