Crig
Prelude module — import commonly used types with a single include Crig::Prelude.
Constants
AGENT_TOOL_NAME = "agent_tool"
ALPHABET = "_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
DEFAULT_ID_LEN = 21
DEFAULT_MCP_TOOL_TIMEOUT = 300.seconds
Default per-call timeout applied to MCP tools (upstream DEFAULT_MCP_TOOL_TIMEOUT).
DEFAULT_OUTPUT_TOOL_NAME = "final_result"
EXTRACTOR_PREAMBLE = "You are an AI assistant whose purpose is to extract structured data from the provided text.\nYou will have access to a `submit` function that defines the structure of the data to extract from the provided text.\nUse the `submit` function to submit the structured data.\nBe sure to fill out every field and ALWAYS CALL THE `submit` function, even with default values!!!."
SUBMIT_TOOL_NAME = "submit"
UNKNOWN_AGENT_NAME = "Unnamed Agent"
UPSTREAM_COMMIT = "68b4eabb8c9cf749ca73c917b9306e97fb0eda24"
UPSTREAM_SOURCE_PATH = "vendor/rig/crates/rig-core"
UPSTREAM_SOURCE_PATH_AGENT = "vendor/rig/crates/rig-agent"
UPSTREAM_URL = "https://github.com/0xPlaygrounds/rig.git"
VERSION = "0.39.1"
Class methods
allowed_tool_names_for_choice(executable_tool_names : Set(String), tool_choice : Completion::ToolChoice | Nil, output_tool_name : String | Nil, pre_filter_tool_names : Set(String) | Nil) : Set(String)
Sourceassistant_text_items_from_choice(choice : OneOrMany(Completion::AssistantContent)) : Array(Completion::AssistantContent)
Sourcegenerate_id
Sourcemerge_reasoning_blocks(accumulated_reasoning : Array(Crig::Completion::Reasoning), incoming : Crig::Completion::Reasoning) : Array(Crig::Completion::Reasoning)
Sourceordered_streaming_assistant_content(reasoning_items : Array(Completion::Reasoning), text_items : Array(Completion::AssistantContent), trailing_items : Array(Completion::AssistantContent)) : OneOrMany(Completion::AssistantContent) | Nil
Sourceresolve_output_mode(has_schema : Bool, has_executable_tools : Bool, output_tool_callable : Bool, provider_composes_native : Bool, requested : OutputMode) : OutputMode
SourceConsume a stream to completion while writing visible text chunks to an IO.
stream_to_stdout(stream : Crig::MultiTurnStreamingResult(R), io : IO = STDOUT) : Crig::PromptResponse forall R
Sourcetool_result_to_user_message(id : String, call_id : String | Nil, tool_result : String) : Crig::Completion::Message
SourceMacros
rig_tool(description = nil, params = nil, required = nil, &block)
Define a tool from a Crystal function. The function's parameter types
are used to auto-generate a JSON Schema via json-schema. Non-nilable
fields are automatically marked required; nilable fields become optional.
Minimal usage
Crig.rig_tool do
def echo(text : String) : String
text
end
end
With description
Crig.rig_tool description: "Echo back the input" do
def echo(text : String) : String
text
end
end
With error handling
Crig.rig_tool description: "Divide two numbers" do
def divide(x : Int32, y : Int32) : Crig::ToolMacro::Result(Int32, Crig::ToolError)
if y == 0
Crig::ToolMacro::Result(Int32, Crig::ToolError).err(
Crig::ToolError.new("Division by zero")
)
else
Crig::ToolMacro::Result(Int32, Crig::ToolError).ok(x // y)
end
end
end
With optional parameters
nilable fields are automatically excluded from the required list:
Crig.rig_tool do
def greet(name : String, greeting : String?) : String
"#{greeting || "Hello"}, #{name}"
end
end
Nested types
- Crig::Agent(M)
- Crig::AgentBuilder(M)
- Crig::AgentHook
- Crig::AgentRun
- Crig::AgentRunStep
- Crig::AgentRunner(M)
- Crig::AgentToolAdapter
- Crig::AgentToolArgs
- Crig::AnyClient
- Crig::ApiKey
- Crig::AudioGeneration
- Crig::AudioGenerationClient
- Crig::AudioGenerationClientDyn
- Crig::AudioGenerationError
- Crig::AudioGenerationModel
- Crig::AudioGenerationModelDyn
- Crig::AudioGenerationModelHandle
- Crig::AudioGenerationRequest
- Crig::AudioGenerationRequestBuilder
- Crig::AudioGenerationResponse(T)
- Crig::BearerAuth
- Crig::BuilderError
- Crig::Capabilities
- Crig::Capability
- Crig::Capable
- Crig::Client
- Crig::ClientBuilderError
- Crig::Completion
- Crig::CompletionCall
- Crig::CompletionCallAction
- Crig::CompletionClient
- Crig::CompletionClientDyn
- Crig::CompletionModelHandle
- Crig::Concurrency
- Crig::ConcurrencyResult
- Crig::DebugExt
- Crig::DefaultProviders
- Crig::DriveItem
- Crig::DynClientBuilder
- Crig::DynClientBuilderError
- Crig::DynamicContextSource
- Crig::DynamicContextStore
- Crig::DynamicTool
- Crig::DynamicToolSource
- Crig::Embed
- Crig::EmbedError
- Crig::EmbedField
- Crig::EmbeddedToolBox(T)
- Crig::Embedding
- Crig::EmbeddingError
- Crig::EmbeddingModel
- Crig::EmbeddingModelDyn
- Crig::Embeddings
- Crig::EmbeddingsBuilder
- Crig::EmbeddingsClient
- Crig::EmbeddingsClientDyn
- Crig::EmptyListError
- Crig::Eval(Output)
- Crig::EvalError
- Crig::EvalOutcome(Output)
- Crig::Extended
- Crig::ExtractionError
- Crig::ExtractionResponse(T)
- Crig::Extractor(M, T)
- Crig::ExtractorBuilder(M, T)
- Crig::Filter
- Crig::FilterError
- Crig::FinalCompletionResponse
- Crig::Flow
- Crig::HookContext
- Crig::HttpClient
- Crig::HttpClientError
- Crig::ImageEmbeddingModel
- Crig::ImageGeneration
- Crig::ImageGenerationClient
- Crig::ImageGenerationClientDyn
- Crig::ImageGenerationError
- Crig::ImageGenerationModel
- Crig::ImageGenerationModelDyn
- Crig::ImageGenerationModelHandle
- Crig::ImageGenerationRequest
- Crig::ImageGenerationRequestBuilder
- Crig::ImageGenerationResponse(T)
- Crig::InMemoryVectorIndex
- Crig::InMemoryVectorStore
- Crig::InMemoryVectorStoreBuilder
- Crig::IndexStrategy
- Crig::Integrations
- Crig::InvalidToolCallAction
- Crig::InvalidToolCallContext
- Crig::InvalidToolCallHookAction
- Crig::JSONUtils
- Crig::Judgment
- Crig::LSH
- Crig::LSHIndex
- Crig::LlmJudgeBuilder(M, T)
- Crig::LlmJudgeBuilderWithFn(M, T)
- Crig::LlmJudgeMetric(M, T)
- Crig::LlmJudgeMetricWithFn(M, T)
- Crig::LlmScoreMetric(M)
- Crig::LlmScoreMetricBuilder(M)
- Crig::LlmScoreMetricScore
- Crig::Loaders
- Crig::Markers
- Crig::McpClientError
- Crig::McpClientHandler
- Crig::McpTool
- Crig::McpToolError
- Crig::Memory
- Crig::MockResponse
- Crig::Model
- Crig::ModelInfo
- Crig::ModelList
- Crig::ModelLister
- Crig::ModelListingClient
- Crig::ModelListingError
- Crig::ModelTurn
- Crig::ModelTurnAction
- Crig::ModelTurnOutcome
- Crig::MultiTurnStreamItem(R)
- Crig::MultiTurnStreamingResult(R)
- Crig::NeedsApiKey
- Crig::NoToolConfig
- Crig::Nothing
- Crig::ObservationAction
- Crig::OneOrMany(T)
- Crig::OutputMode
- Crig::OutputSchemaBuilder(T)
- Crig::PartialStreamedTurn
- Crig::PauseControl
- Crig::PendingInvalid
- Crig::PendingInvalidKind
- Crig::PendingToolCall
- Crig::Prelude
- Crig::PreparedCompletionRequest(M)
- Crig::PromptRequest(S, M)
- Crig::PromptResponse
- Crig::PromptType
- Crig::Provider
- Crig::ProviderBuilder
- Crig::ProviderClient
- Crig::ProviderClientBuilder
- Crig::ProviderFactory
- Crig::ProviderHttpClient
- Crig::ProviderRequestExt
- Crig::ProviderResponseError
- Crig::ProviderResponseExt
- Crig::ProviderResponseHelpers
- Crig::Providers
- Crig::RawStreamingChoice(R)
- Crig::RawStreamingToolCall
- Crig::RequestPatch
- Crig::RerankError
- Crig::RerankModel
- Crig::RerankResponse
- Crig::RerankResult
- Crig::RunId
- Crig::Scratchpad
- Crig::SemanticSimilarityMetric(E)
- Crig::SemanticSimilarityMetricBuilder(E)
- Crig::SemanticSimilarityMetricScore
- Crig::SimpleDocument
- Crig::Span
- Crig::SpanCombinator
- Crig::Standard
- Crig::StepEvent
- Crig::StepEventKind
- Crig::StreamDone
- Crig::StreamError
- Crig::StreamItem
- Crig::StreamTextDelta
- Crig::StreamToolExecutionCommitted
- Crig::StreamToolResult
- Crig::StreamedAssistantContent(R)
- Crig::StreamedInvalidToolCall
- Crig::StreamedResolution
- Crig::StreamedTurn
- Crig::StreamedTurnAssembler
- Crig::StreamedTurnEvent
- Crig::StreamedTurnEventKind
- Crig::StreamedUserContent
- Crig::StreamingChat(M)
- Crig::StreamingCompletionResponse(R)
- Crig::StreamingError
- Crig::StreamingPrompt(M)
- Crig::StreamingPromptRequest(M)
- Crig::StreamingResult(R)
- Crig::StringOrOneOrManyConverter(T)
- Crig::StringOrOptionOneOrManyConverter(T)
- Crig::Telemetry
- Crig::TextEmbedder
- Crig::ThinkArgs
- Crig::ThinkError
- Crig::ThinkTool
- Crig::Tool(Args, Output)
- Crig::ToolCallAction
- Crig::ToolCallDeltaContent
- Crig::ToolCallDeltaState
- Crig::ToolDyn
- Crig::ToolEmbedding(Args, Output, Context)
- Crig::ToolEmbeddingDyn
- Crig::ToolError
- Crig::ToolMacro
- Crig::ToolResultAction
- Crig::ToolSchema
- Crig::ToolServer
- Crig::ToolServerError
- Crig::ToolServerHandle
- Crig::ToolServerRequest
- Crig::ToolServerRequestMessageKind
- Crig::ToolServerResponse
- Crig::ToolSet
- Crig::ToolSetBuilder
- Crig::ToolSetError
- Crig::ToolType
- Crig::TopNResults
- Crig::Transcription
- Crig::TranscriptionClient
- Crig::TranscriptionClientDyn
- Crig::TranscriptionError
- Crig::TranscriptionModel
- Crig::TranscriptionModelDyn
- Crig::TranscriptionModelHandle
- Crig::TranscriptionRequest
- Crig::TranscriptionRequestBuilder
- Crig::TranscriptionResponse(T)
- Crig::Transport
- Crig::TypedPromptRequest(T, S, M)
- Crig::TypedPromptResponse(T)
- Crig::VectorDistance
- Crig::VectorSearchRequest
- Crig::VectorSearchRequestBuilder
- Crig::VectorStore
- Crig::VectorStoreError
- Crig::VectorStoreIndex
- Crig::VectorStoreOutput
- Crig::VerifyClient
- Crig::VerifyClientDyn
- Crig::VerifyError
- Crig::WasmBoxedFuture(T)
- Crig::WasmCompatSend
- Crig::WasmCompatSendStream
- Crig::WasmCompatSync
- Crig::WithBuilderTools
- Crig::WithToolServerHandle