> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/reference/hi/inference/inference-sdk/configuration.md).

# कॉन्फ़िगरेशन

## कॉन्फ़िगरेशन विकल्प

### API कुंजी प्रेषण

यह `api_key_transport` का फ़ील्ड `InferenceConfiguration` क्लाइंट सर्वर को आपकी API कुंजी भेजने के लिए किस चैनल का उपयोग करता है, इसे नियंत्रित करता है। कुंजी को एक `Authorization: Bearer` हेडर के रूप में भेजने से यह URLs और सर्वर लॉग्स से बाहर रहती है, और यही अनुशंसित तरीका है:

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key="ROBOFLOW_API_KEY",
).configure(InferenceConfiguration(api_key_transport="header"))
```

तीन मोड हैं:

<table data-search="false"><thead><tr><th>मोड</th><th>व्यवहार</th><th>सर्वर संगतता</th></tr></thead><tbody><tr><td><code>लीगेसी</code></td><td>कुंजी <code>api_key</code> क्वेरी पैरामीटर या JSON-बॉडी फ़ील्ड के रूप में जाती है। डिफ़ॉल्ट: स्पष्ट विकल्प न देने पर क्लाइंट इसी तरह व्यवहार करता है और एक बार चेतावनी देता है।</td><td>सर्वर के हर संस्करण के साथ।</td></tr><tr><td><code>दोनों</code></td><td>पुराने चैनल अपरिवर्तित रहते हैं, साथ ही <code>Authorization: Bearer</code> हेडर भी। संक्रमण मोड: जो सर्वर हेडर समझते हैं वे उसका उपयोग करते हैं, पुराने सर्वर उसे अनदेखा करते हैं।</td><td>सर्वर के हर संस्करण के साथ।</td></tr><tr><td><code>हेडर</code></td><td>कुंजी केवल <code>Authorization: Bearer</code> हेडर में जाती है। URLs या request bodies में कोई कुंजी नहीं। अनुशंसित।</td><td>Inference रिलीज़ 1.5.0 और उसके बाद। किसी पुराने सर्वर के साथ, अनुरोध बिना कुंजी के पहुँचते हैं।</td></tr></tbody></table>

उपयोग करें `हेडर` नए कोड के लिए। होस्टेड Roboflow APIs इसे स्वीकार करते हैं, और यह कुंजी को पूरी तरह URLs से बाहर रखता है। यदि कुछ सर्वर जिनसे आप संपर्क करते हैं वे अभी भी Inference 1.5.0 से पुराना संस्करण चला रहे हैं, या बीच का कोई proxy `Authorization` headers को हटा देता है, तो संक्रमण के दौरान `दोनों` का उपयोग करें: यह हर सर्वर संस्करण के साथ काम करता है।

`configure(...)` पूरा कॉन्फ़िगरेशन ऑब्जेक्ट बदल देता है। यदि आप बाद में अन्य विकल्प कॉन्फ़िगर करते हैं, तो ट्रांसपोर्ट को उसी `InferenceConfiguration`में साथ रखें, अन्यथा क्लाइंट वापस चला जाता है `लीगेसी`:

```python
client.configure(
    InferenceConfiguration(
        confidence_threshold=0.8,
        api_key_transport="header",
    )
)
```

### कॉन्टेक्स्ट मैनेजरों के साथ कॉन्फ़िगर करना

विधियाँ `use_configuration(...)` और `use_model(...)` कॉन्टेक्स्ट मैनेजरों में काम करने के लिए डिज़ाइन की गई हैं। **जैसे ही कॉन्टेक्स्ट मैनेजर से बाहर निकलते हैं, पुराने कॉन्फ़िग मान बहाल हो जाते हैं।**

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

image_url = "https://source.roboflow.com/pwYAXv9BTpqLyFfgQoPZ/u48G0UpWfk8giSw7wrU8/original.jpg"

custom_configuration = InferenceConfiguration(confidence_threshold=0.8)
# ROBOFLOW_API_KEY को अपनी Roboflow API कुंजी से बदलें
CLIENT = InferenceHTTPClient(
    api_url="http://localhost:9001",
    api_key="ROBOFLOW_API_KEY"
)

with CLIENT.use_configuration(custom_configuration):
    _ = CLIENT.infer(image_url, model_id="soccer-players-5fuqs/1")

with CLIENT.use_model("soccer-players-5fuqs/1"):
    _ = CLIENT.infer(image_url)

# कॉन्टेक्स्ट मैनेजर से बाहर आने के बाद - परिवर्तन वापस हो जाते हैं और `model_id` अभी भी आवश्यक है
_ = CLIENT.infer(image_url, model_id="soccer-players-5fuqs/1")
```

जैसा कि आप देख सकते हैं, `model_id` केवल तब एक prediction method के लिए आवश्यक होता है जब कोई डिफ़ॉल्ट मॉडल कॉन्फ़िगर न किया गया हो।

{% hint style="info" %}
मॉडल ID इस स्ट्रिंग से बनती है `<project_id>/<version_id>`. देखें [वर्कस्पेस और प्रोजेक्ट IDs](/reference/hi/authentication/authentication/workspace-and-project-ids.md) इन जानकारियों को खोजने के लिए।
{% endhint %}

### कॉन्फ़िगरेशन एक बार सेट करना और अगला परिवर्तन होने तक उसका उपयोग करना

विधियाँ `configure(...)` और `select_model(...)` क्लाइंट की स्थिति को बदलते हैं और यह परिवर्तन अगले परिवर्तन तक बना रहता है।

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

image_url = "https://source.roboflow.com/pwYAXv9BTpqLyFfgQoPZ/u48G0UpWfk8giSw7wrU8/original.jpg"

custom_configuration = InferenceConfiguration(confidence_threshold=0.8)
# ROBOFLOW_API_KEY को अपनी Roboflow API कुंजी से बदलें
CLIENT = InferenceHTTPClient(
    api_url="http://localhost:9001",
    api_key="ROBOFLOW_API_KEY"
)

CLIENT.configure(custom_configuration)
CLIENT.infer(image_url, model_id="soccer-players-5fuqs/1")

# कस्टम कॉन्फ़िगरेशन अभी भी लागू है
CLIENT.select_model(model_id="soccer-players-5fuqs/1")
_ = CLIENT.infer(image_url)

# कस्टम कॉन्फ़िगरेशन और चयनित मॉडल - अभी भी लागू हैं
_ = CLIENT.infer(image_url)
```

आप इसे `चेन` मोड में भी प्रारंभ कर सकते हैं:

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

# ROBOFLOW_API_KEY को अपनी Roboflow API कुंजी से बदलें
CLIENT = InferenceHTTPClient(api_url="http://localhost:9001", api_key="ROBOFLOW_API_KEY") \\
    .select_model("soccer-players-5fuqs/1")
```

### ओवरराइड करना `model_id` किसी विशिष्ट कॉल के लिए

`model_id` किसी विशिष्ट कॉल के लिए ओवरराइड किया जा सकता है:

```python
from inference_sdk import InferenceHTTPClient

image_url = "https://source.roboflow.com/pwYAXv9BTpqLyFfgQoPZ/u48G0UpWfk8giSw7wrU8/original.jpg"

# ROBOFLOW_API_KEY को अपनी Roboflow API कुंजी से बदलें
CLIENT = InferenceHTTPClient(api_url="http://localhost:9001", api_key="ROBOFLOW_API_KEY") \\
    .select_model("soccer-players-5fuqs/1")

_ = CLIENT.infer(image_url, model_id="another-model/1")
```

## क्लाइंट कॉन्फ़िगरेशन के बारे में विवरण

`InferenceHTTPClient` प्रदान करता है `InferenceConfiguration` पूरे कॉन्फ़िगरेशन को रखने के लिए dataclass।

```python
from inference_sdk import InferenceConfiguration
```

इस कॉन्फ़िग में फ़ील्डों को ओवरराइड करने से क्लाइंट का व्यवहार बदलता है (और मॉडल को सर्व करने वाले API का भी)। विशिष्ट फ़ील्ड विशिष्ट संदर्भों में उपयोग किए जाते हैं। विशेष रूप से:

### वर्गीकरण मॉडल

* `visualize_predictions`: विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `confidence_threshold` जैसे `confidence`
* `stroke_width`: विज़ुअलाइज़ेशन में स्ट्रोक की चौड़ाई
* `disable_preproc_auto_orientation`, `disable_preproc_contrast`, `disable_preproc_grayscale`, `disable_preproc_static_crop` सर्वर-साइड प्री-प्रोसेसिंग बदलने के लिए
* `disable_active_learning` को रोकने के लिए [Active Learning](https://docs.roboflow.com/deployment/monitoring-and-analytics/active-learning) सुविधा को datapoint दर्ज करने से रोकने के लिए (उदाहरण के लिए, मॉडल का परीक्षण करते समय उपयोगी हो सकता है)
* `active_learning_target_dataset` - जब किसी विशिष्ट मॉडल से inference किया जा रहा हो (मान लीजिए `project_a/1`) और आप डेटा को किसी दूसरे प्रोजेक्ट में सहेजना चाहते हैं `project_b`तो इस पैरामीटर को उसी की ओर इंगित करना चाहिए। **ध्यान दें कि आप `project_a` और `project_b`में विभिन्न प्रकार के मॉडल का उपयोग नहीं कर सकते; यदि ऐसा है, तो डेटा दर्ज नहीं किया जाएगा।**
* `source`: एक वैकल्पिक स्ट्रिंग जो inference कॉल पर एक "source" विशेषता सेट करती है। यदि उपयोग कर रहे हों [मॉडल मॉनिटरिंग](https://docs.roboflow.com/deployment/monitoring-and-analytics/model-monitoring), तो यह inference अनुरोध के साथ लॉग होता है, ताकि आप किसी विशेष स्रोत से आने वाले inference अनुरोधों को फ़िल्टर या क्वेरी कर सकें, उदाहरण के लिए यह पहचानने के लिए कि कौन-सा एप्लिकेशन, सिस्टम, या डिप्लॉयमेंट अनुरोध कर रहा है।
* `source_info`: एक वैकल्पिक स्ट्रिंग जो inference कॉल पर एक अतिरिक्त "source\_info" विशेषता सेट करती है, उदाहरण के लिए किसी ऐप में उप-घटक की पहचान करने के लिए।

### ऑब्जेक्ट डिटेक्शन मॉडल

* `visualize_predictions`: विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `visualize_labels`: यदि विज़ुअलाइज़ेशन सक्षम है, तो लेबल विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `confidence_threshold` जैसे `confidence`
* `class_filter` वर्गों की एक सूची को फ़िल्टर करने के लिए
* `class_agnostic_nms`: यह नियंत्रित करने का फ़्लैग कि NMS class-agnostic है या नहीं
* `fix_batch_size`
* `iou_threshold`: NMS IoU थ्रेशहोल्ड निर्धारित करने के लिए
* `stroke_width`: विज़ुअलाइज़ेशन में स्ट्रोक की चौड़ाई
* `max_detections`: मॉडल से लौटाई जाने वाली अधिकतम detections
* `max_candidates`: मॉडल से post-processing के लिए अधिकतम candidates
* `disable_preproc_auto_orientation`, `disable_preproc_contrast`, `disable_preproc_grayscale`, `disable_preproc_static_crop` सर्वर-साइड प्री-प्रोसेसिंग बदलने के लिए
* `disable_active_learning`, `active_learning_target_dataset`, `source`, `source_info` - जैसा कि ऊपर वर्णित है

### कीपॉइंट डिटेक्शन मॉडल

* `visualize_predictions`: विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `visualize_labels`: यदि विज़ुअलाइज़ेशन सक्षम है, तो लेबल विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `confidence_threshold` जैसे `confidence`
* `keypoint_confidence_threshold` (जैसे `keypoint_confidence`) मॉडल confidence के आधार पर detected keypoints को फ़िल्टर करने के लिए
* `class_filter` ऑब्जेक्ट classes की एक सूची को फ़िल्टर करने के लिए
* `class_agnostic_nms`: यह नियंत्रित करने का फ़्लैग कि NMS class-agnostic है या नहीं
* `fix_batch_size`
* `iou_threshold`: NMS IoU थ्रेशहोल्ड निर्धारित करने के लिए
* `stroke_width`: विज़ुअलाइज़ेशन में स्ट्रोक की चौड़ाई
* `max_detections`: मॉडल से लौटाई जाने वाली अधिकतम detections
* `max_candidates`: मॉडल से post-processing के लिए अधिकतम candidates
* `disable_preproc_auto_orientation`, `disable_preproc_contrast`, `disable_preproc_grayscale`, `disable_preproc_static_crop` सर्वर-साइड प्री-प्रोसेसिंग बदलने के लिए
* `disable_active_learning`, `active_learning_target_dataset`, `source`, `source_info` - जैसा कि ऊपर वर्णित है

### इंस्टेंस सेगमेंटेशन मॉडल

* `visualize_predictions`: विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `visualize_labels`: यदि विज़ुअलाइज़ेशन सक्षम है, तो लेबल विज़ुअलाइज़ेशन सक्षम/अक्षम करने का फ़्लैग
* `confidence_threshold` जैसे `confidence`
* `class_filter` वर्गों की एक सूची को फ़िल्टर करने के लिए
* `class_agnostic_nms`: यह नियंत्रित करने का फ़्लैग कि NMS class-agnostic है या नहीं
* `fix_batch_size`
* `iou_threshold`: NMS IoU थ्रेशहोल्ड निर्धारित करने के लिए
* `stroke_width`: विज़ुअलाइज़ेशन में स्ट्रोक की चौड़ाई
* `max_detections`: मॉडल से लौटाई जाने वाली अधिकतम detections
* `max_candidates`: मॉडल से post-processing के लिए अधिकतम candidates
* `disable_preproc_auto_orientation`, `disable_preproc_contrast`, `disable_preproc_grayscale`, `disable_preproc_static_crop` सर्वर-साइड प्री-प्रोसेसिंग बदलने के लिए
* `mask_decode_mode`
* `tradeoff_factor`
* `disable_active_learning`, `active_learning_target_dataset`, `source`, `source_info` - जैसा कि ऊपर वर्णित है

### क्लाइंट का कॉन्फ़िगरेशन

* `output_visualisation_format`: इनमें से एक `VisualisationResponseFormat.BASE64`, `VisualisationResponseFormat.NUMPY`, `VisualisationResponseFormat.PILLOW`. चूँकि सर्वर-साइड विज़ुअलाइज़ेशन सक्षम है, आप चुन सकते हैं कि आउटपुट में कौन-सा फ़ॉर्मैट उपयोग किया जाए।
* `client_downsizing_disabled`: सेट करें `False` यदि आप client-side downsizing करना चाहते हैं। डिफ़ॉल्ट `True`. Client-side scaling का उद्देश्य inference के लिए इनपुट को केवल छोटा करना है (aspect ratio बनाए रखते हुए), ताकि इंटरनेट कनेक्शन का अधिक कुशल उपयोग हो सके (image manipulation / transcoding की कीमत पर)। मॉडल इनपुट आकार की जानकारी लक्ष्य आकार निर्धारित करने के लिए उपयोग की जाती है; यदि उपलब्ध न हो, `default_max_input_size` का उपयोग किया जाता है।
* `max_concurrent_requests`: शुरू की जा सकने वाली concurrent requests की अधिकतम संख्या
* `max_batch_size`: एक single request में inject किए जा सकने वाले elements की अधिकतम संख्या
* `workflow_run_retries_enabled`: यह तय करने का फ़्लैग कि Workflows executions में होने वाली अस्थायी त्रुटियों को पुनः प्रयास किया जाए या नहीं। डिफ़ॉल्ट रूप से `true` और डिफ़ॉल्ट को environment variable `WORKFLOW_RUN_RETRIES_ENABLED`.

### Workflows execution का कॉन्फ़िगरेशन

* `profiling_directory`: वह स्थान निर्दिष्ट करता है जहाँ Workflows profiler traces सहेजे जाते हैं। डिफ़ॉल्ट रूप से, यह `./inference_profiling` डायरेक्टरी है।
