Create eval
evals.create(**kwargs) -> EvalCreateResponse
post /evals
Create eval
Parameters
-
data_source_config: Custom{ item_schema, type, include_sample_schema} | Logs{ type, metadata} | StoredCompletions{ type, metadata}The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation.
-
class CustomA CustomDataSourceConfig object that defines the schema for the data source used for the evaluation runs. This schema is used to define the shape of the data that will be:
-
Used to define your testing criteria and
-
What data is required when creating a run
-
item_schema: Hash[Symbol, untyped]The json schema for each row in the data source.
-
type: :customThe type of data source. Always
custom.:custom
-
include_sample_schema: boolWhether the eval should expect you to populate the sample namespace (ie, by generating responses off of your data source)
-
-
class LogsA data source config which specifies the metadata property of your logs query. This is usually metadata like
usecase=chatbotorprompt-version=v2, etc.-
type: :logsThe type of data source. Always
logs.:logs
-
metadata: Hash[Symbol, untyped]Metadata filters for the logs data source.
-
-
class StoredCompletionsDeprecated in favor of LogsDataSourceConfig.
-
type: :stored_completionsThe type of data source. Always
stored_completions.:stored_completions
-
metadata: Hash[Symbol, untyped]Metadata filters for the stored completions data source.
-
-
-
testing_criteria: Array[LabelModel{ input, labels, model, 3 more} | StringCheckGrader | TextSimilarityGrader & { pass_threshold} | 2 more]A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like
{{item.variable_name}}. To reference the model's output, use thesamplenamespace (ie,{{sample.output_text}}).-
class LabelModelA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[SimpleInputMessage{ content, role} | EvalItem{ content, role, type}]A list of chat messages forming the prompt or context. May include variable references to the
itemnamespace, ie {{item.name}}.-
class SimpleInputMessage-
content: StringThe content of the message.
-
role: StringThe role of the message (e.g. "system", "assistant", "user").
-
-
class EvalItemA message input to the model with a role indicating instruction following hierarchy. Instructions given with the
developerorsystemrole take precedence over instructions given with theuserrole. Messages with theassistantrole are presumed to have been generated by the model in previous interactions.-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
prompt_cache_breakpoint: PromptCacheBreakpoint{ mode}Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL from the request's
prompt_cache_options.ttl; the boundary is not rounded to a token block.-
mode: :explicitThe breakpoint mode. Always
explicit.:explicit
-
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
-
labels: Array[String]The labels to classify to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityA TextSimilarityGrader object which grades text based on similarity metrics.
-
pass_threshold: FloatThe threshold for the score.
-
-
class PythonA PythonGrader object that runs a python script on the input.
-
pass_threshold: FloatThe threshold for the score.
-
-
class ScoreModelA ScoreModelGrader object that uses a model to assign a score to the input.
-
pass_threshold: FloatThe threshold for the score.
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
name: StringThe name of the evaluation.
Returns
-
class EvalCreateResponseAn Eval object with a data source config and testing criteria. An Eval represents a task to be done for your LLM integration. Like:
-
Improve the quality of my chatbot
-
See how well my chatbot handles customer support
-
Check if o4-mini is better at my usecase than gpt-4o
-
id: StringUnique identifier for the evaluation.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the eval was created.
-
data_source_config: EvalCustomDataSourceConfig | Logs{ schema, type, metadata} | EvalStoredCompletionsDataSourceConfigConfiguration of data sources used in runs of the evaluation.
-
class EvalCustomDataSourceConfigA CustomDataSourceConfig which specifies the schema of your
itemand optionallysamplenamespaces. The response schema defines the shape of the data that will be:-
Used to define your testing criteria and
-
What data is required when creating a run
-
schema: Hash[Symbol, untyped]The json schema for the run data source items. Learn how to build JSON schemas here.
-
type: :customThe type of data source. Always
custom.:custom
-
-
class LogsA LogsDataSourceConfig which specifies the metadata property of your logs query. This is usually metadata like
usecase=chatbotorprompt-version=v2, etc. The schema returned by this data source config is used to defined what variables are available in your evals.itemandsampleare both defined when using this data source config.-
schema: Hash[Symbol, untyped]The json schema for the run data source items. Learn how to build JSON schemas here.
-
type: :logsThe type of data source. Always
logs.:logs
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
-
class EvalStoredCompletionsDataSourceConfigDeprecated in favor of LogsDataSourceConfig.
-
schema: Hash[Symbol, untyped]The json schema for the run data source items. Learn how to build JSON schemas here.
-
type: :stored_completionsThe type of data source. Always
stored_completions.:stored_completions
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
name: StringThe name of the evaluation.
-
object: :evalThe object type.
:eval
-
testing_criteria: Array[LabelModelGrader | StringCheckGrader | TextSimilarityGrader & { pass_threshold} | 2 more]A list of testing criteria.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
prompt_cache_breakpoint: PromptCacheBreakpoint{ mode}Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL from the request's
prompt_cache_options.ttl; the boundary is not rounded to a token block.-
mode: :explicitThe breakpoint mode. Always
explicit.:explicit
-
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class EvalGraderTextSimilarityA TextSimilarityGrader object which grades text based on similarity metrics.
-
pass_threshold: FloatThe threshold for the score.
-
-
class EvalGraderPythonA PythonGrader object that runs a python script on the input.
-
pass_threshold: FloatThe threshold for the score.
-
-
class EvalGraderScoreModelA ScoreModelGrader object that uses a model to assign a score to the input.
-
pass_threshold: FloatThe threshold for the score.
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
eval_ = openai.evals.create(
data_source_config: {item_schema: {foo: "bar"}, type: :custom},
testing_criteria: [
{
input: [{content: "content", role: "role"}],
labels: ["string"],
model: "model",
name: "name",
passing_labels: ["string"],
type: :label_model
}
]
)
puts(eval_)
Response
{
"id": "id",
"created_at": 0,
"data_source_config": {
"schema": {
"foo": "bar"
},
"type": "custom"
},
"metadata": {
"foo": "string"
},
"name": "Chatbot effectiveness Evaluation",
"object": "eval",
"testing_criteria": [
{
"input": [
{
"content": "string",
"role": "user",
"type": "message"
}
],
"labels": [
"string"
],
"model": "model",
"name": "name",
"passing_labels": [
"string"
],
"type": "label_model"
}
]
}