RHIDP-14063: migrate inference providers from llama stack to lightspeed core#36
Conversation
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
…racked config file Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
PR Summary by QodoMigrate inference provider configuration from Llama Stack to Lightspeed Core
AI Description
Diagram
High-Level Assessment
Files changed (10)
|
Code Review by Qodo
Context used 1.
|
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
michael-valdron
left a comment
There was a problem hiding this comment.
lightspeed stack deploys good, and confirmed its working with OpenAI.
I'm having connection difficulties with vLLM/Ollama though, I'm not sure if I missed something and entered something wrong but both methods are giving me similar 404 connection errors:
Ollama
[lightspeed-core] | ERROR 2026-07-08 20:02:45,583 llama_stack.providers.utils.inference.openai_mixin:525 providers::utils:
[lightspeed-core] | VLLMInferenceAdapter.list_provider_model_ids() failed with: Connection error.
vLLM
[lightspeed-core] | ERROR 2026-07-08 20:08:22,352 llama_stack.providers.utils.inference.openai_mixin:525 providers::utils:
[lightspeed-core] | VLLMInferenceAdapter.list_provider_model_ids() failed with: Error code: 404 - {'detail': 'Not Found'}
I did use the inference YAML in the docs and tried ollama host http://localhost:11434/v1 and http://host.containers.internal:11434/v1.
fwiw the vLLM problem is present before your changes so it is most likely unrelated and maybe a problem with the team cluster vLLM endpoints.
|
@Jdubrick Can you confirm vLLM and ollama run on your end? |
@michael-valdron Here is my POSTMAN result for and this is the snippet from my config file for the providers: inference:
providers:
- type: sentence_transformers
- type: vllm
api_key_env: VLLM_API_KEY
extra:
base_url: ${env.VLLM_URL:=}
max_tokens: ${env.VLLM_MAX_TOKENS:=4096}
network:
tls:
verify: ${env.VLLM_TLS_VERIFY:=true}
- type: vllm
extra:
base_url: ${env.OLLAMA_URL:=http://localhost:11434/v1}Edit: Investigating a potential collision internally in LCORE when there are > 1 vLLM providers, I don't think they uniquely name them under the hood |
@Jdubrick Is that where you have a model server with > 1 models and have to specify the model name or > 1 vLLM model server specified? The latter I didn't think was possible with the compose we have but perhaps with a different deployment setup it is. |
@Jdubrick For the compose, do you have |
I guess excluding ollama + vLLM since ollama also uses a vLLM inference entry. |
@Jdubrick My setup looks like this:
POSTMAN Output: |
Yeah,
When there is more than 1 vLLM server specified like in this change (Ollama is routed through vllm, so they collide) lightspeed-core/lightspeed-stack#2106 is open to add a way to specify an id so they don't anymore and I'll be updating this PR with it after it's merged You're on linux, do you need to run any host network or anything? |
@Jdubrick I swear I got an error last time I tried the host network but tried again just now and its now working! I believe I do see the collision you mean as I now get no errors with both ollama and vLLM but I know vLLM is not working as I don't see the qwen3 model, only the ones from my local ollama. |
Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
michael-valdron
left a comment
There was a problem hiding this comment.
lgtm
POSTMAN output:
{
"models": [
{
"identifier": "ollama-provider/all-minilm:l6-v2",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "all-minilm:l6-v2",
"model_type": "llm"
},
{
"identifier": "ollama-provider/gemma3:4b",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "gemma3:4b",
"model_type": "llm"
},
{
"identifier": "ollama-provider/gemma3:latest",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "gemma3:latest",
"model_type": "llm"
},
{
"identifier": "ollama-provider/granite-code:8b",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "granite-code:8b",
"model_type": "llm"
},
{
"identifier": "ollama-provider/granite3.3:8b",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "granite3.3:8b",
"model_type": "llm"
},
{
"identifier": "ollama-provider/ibm/granite3.3:2b-base",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "ibm/granite3.3:2b-base",
"model_type": "llm"
},
{
"identifier": "ollama-provider/llama3.1:8b",
"metadata": {},
"api_model_type": "llm",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "llama3.1:8b",
"model_type": "llm"
},
{
"identifier": "ollama-provider/nomic-embed-text:latest",
"metadata": {},
"api_model_type": "embedding",
"provider_id": "ollama-provider",
"type": "model",
"provider_resource_id": "nomic-embed-text:latest",
"model_type": "embedding"
},
{
"identifier": "sentence-transformers//rag-content/embeddings_model",
"metadata": {
"embedding_dimension": 768
},
"api_model_type": "embedding",
"provider_id": "sentence-transformers",
"type": "model",
"provider_resource_id": "/rag-content/embeddings_model",
"model_type": "embedding"
},
{
"identifier": "sentence-transformers/nomic-ai/nomic-embed-text-v1.5",
"metadata": {
"embedding_dimension": 768
},
"api_model_type": "embedding",
"provider_id": "sentence-transformers",
"type": "model",
"provider_resource_id": "nomic-ai/nomic-embed-text-v1.5",
"model_type": "embedding"
},
{
"identifier": "vllm-provider/redhataillama-31-8b-instruct",
"metadata": {},
"api_model_type": "llm",
"provider_id": "vllm-provider",
"type": "model",
"provider_resource_id": "redhataillama-31-8b-instruct",
"model_type": "llm"
}
]
}
What does this PR do?:
inferenceproviders from the Llama Stack config.yaml to Lightspeed Core's lightspeed-stack.yamlinferencesection in the config file*.local.yamlfile to avoid changes to the git-tracked config file when adding providersWhich issue(s) this PR fixes:
https://redhat.atlassian.net/browse/RHIDP-14063
PR acceptance criteria:
Testing and documentation do not need to be complete in order for this PR to be approved. We just need to ensure tracking issues are opened and linked to this PR, if they are not in the PR scope due to various constraints.
Tested and Verified
Documentation (READMEs, Product Docs, Blogs, Education Modules, etc.)
How to test changes / Special notes to the reviewer: