← Back to Blog
RAG & AI Systems2 min read

From “Ask ChatGPT” to Giving AI Tools

For most of the time I have been using language models, the interaction has been very simple: I send text, the model sends text back.

Even RAG mostly keeps that pattern. The system retrieves some information, puts it into the prompt and asks the model to produce a better answer.

Tools change the relationship.

Instead of asking the model to tell me what should happen, I can give it a small set of actions it is allowed to use.

For example, imagine an internal assistant that can answer questions about a database. One option is to retrieve some data beforehand and include it in every prompt. Another is to give the model a tool such as:

get_customer_orders(customer_id)

The model can decide that it needs the information, call the tool, receive the result and then continue answering.

The important part is that the model is not secretly executing arbitrary code. I define the available tools, their inputs and what each tool is allowed to do. The application executes the actual function.

The flow becomes something like:

user asks a question
↓
model decides it needs information
↓
model requests a tool call
↓
application executes the tool
↓
result goes back to the model
↓
model answers

This feels like a much bigger architectural change than simply improving prompts. The model is no longer only generating text; it is starting to coordinate pieces of an application.

It also means the safety boundary becomes important very quickly. A tool that reads information is one thing. A tool that deletes data, sends an email or changes a customer record is something else entirely.

The model may decide when a tool is useful, but I still need to decide what it is allowed to do.

That distinction is probably going to matter a lot as these systems become more capable.

Topics

tool useAI agentsfunction calling