Class: Vellum::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/vellum_ai.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url: nil, environment: Vellum::Environment::PRODUCTION, max_retries: nil, timeout_in_seconds: nil, api_key:, api_version: nil) ⇒ Vellum::Client

Parameters:

  • base_url (String) (defaults to: nil)
  • environment (Vellum::Environment) (defaults to: Vellum::Environment::PRODUCTION)
  • max_retries (Long) (defaults to: nil)

    The number of times to retry a failed request, defaults to 2.

  • timeout_in_seconds (Long) (defaults to: nil)
  • api_key (String)
  • api_version (Vellum::ApiVersionEnum) (defaults to: nil)


102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/vellum_ai.rb', line 102

def initialize(base_url: nil, environment: Vellum::Environment::PRODUCTION, max_retries: nil, timeout_in_seconds: nil, api_key:, api_version: nil)
  @request_client = Vellum::RequestClient.new(
  base_url: base_url,
  environment: environment,
  max_retries: max_retries,
  timeout_in_seconds: timeout_in_seconds,
  api_key: api_key,
  api_version: api_version
)
  @events = Vellum::EventsClient.new(request_client: @request_client)
  @ad_hoc = Vellum::AdHocClient.new(request_client: @request_client)
  @container_images = Vellum::ContainerImagesClient.new(request_client: @request_client)
  @deployments = Vellum::DeploymentsClient.new(request_client: @request_client)
  @document_indexes = Vellum::DocumentIndexesClient.new(request_client: @request_client)
  @documents = Vellum::DocumentsClient.new(request_client: @request_client)
  @folder_entities = Vellum::FolderEntitiesClient.new(request_client: @request_client)
  @metric_definitions = Vellum::MetricDefinitionsClient.new(request_client: @request_client)
  @ml_models = Vellum::MlModelsClient.new(request_client: @request_client)
  @organizations = Vellum::OrganizationsClient.new(request_client: @request_client)
  @prompts = Vellum::PromptsClient.new(request_client: @request_client)
  @sandboxes = Vellum::SandboxesClient.new(request_client: @request_client)
  @test_suite_runs = Vellum::TestSuiteRunsClient.new(request_client: @request_client)
  @test_suites = Vellum::TestSuitesClient.new(request_client: @request_client)
  @workflow_deployments = Vellum::WorkflowDeploymentsClient.new(request_client: @request_client)
  @workflow_executions = Vellum::WorkflowExecutionsClient.new(request_client: @request_client)
  @workflow_sandboxes = Vellum::WorkflowSandboxesClient.new(request_client: @request_client)
  @workflows = Vellum::WorkflowsClient.new(request_client: @request_client)
  @workspace_secrets = Vellum::WorkspaceSecretsClient.new(request_client: @request_client)
  @workspaces = Vellum::WorkspacesClient.new(request_client: @request_client)
end

Instance Attribute Details

#ad_hocVellum::AdHocClient (readonly)

Returns:



56
57
58
# File 'lib/vellum_ai.rb', line 56

def ad_hoc
  @ad_hoc
end

#container_imagesVellum::ContainerImagesClient (readonly)



58
59
60
# File 'lib/vellum_ai.rb', line 58

def container_images
  @container_images
end

#deploymentsVellum::DeploymentsClient (readonly)



60
61
62
# File 'lib/vellum_ai.rb', line 60

def deployments
  @deployments
end

#document_indexesVellum::DocumentIndexesClient (readonly)



62
63
64
# File 'lib/vellum_ai.rb', line 62

def document_indexes
  @document_indexes
end

#documentsVellum::DocumentsClient (readonly)



64
65
66
# File 'lib/vellum_ai.rb', line 64

def documents
  @documents
end

#eventsVellum::EventsClient (readonly)



54
55
56
# File 'lib/vellum_ai.rb', line 54

def events
  @events
end

#folder_entitiesVellum::FolderEntitiesClient (readonly)



66
67
68
# File 'lib/vellum_ai.rb', line 66

def folder_entities
  @folder_entities
end

#metric_definitionsVellum::MetricDefinitionsClient (readonly)



68
69
70
# File 'lib/vellum_ai.rb', line 68

def metric_definitions
  @metric_definitions
end

#ml_modelsVellum::MlModelsClient (readonly)



70
71
72
# File 'lib/vellum_ai.rb', line 70

def ml_models
  @ml_models
end

#organizationsVellum::OrganizationsClient (readonly)



72
73
74
# File 'lib/vellum_ai.rb', line 72

def organizations
  @organizations
end

#promptsVellum::PromptsClient (readonly)



74
75
76
# File 'lib/vellum_ai.rb', line 74

def prompts
  @prompts
end

#sandboxesVellum::SandboxesClient (readonly)



76
77
78
# File 'lib/vellum_ai.rb', line 76

def sandboxes
  @sandboxes
end

#test_suite_runsVellum::TestSuiteRunsClient (readonly)



78
79
80
# File 'lib/vellum_ai.rb', line 78

def test_suite_runs
  @test_suite_runs
end

#test_suitesVellum::TestSuitesClient (readonly)



80
81
82
# File 'lib/vellum_ai.rb', line 80

def test_suites
  @test_suites
end

#workflow_deploymentsVellum::WorkflowDeploymentsClient (readonly)



82
83
84
# File 'lib/vellum_ai.rb', line 82

def workflow_deployments
  @workflow_deployments
end

#workflow_executionsVellum::WorkflowExecutionsClient (readonly)



84
85
86
# File 'lib/vellum_ai.rb', line 84

def workflow_executions
  @workflow_executions
end

#workflow_sandboxesVellum::WorkflowSandboxesClient (readonly)



86
87
88
# File 'lib/vellum_ai.rb', line 86

def workflow_sandboxes
  @workflow_sandboxes
end

#workflowsVellum::WorkflowsClient (readonly)



88
89
90
# File 'lib/vellum_ai.rb', line 88

def workflows
  @workflows
end

#workspace_secretsVellum::WorkspaceSecretsClient (readonly)



90
91
92
# File 'lib/vellum_ai.rb', line 90

def workspace_secrets
  @workspace_secrets
end

#workspacesVellum::WorkspacesClient (readonly)



92
93
94
# File 'lib/vellum_ai.rb', line 92

def workspaces
  @workspaces
end

Instance Method Details

#execute_api(url:, method: nil, body: nil, headers: nil, bearer_token: nil, request_options: nil) ⇒ Object

api.execute_api(url: “x”)



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/vellum_ai.rb', line 146

def execute_api(url:, method: nil, body: nil, headers: nil, bearer_token: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), url: url, method: method, body: body, headers: headers, bearer_token: bearer_token }.compact
  req.url "#{@request_client.get_url(environment: Default, request_options: request_options)}/v1/execute-api"
end
  Vellum::ExecuteApiResponse.from_json(json_object: response.body)
end

#execute_code(code:, runtime:, input_values:, packages:, output_type:, request_options: nil) ⇒ Object

)



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/vellum_ai.rb', line 191

def execute_code(code:, runtime:, input_values:, packages:, output_type:, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), code: code, runtime: runtime, input_values: input_values, packages: packages, output_type: output_type }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/execute-code"
end
  Vellum::CodeExecutorResponse.from_json(json_object: response.body)
end

#execute_prompt(inputs:, prompt_deployment_id: nil, prompt_deployment_name: nil, release_tag: nil, external_id: nil, expand_meta: nil, raw_overrides: nil, expand_raw: nil, metadata: nil, request_options: nil) ⇒ Object

api.execute_prompt(inputs: [{ name: “x”, type: “STRING”, value: “value” }, { name: “x”, type: “STRING”, value: “value” }])



255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
# File 'lib/vellum_ai.rb', line 255

def execute_prompt(inputs:, prompt_deployment_id: nil, prompt_deployment_name: nil, release_tag: nil, external_id: nil, expand_meta: nil, raw_overrides: nil, expand_raw: nil, metadata: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), inputs: inputs, prompt_deployment_id: prompt_deployment_id, prompt_deployment_name: prompt_deployment_name, release_tag: release_tag, external_id: external_id, expand_meta: expand_meta, raw_overrides: raw_overrides, expand_raw: expand_raw, metadata:  }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/execute-prompt"
end
  Vellum::ExecutePromptResponse.from_json(json_object: response.body)
end

#execute_workflow(inputs:, expand_meta: nil, workflow_deployment_id: nil, workflow_deployment_name: nil, release_tag: nil, external_id: nil, metadata: nil, request_options: nil) ⇒ Object

api.execute_workflow(inputs: [{ name: “x”, type: “STRING”, value: “value” }, { name: “x”, type: “STRING”, value: “value” }])



308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/vellum_ai.rb', line 308

def execute_workflow(inputs:, expand_meta: nil, workflow_deployment_id: nil, workflow_deployment_name: nil, release_tag: nil, external_id: nil, metadata: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), inputs: inputs, expand_meta: expand_meta, workflow_deployment_id: workflow_deployment_id, workflow_deployment_name: workflow_deployment_name, release_tag: release_tag, external_id: external_id, metadata:  }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/execute-workflow"
end
  Vellum::ExecuteWorkflowResponse.from_json(json_object: response.body)
end

#generate(deployment_id: nil, deployment_name: nil, requests:, options: nil, request_options: nil) ⇒ Object

api.generate(requests: [{ input_values: { “input_values”: “key”:“value” } }, { input_values: { “input_values”: “key”:“value” } }])



353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
# File 'lib/vellum_ai.rb', line 353

def generate(deployment_id: nil, deployment_name: nil, requests:, options: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), deployment_id: deployment_id, deployment_name: deployment_name, requests: requests, options: options }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/generate"
end
  Vellum::GenerateResponse.from_json(json_object: response.body)
end

#search(index_id: nil, index_name: nil, query:, options: nil, document_index: nil, request_options: nil) ⇒ Object

api.search(query: “x”)



403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
# File 'lib/vellum_ai.rb', line 403

def search(index_id: nil, index_name: nil, query:, options: nil, document_index: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), index_id: index_id, index_name: index_name, query: query, options: options, document_index: document_index }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/search"
end
  Vellum::SearchResponse.from_json(json_object: response.body)
end

#submit_completion_actuals(deployment_id: nil, deployment_name: nil, actuals:, request_options: nil) ⇒ Object

api.submit_completion_actuals(actuals: [{ }, { }])



446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
# File 'lib/vellum_ai.rb', line 446

def submit_completion_actuals(deployment_id: nil, deployment_name: nil, actuals:, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), deployment_id: deployment_id, deployment_name: deployment_name, actuals: actuals }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/submit-completion-actuals"
end
end

#submit_workflow_execution_actuals(actuals:, execution_id: nil, external_id: nil, request_options: nil) ⇒ Object

api.submit_workflow_execution_actuals(actuals: [{ output_type: “STRING” }, { output_type: “STRING” }])



486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
# File 'lib/vellum_ai.rb', line 486

def submit_workflow_execution_actuals(actuals:, execution_id: nil, external_id: nil, request_options: nil)
  response = @request_client.conn.post do | req |
  unless request_options&.timeout_in_seconds.nil?
req.options.timeout = request_options.timeout_in_seconds
  end
  unless request_options&.api_key.nil?
req.headers["X-API-KEY"] = request_options.api_key
  end
  unless request_options&.api_version.nil?
req.headers["X-API-Version"] = request_options.api_version
  else
req.headers["X-API-Version"] = "2025-07-30"
  end
  req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
  unless request_options.nil? || request_options&.additional_query_parameters.nil?
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
  end
  req.body = { **(request_options&.additional_body_parameters || {}), actuals: actuals, execution_id: execution_id, external_id: external_id }.compact
  req.url "#{@request_client.get_url(environment: Predict, request_options: request_options)}/v1/submit-workflow-execution-actuals"
end
end