auto-append /v1 to vllm base_url, matching ollama behavior
This commit is contained in:
parent
4478b7ce2b
commit
1ccb5b5fad
2 changed files with 39 additions and 0 deletions
|
|
@ -200,6 +200,8 @@ def get_embedder(config: AppConfig = Config) -> EmbedderWrapper:
|
||||||
from haiku.rag.embeddings.vllm import VLLMMultimodalEmbedder
|
from haiku.rag.embeddings.vllm import VLLMMultimodalEmbedder
|
||||||
|
|
||||||
base_url = embedding_model.base_url or "http://localhost:8000/v1"
|
base_url = embedding_model.base_url or "http://localhost:8000/v1"
|
||||||
|
if not base_url.rstrip("/").endswith("/v1"):
|
||||||
|
base_url = base_url.rstrip("/") + "/v1"
|
||||||
return VLLMMultimodalEmbedder(model_name, vector_dim, base_url=base_url)
|
return VLLMMultimodalEmbedder(model_name, vector_dim, base_url=base_url)
|
||||||
|
|
||||||
raise ValueError(f"Unsupported embedding provider: {provider}")
|
raise ValueError(f"Unsupported embedding provider: {provider}")
|
||||||
|
|
|
||||||
|
|
@ -111,3 +111,40 @@ def test_ollama_embedder_does_not_double_append_v1():
|
||||||
url = str(pa_model.base_url).rstrip("/") # type: ignore[union-attr] # ty: ignore[unresolved-attribute]
|
url = str(pa_model.base_url).rstrip("/") # type: ignore[union-attr] # ty: ignore[unresolved-attribute]
|
||||||
assert url.endswith("/v1")
|
assert url.endswith("/v1")
|
||||||
assert not url.endswith("/v1/v1")
|
assert not url.endswith("/v1/v1")
|
||||||
|
|
||||||
|
|
||||||
|
def test_vllm_embedder_appends_v1_when_missing():
|
||||||
|
"""vLLM's chat-completions endpoint also lives under /v1. A user who
|
||||||
|
forgets the suffix would otherwise POST to <host>/embeddings and get
|
||||||
|
a 404 — match the Ollama behavior and append it."""
|
||||||
|
config = AppConfig(
|
||||||
|
embeddings=EmbeddingsConfig(
|
||||||
|
model=EmbeddingModelConfig(
|
||||||
|
provider="vllm",
|
||||||
|
name="Qwen/Qwen3-VL-Embedding-8B",
|
||||||
|
vector_dim=4096,
|
||||||
|
base_url="http://my-vllm:8000",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
embedder = get_embedder(config)
|
||||||
|
base_url = embedder._base_url # type: ignore[attr-defined] # ty: ignore[unresolved-attribute]
|
||||||
|
assert base_url.endswith("/v1")
|
||||||
|
|
||||||
|
|
||||||
|
def test_vllm_embedder_does_not_double_append_v1():
|
||||||
|
"""If the user already includes /v1 we leave it alone."""
|
||||||
|
config = AppConfig(
|
||||||
|
embeddings=EmbeddingsConfig(
|
||||||
|
model=EmbeddingModelConfig(
|
||||||
|
provider="vllm",
|
||||||
|
name="Qwen/Qwen3-VL-Embedding-8B",
|
||||||
|
vector_dim=4096,
|
||||||
|
base_url="http://my-vllm:8000/v1",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
embedder = get_embedder(config)
|
||||||
|
base_url = embedder._base_url.rstrip("/") # type: ignore[attr-defined] # ty: ignore[unresolved-attribute]
|
||||||
|
assert base_url.endswith("/v1")
|
||||||
|
assert not base_url.endswith("/v1/v1")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue