Can Provider Routing Change LLM Outputs?
Provider routing can change an LLM's output when a request reaches a different model version, fallback model, parameter configuration, precision level, inference…
In an AI agent, a tool is anything the model can ask to use, like a search engine, a database lookup or a shell command. The model does not run the tool itself. It decides which tool would help, requests it with parameters, gets the result back and continues from there.
A custom tool is one you define and run yourself. You give the model a schema for a tool like search_web or get_customer_balance. When the model requests the tool, your application runs the code on your own infrastructure.
A built-in tool runs in the provider's own runtime. The best-known example is hosted web search, which OpenAI and Anthropic both offer in their APIs. ChatGPT, Claude, Codex CLI and Claude Code use it when they search the web. DeepSeek also supports tool calls, but its API has no hosted web search, so you have to bring and run the search tool yourself.
A built-in tool feels more native because the provider runs it for you. So what is the difference between ChatGPT or Codex with built-in web search and DeepSeek with a custom search tool? The basic loop is the same in both cases. The differences come from training, search quality, speed and control, and not all of them favor the provider.
The model never executes your function. It returns a structured request, roughly like this:
{
"tool": "search_web",
"arguments": {
"query": "latest Nvidia earnings"
}
}
OpenAI's function-calling documentation describes the flow in five steps. You send a request with the tools, receive a tool call, run the code on your side, send the tool output back, and get a final response or more tool calls.
With hosted search, the loop moves to the provider. From your side, all of it can happen in one API request.
In Anthropic's web search tool, Claude decides when to search. The API runs the searches and gives Claude the results. This can repeat several times in one request before Claude writes its final answer with citations.
OpenAI describes the same pattern for reasoning models and calls it agentic search. The model manages the search, reads the results and decides whether to search again. In the Responses API, each search step shows up as a web_search_call item.
Conceptually, yes. OpenAI's documentation says a reasoning model can search "as part of its chain of thought". That almost certainly does not mean an HTTP request goes out between two layers of the transformer. A better picture is that generation pauses at a tool call. A runtime outside the model runs the tool, and generation continues with the result in the context. The details, like KV cache handling, worker scheduling or separate inference passes, are internal to each provider.
Seen from outside, the provider runs the same loop you would build for your own agent:
LLM → action → environment → observation → LLM
What differs is who runs the tool and the loop around it.
The provider controls the model, the search and the loop. That gives it three possible advantages over a custom search tool.
Compare a custom search tool:
internet_lookup(
query,
search_depth,
domains,
freshness
)
with the provider's tool:
web_search(...)
During post-training, the provider can train the model on many search sessions like this one:
question
→ reason
→ web_search
→ inspect
→ reason
→ web_search
→ inspect
→ answer with citation
Training like this teaches the model whether to search, what to search for and when to search again. It also teaches which results to open, which sources to trust, when there is enough evidence and how to cite it. The model learns a tool-use policy, which is much more than the JSON format of a tool call. Anthropic's interleaved thinking, for example, lets Claude reason about each tool result before it decides what to do next.
The model may still handle your own search tool very well, but it has probably not had the same post-training on your particular interface.
Suppose your search tool looks like this:
results = search(query)
return results[:10]
The model gets ten results. If your tool returns whole pages instead, the output looks more like this:
{
"results": [
{ "title": "...", "content": "8,000 tokens..." },
{ "title": "...", "content": "10,000 tokens..." },
...
]
}
That puts a lot of text into the model's context.
A provider's web_search may be a whole retrieval pipeline behind one tool name. Such a pipeline queries several search backends, fetches the pages and extracts the readable text. It filters out spam and duplicates, reranks the results and trims them to a token budget before anything reaches the model.
Some of this is documented. With Anthropic's web_search_20260209 and later versions, Claude can write and run code that filters the search results before they reach the context window, which cuts token use on search-heavy requests. OpenAI's web search has settings for how much search context the model gets (search_context_size) and how much content the tool returns (return_token_budget). With reasoning models, OpenAI's search can also open a page and search inside it.
Because the provider controls these steps, you often get more useful information per token of context, and that can have a large effect on agent quality. When you compare the provider's web_search with your own mySearchTool(), you may be comparing two very different retrieval systems.
In your own loop, each search goes through your application. The model's tool call comes back to your code, which calls a search API and then sends a new request so the model can continue. An agent may repeat this five times for one question.
In a hosted loop, the server that runs the model may call an internal search service and then continue. The provider controls the scheduling, networking and caching in between, so multi-step research can run faster.
A hosted tool is not automatically better. Say you are building a coding agent. Instead of generic web search, you give it tools like these, with carefully designed schemas and result formats:
search_github_code()
search_stackoverflow()
search_npm()
fetch_package_docs()
search_internal_docs()
lookup_symbol()
For that job, this set of tools can do much better than generic web search. For a financial agent, tools like these are probably a better choice than searching the open web:
get_sec_filing()
get_realtime_price()
get_earnings_transcript()
query_bloomberg()
With your own tools, you decide how results are ranked and which private sources the agent can reach. You can also log every query and result, set your own security boundaries, control the cost and switch model providers more easily.
If a model reasons well and handles function calls well but has no web search, you can build the loop around it yourself:
while True:
response = model(messages, tools=tools)
if response.tool_call:
result = run_tool(response.tool_call)
messages += [response.tool_call, result]
continue
return response.text
There is no fundamental reason why such a model could not do excellent web research. How well it does depends on its reasoning and tool-use training, and on your search stack, context management and loop design. Those matter more than whether the provider offers native search.
A model in a search loop, hosted or your own, can seem much smarter because it can look things up when it is unsure. Classic RAG (retrieval-augmented generation) retrieves documents once, before the model starts answering. In an agent loop the model decides what to look up, reads the result and can search again, so gathering information becomes part of its reasoning. Hosted search makes this easy because the provider owns the whole inner loop, but you can build the same pattern yourself.
A model with little or no tool-use training is a different case. You can still give it tools through a text protocol and parse its output:
When you want to search, output:
<search>
query
</search>
Technically this works. But the agent can be much worse if the model has not learned when to act, which tool to use and how to fill in the arguments. The same goes for reading results, recovering from errors, exploring over several steps and knowing when to stop. Models that support tool calls but use them poorly fall somewhere in between. This is one reason agentic models feel different from older LLMs, even though both can output JSON.
Tools can run in more than two places. There are roughly four levels:
At the fourth level you are comparing whole agent systems, and the model is only one part of each.
| Provider web search | Your own search tool | |
|---|---|---|
| Where it runs | Provider infrastructure | Your infrastructure |
| Agent loop | Usually on the provider's side | Usually in your own code |
| Round trips to your code | Usually none while it searches | One per model response that calls tools |
| Model training | The model may be trained on this tool | Depends on how well the model handles new tools |
| Retrieval and ranking | Controlled by the provider | Fully yours |
| Context filtering | Often built in | You build it |
| Citations | Built in | You build them |
| Observability | What the API shows you | Full |
| Private sources | Limited to the provider's integrations | Anything you can connect |
| Domain-specific quality | General purpose | Can be much better |
| Vendor lock-in | Higher | Lower |
I would not choose an LLM provider only because it has native web search. If a model reasons well and is good at using tools in general, you can build a strong search agent on top of it. For specialized uses, your own agent can do better than the built-in search. Native search matters most when you want strong general-purpose research with little engineering.
Give Vroni a GitHub issue, bug report, spec, or rough idea. It reads the repo, plans the change, writes code, runs checks, and works toward a review-ready pull request.
Take a look at vroni.com
When you need branded patches in larger quantities, Custom woven patches with logo offer an excellent combination of detail, durability, and value. We produce Custom woven patches with logo wholesale for companies, teams, brands, and organizations looking for dependable bulk solutions. Woven patches create a smooth surface that works especially well for detailed logos and small lettering. Knowing the difference between woven and embroidered patches makes it easier to select the right style for hats, jackets, uniforms, merchandise, and promotional items.
Make your jacket stand out with Custom embroidered patches for jackets with logo designed around your unique style. We create detailed embroidered patches for men who want to represent their favorite brands, teams, groups, or personal interests. Each patch is carefully stitched to provide a sharp appearance and dependable everyday durability. If you are searching for Custom embroidered patches near me, bring your design idea to life with ease. Our Custom embroidered patches no minimum option is perfect for both small personal projects and larger needs.
Show your love for anime with custom anime Velcro patches for backpacks. Designed with a practical hook and loop backing, these removable patches make it easy to change your favorite designs whenever your mood changes. Anime character patches can be attached securely to compatible backpacks while remaining easy to remove and replace. From colorful character designs to custom anime artwork, these patches are ideal for students, cosplayers, collectors, and fans looking to personalize their everyday gear with a creative anime inspired style.
Create personalized woven custom patches for your project without worrying about large minimum quantities. Whether you need a few patches for friends and teammates or a larger order for your business, every patch receives careful workmanship and quality checks. Several factors can affect Custom woven patches cost, including size, artwork detail, thread colors, and overall coverage. If you are learning how to order custom woven patches, start with your design and preferred quantity, then choose the options that best match your project.
Make your apparel stand out with custom iron on vinyl decals created from your own artwork. Our custom iron on decals for t shirts are a practical choice for personal projects, team clothing, school events, business branding, and special occasions. Choose your preferred design, colors, and size to create a decal that matches your vision. Whether you need a single piece or a larger quantity, we provide consistent quality and dependable production. If you are looking for custom iron on decals near me, getting started is simple.
Turn your artwork or branding into high quality bespoke patches made specifically for your needs. With Custom bespoke iron on patches, you can choose the shape, size, colors, and design details that best represent your idea. They are suitable for personal projects, team clothing, events, businesses, and promotional use. The Cost of bespoke iron on patches depends on several factors, including design complexity, patch size, materials, and quantity. With durable construction and easy application, bespoke patches offer a practical way to personalize your gear.
If you like changing your gear often, hook and loop morale patches make customization simple. These reusable patches attach firmly to compatible surfaces while making it easy to swap designs in seconds. From tactical equipment and uniforms to backpacks and jackets, hook and loop patches provide a convenient customization option for military teams, outdoor lovers, collectors, and everyday users. A Patch with Hook and Loop backing gives you the freedom to update your style without stitching or damaging your gear.
Add a cheerful floral touch to your wardrobe with flower iron on patches. They are easy to apply to jackets, jeans, shirts, bags, and many other fabric surfaces, making them perfect for quick clothing makeovers. With plenty of iron on embroidery patterns flowers to choose from, you can easily match your favorite colors and designs. Iron on embroidered patches floral options provide the detailed look of embroidery while saving you the time and effort of traditional hand stitching.
Designed for both style and durability, our US Navy leather name patch is made to handle the demands of daily service. As a dedicated navy leather name patch maker, we use genuine leather and sturdy stitching to create name patches that look professional and hold up over time. Our Custom Navy Name Tags are ideal for uniforms and can withstand training, outdoor conditions, and everyday wear. With their classic military appearance and dependable construction, they make a practical addition to any Navy uniform or a thoughtful gift.
The point that generation simply pauses at a tool call and resumes with the result is a clearer mental model than the idea of searching inside the chain of thought. Good reminder too that the hosted search loop is the same loop you would write yourself, just with less control over it.