Package org.mockserver.llm.client
Class LlmProviderSniffer
java.lang.Object
org.mockserver.llm.client.LlmProviderSniffer
Maps a forwarded request's target host/URL to an LLM
Provider, enabling
GenAI observability on the proxy/forward path. Pure function of its inputs (request
host/path, configuration) — no shared mutable state.
Detection order:
- Well-known provider hosts (exact or wildcard match)
- Configured
mockserver.llmBaseUrlOllama host match - Fallback to configured
mockserver.llmProvider— only when the request path looks like an LLM endpoint (contains any of/chat/completions,/messages,/completions,/responses,/embeddings,/v1/,:generatecontent,/api/generate,/api/chat)
Optional.empty() when the request is not LLM traffic.-
Method Summary
Modifier and TypeMethodDescriptionstatic StringextractModelFromRequest(HttpRequest request) Extract the model name from the forwarded request body.static StringextractModelFromResponse(HttpResponse response) Extract the model name from the forwarded response body.sniff(HttpRequest forwardedRequest) Sniff the LLM provider from a forwarded request's target host.sniffByHost(String host) Sniff the LLM provider from an explicit host string (for unit testing or callers that already have the host extracted).sniffByHostAndPath(String host, String path) Sniff the LLM provider from an explicit host and path.
-
Method Details
-
sniff
Sniff the LLM provider from a forwarded request's target host.- Parameters:
forwardedRequest- the request that was forwarded to the upstream- Returns:
- the detected provider, or empty if this is not LLM traffic
-
sniffByHost
Sniff the LLM provider from an explicit host string (for unit testing or callers that already have the host extracted). Equivalent tosniffByHostAndPath(host, null)— the configured-provider fallback is only applied when the path looks like an LLM endpoint, so with a null path the fallback is skipped. -
sniffByHostAndPath
Sniff the LLM provider from an explicit host and path.- Parameters:
host- the target host (may be null)path- the request path (may be null) — used only for the configured-provider fallback gate
-
extractModelFromResponse
Extract the model name from the forwarded response body. Providers typically include a"model"field in their JSON response (OpenAI, Anthropic, Gemini use this pattern). Returns null if extraction fails. -
extractModelFromRequest
Extract the model name from the forwarded request body. Providers typically include a"model"field in their JSON request body. Returns null if extraction fails.
-