LLM Model Targets#
An LLM model target points to a model, such as an LLM model, a chat endpoint, or a data file.
LLM Model Endpoint#
To create an evaluation target pointing to an LLM model running as NIM, specify a model
that contains the api_endpoint
of the model. For the list of NIM models, refer to Models.
To Create an LLM Model Endpoint Target#
Choose one of the following options to create an LLM model endpoint target.
import os
from nemo_microservices import NeMoMicroservices
# Initialize the client
client = NeMoMicroservices(
base_url=os.environ['EVALUATOR_BASE_URL']
)
# Create an LLM model endpoint target
client.evaluation.targets.create(
type="model",
name="my-target-model-1",
namespace="my-organization",
model={
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/completions",
"model_id": "<my-model>"
}
}
)
print("Model target created successfully")
curl -X "POST" "${EVALUATOR_BASE_URL}/evaluation/targets" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"type": "model",
"name": "my-target-model-1",
"namespace": "my-organization",
"model": {
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/completions",
"model_id": "<my-model>"
}
}
}'
Chat Endpoints#
Unauthenticated#
To run an evaluation using an unauthenticated chat endpoint, specify a model.api_endpoint.url
that contains a URL that ends with /chat/completions
. This configuration is suitable for endpoints that don’t require authentication tokens or API keys.
To Create an Unauthenticated Chat Endpoint Target#
Choose one of the following options to create an unauthenticated chat endpoint target.
import os
from nemo_microservices import NeMoMicroservices
# Initialize the client
client = NeMoMicroservices(
base_url=os.environ['EVALUATOR_BASE_URL']
)
# Create an unauthenticated chat endpoint target
client.evaluation.targets.create(
type="model",
name="my-target-model-2",
namespace="my-organization",
model={
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/chat/completions",
"model_id": "<my-model>"
}
}
)
print("Chat endpoint target created successfully")
curl -X "POST" "${EVALUATOR_BASE_URL}/evaluation/targets" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"type": "model",
"name": "my-target-model-2",
"namespace": "my-organization",
"model": {
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/chat/completions",
"model_id": "<my-model>"
}
}
}'
Authenticated (OpenAI)#
To run an evaluation on an authenticated endpoint that uses the OpenAI-compatible API format, specify openai
for model.api_endpoint.format
, and specify the API key for model.api_endpoint.api_key
.
To Create an Authenticated OpenAI-Compatible Target#
Choose one of the following options to create an authenticated OpenAI-compatible target.
import os
from nemo_microservices import NeMoMicroservices
# Initialize the client
client = NeMoMicroservices(
base_url=os.environ['EVALUATOR_BASE_URL']
)
# Create an authenticated OpenAI-compatible chat endpoint target
client.evaluation.targets.create(
type="model",
name="my-target-model-3",
namespace="my-organization",
model={
"api_endpoint": {
"url": "<external-openai-compatible-base-url>/chat/completions",
"model_id": "<external-model>",
"api_key": "<my-api-key>",
"format": "openai"
}
}
)
print("Authenticated OpenAI target created successfully")
curl -X "POST" "${EVALUATOR_BASE_URL}/evaluation/targets" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"type": "model",
"name": "my-target-model-3",
"namespace": "my-organization",
"model": {
"api_endpoint": {
"url": "<external-openai-compatible-base-url>/chat/completions",
"model_id": "<external-model>",
"api_key": "<my-api-key>",
"format": "openai"
}
}
}'
Inference Parameters#
You can configure inference parameters that apply to all inference requests to the model target during evaluation.
{
"type": "model",
"model": {
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/chat/completions",
"model_id": "<my-model>"
},
"prompt": {
"system_prompt": "",
"inference_params": {
"temperature": 0.6,
"top_p": 0.95,
"top_k": 1,
"max_tokens": 1024,
"stop": ["<|end_of_text|>", "<|eot|>"]
}
}
}
}
Advanced Reasoning#
Advanced reasoning can be controlled for the target.
Nemotron#
Enable reasoning with Nemotron models with the system prompt 'detailed thinking on'
. Nemotron models include reasoning steps in the output, denoted with <think></think>
tags. Configure reasoning_params.end_token
to omit reasoning tokens from evaluation.
{
"type": "model",
"model": {
"api_endpoint": {
"url": "<my-nim-deployment-base-url>/chat/completions",
"model_id": "<my-model>"
},
"prompt": {
"system_prompt": "'detailed thinking on'",
"reasoning_params": {
"end_token": "</think>"
}
}
}
}
OpenAI#
{
"type": "model",
"model": {
"api_endpoint": {
"url": "<external-openai-compatible-base-url>/chat/completions",
"model_id": "external-model",
"api_key": "<my-api-key>",
"format": "openai"
},
"prompt": {
"reasoning_params": {
"effort": "medium"
}
}
}
}
Offline (Pre-generated)#
An offline (pre-generated) target points to a file that is stored in NeMo Data Store and that contains pre-generated answers. Offline targets are useful for similarity metrics evaluations. For more information, refer to Using Custom Data.
To Create an Offline (Pre-generated) Target#
Choose one of the following options to create an offline target.
import os
from nemo_microservices import NeMoMicroservices
# Initialize the client
client = NeMoMicroservices(
base_url=os.environ['EVALUATOR_BASE_URL']
)
# Create an offline (pre-generated) target
client.evaluation.targets.create(
type="cached_outputs",
name="my-target-model-4",
namespace="my-organization",
cached_outputs={
"files_url": "hf://datasets/<my-dataset-namespace>/<my-dataset-name>/<my-dataset-file-path>"
}
)
print("Offline target created successfully")
curl -X "POST" "${EVALUATOR_BASE_URL}/evaluation/targets" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"type": "cached_outputs",
"name": "my-target-model-4",
"namespace": "my-organization",
"cached_outputs": {
"files_url": "hf://datasets/<my-dataset-namespace>/<my-dataset-name>/<my-dataset-file-path>"
}
}'