Tinkex.API.Sampling (Tinkex v0.3.4)
View SourceSampling API endpoints.
Uses :sampling pool (high concurrency). Pool size: 100 connections.
Summary
Functions
@spec sample_async( map(), keyword() ) :: {:ok, map()} | {:error, Tinkex.Error.t()}
Async sample request.
Uses :sampling pool (high concurrency). Sets max_retries: 0 - Phase 4's SamplingClient will implement client-side rate limiting and retry logic via RateLimiter. The HTTP layer doesn't retry so that the higher-level client can make intelligent retry decisions based on rate limit state.
Note: Named sample_async for consistency with Elixir naming conventions
(adjective_noun or verb_object patterns). The API endpoint remains /api/v1/asample.
Examples
Tinkex.API.Sampling.sample_async(
%{session_id: "...", prompts: [...]},
config: config
)
@spec sample_stream( map(), keyword() ) :: {:ok, Enumerable.t()} | {:error, Tinkex.Error.t()}
Streaming sample request via SSE.
Returns a stream of SampleStreamChunk structs that can be consumed
incrementally for real-time token generation.
Uses :sampling pool (high concurrency). Does not retry - streaming responses cannot be reliably retried mid-stream.
Examples
{:ok, stream} = Tinkex.API.Sampling.sample_stream(request, config: config)
Enum.each(stream, fn chunk -> IO.write(chunk.token) end)