# Sampler Updates

Note

Please refer to  ${SDK\_ROOT}/examples/Genie/configs/sampler.json for the parameters that can be updated

Genie provides the flexibility of updating a single parameter and multiple params in one API call

The APIs used for this exercise are:

[GenieSamplerConfig\_createFromJson](https://docs.qualcomm.com/doc/80-63442-100/topic/function_GenieSampler_8h_1a2ace87fa3f10b77e38c701b357af07fa.html#exhale-function-geniesampler-8h-1a2ace87fa3f10b77e38c701b357af07fa)

[GenieDialog\_getSampler](https://docs.qualcomm.com/doc/80-63442-100/topic/function_GenieDialog_8h_1a0e4b39749e037211d0c00bf5b1f71afe.html#exhale-function-geniedialog-8h-1a0e4b39749e037211d0c00bf5b1f71afe)

[GenieSamplerConfig\_setParam](https://docs.qualcomm.com/doc/80-63442-100/topic/function_GenieSampler_8h_1aaff7bb2ad2731bed8d52b57961156b52.html#exhale-function-geniesampler-8h-1aaff7bb2ad2731bed8d52b57961156b52)

[GenieDialogSampler\_applyConfig](https://docs.qualcomm.com/doc/80-63442-100/topic/function_GenieSampler_8h_1a32113d7ff630e244c328b4c023247c51.html#exhale-function-geniesampler-8h-1a32113d7ff630e244c328b4c023247c51)

## Example on how to update sampler parameters in between queries

# Create dialog config
    GenieDialogConfig_Handle_t dialogConfigHandle = NULL;
    GenieDialogConfig_createFromJson(dialogConfigStr, &dialogConfigHandle);
    
    # Create dialog
    GenieDialog_Handle_t dialogHandle = NULL;
    GenieDialog_create(dialogConfigHandle, &dialogHandle);
    
    # Query with original config
    GenieDialog_query(dialogHandle, promptStr, GenieDialog_SentenceCode_t::GENIE_DIALOG_SENTENCE_COMPLETE, queryCallback)
    
    # Get dialog sampler handle
    GenieDialogSampler_Handle_t samplerHandle = NULL;
    GenieDialog_getSampler(dialogHandle, &samplerHandle);
    
    # Create sampler config with a new sampler config
    GenieSamplerConfig_Handle_t samplerConfigHandle = NULL;
    GenieSamplerConfig_createFromJson(samplerConfigStr, &samplerConfigHandle);
    
    # Apply the new sampler config
    GenieDialogSampler_applyConfig(samplerHandle, samplerConfigHandle);
    
    # Query with updated config
    GenieDialog_query(dialogHandle, promptStr, GenieDialog_SentenceCode_t::GENIE_DIALOG_SENTENCE_COMPLETE, queryCallback)
    
    # Update single parameter
    GenieSamplerConfig_setParam(samplerConfigHandle, "top-p", "0.8");
    GenieSamplerConfig_setParam(samplerConfigHandle, "top-k", "30");
    
    # Apply the new sampler config
    GenieDialogSampler_applyConfig(samplerHandle, samplerConfigHandle);
    
    # Query with updated config
    GenieDialog_query(dialogHandle, promptStr, GenieDialog_SentenceCode_t::GENIE_DIALOG_SENTENCE_COMPLETE, queryCallback)
    
    # Update multiple parameters(top-k and top-p)
    std::string valueStr = "\"sampler\" : {\n      \"top-k\" : 20,\n      \"top-p\" : 0.75\n } "
    GenieSamplerConfig_setParam(samplerConfigHandle, "", valueStr.c_str());
    
    # Apply the new sampler config
    GenieDialogSampler_applyConfig(samplerHandle, samplerConfigHandle);
    
    # Query with updated config
    GenieDialog_query(dialogHandle, promptStr, GenieDialog_SentenceCode_t::GENIE_DIALOG_SENTENCE_COMPLETE, queryCallback)
    Copy to clipboard

Last Published: Oct 02, 2025

[Previous Topic
Model inference using token to token feature on Windows](https://docs.qualcomm.com/bundle/publicresource/80-63442-100/topics/token_query.md) [Next Topic
Engine Sharing](https://docs.qualcomm.com/bundle/publicresource/80-63442-100/topics/engine_sharing.md)