AI एजेंट · पाठ

एजेंट के लिए HTTP क्लाइंट: httpx और requests

समकालिक और अतुल्यकालिक HTTP अनुरोध, सत्र प्रबंधन और हेडर।

पाठ 1, कुल 4 में से13 चरण

एजेंट के लिए HTTP क्लाइंट: httpx और requests, CoddyKit पर AI एजेंट का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह AI एजेंट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एजेंटों के लिए HTTP क्लाइंट क्यों महत्वपूर्ण हैं

AI एजेंटों को अक्सर बाहरी स्रोतों से डेटा प्राप्त करना पड़ता है: API, वेबसाइट और सेवाएँ। एक विश्वसनीय HTTP क्लाइंट किसी भी एजेंट के टूलकिट का मुख्य उपकरण है।

Python में दो लोकप्रिय HTTP लाइब्रेरी हैं: requests (समकालिक, सरल) और httpx (समकालिक और अतुल्यकालिक दोनों का समर्थन करता है)। कुशल एजेंट बनाने के लिए यह समझना आवश्यक है कि किसका उपयोग कब करना है।

requests के साथ मूल GET अनुरोध

requests लाइब्रेरी सरल HTTP कॉल करना आसान बनाती है। संसाधन प्राप्त करने और प्रतिक्रिया की जाँच करने के लिए requests.get(url) का उपयोग करें।

प्रतिक्रिया के मुख्य भाग का उपयोग करने से पहले हमेशा स्थिति कोड जाँचें, ताकि असफलताएँ चुपचाप न रह जाएँ।

import requests

url = 'https://api.example.com/data'
response = requests.get(url)

print(response.status_code)  # 200
print(response.text)         # raw string body
print(response.json())       # parsed JSON dict

हेडर और समय-सीमा जोड़ना

अधिकांश API के लिए प्रमाणीकरण हेडर आवश्यक होते हैं। headers= पैरामीटर आपको हेडर का शब्दकोश भेजने देता है। धीमे सर्वर पर आपका एजेंट अनिश्चित समय तक अटकने से बचाने के लिए हमेशा timeout= निर्धारित करें।

import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(
    'https://api.example.com/items',
    headers=headers,
    timeout=10  # seconds
)

data = response.json()
print(data)

raise_for_status() — त्रुटियों पर तुरंत विफल होना

response.raise_for_status() 4xx और 5xx स्थिति कोड के लिए HTTPError उत्पन्न करता है। इसके बिना 404 या 500 प्रतिक्रिया को चुपचाप सफल माना जाता है।

एजेंटों में यह एक अच्छी पद्धति है: स्पष्ट रूप से विफल हों, ताकि एजेंट दोबारा प्रयास करने या त्रुटि की सूचना देने का निर्णय ले सके।

import requests

try:
    response = requests.get('https://api.example.com/missing', timeout=10)
    response.raise_for_status()  # raises if status >= 400
    data = response.json()
except requests.HTTPError as e:
    print(f'HTTP error: {e}')
except requests.RequestException as e:
    print(f'Network error: {e}')

httpx का परिचय

httpx एक आधुनिक HTTP क्लाइंट है, जिसका API requests जैसा ही है, लेकिन इसमें अतिरिक्त अतुल्यकालिक समर्थन है। यह डिफ़ॉल्ट रूप से समय-सीमाएँ भी लागू करता है, जिससे यह उत्पादन एजेंटों के लिए अधिक सुरक्षित बनता है।

इसे pip install httpx से इंस्टॉल करें। समकालिक उपयोग requests जैसा ही लगभग समान दिखता है।

import httpx

response = httpx.get(
    'https://api.example.com/data',
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=10.0
)

response.raise_for_status()
data = response.json()
print(data)

httpx.AsyncClient के साथ अतुल्यकालिक HTTP

जब आपका एजेंट किसी अतुल्यकालिक संदर्भ में चलता है (जैसे FastAPI या asyncio के साथ), तो इवेंट लूप को अवरुद्ध होने से बचाने के लिए httpx.AsyncClient का उपयोग करें। कनेक्शन ठीक से बंद हो, यह सुनिश्चित करने के लिए इसे async with में रखें।

import httpx
import asyncio

async def fetch_data(url: str) -> dict:
    async with httpx.AsyncClient(timeout=10.0) as client:
        response = await client.get(
            url,
            headers={'Authorization': 'Bearer YOUR_KEY'}
        )
        response.raise_for_status()
        return response.json()

# result = asyncio.run(fetch_data('https://api.example.com/data'))

एक साथ कई अतुल्यकालिक अनुरोध करना

अतुल्यकालिक HTTP का एक बड़ा लाभ asyncio.gather() के माध्यम से एक साथ कई URL प्राप्त करना है। इससे उन एजेंटों की गति बहुत बढ़ सकती है जिन्हें प्रतिक्रिया देने से पहले कई एंडपॉइंट से डेटा चाहिए।

import httpx
import asyncio

async def fetch_all(urls: list) -> list:
    async with httpx.AsyncClient(timeout=10.0) as client:
        tasks = [client.get(url) for url in urls]
        responses = await asyncio.gather(*tasks)
        return [r.json() for r in responses]

urls = [
    'https://api.example.com/item/1',
    'https://api.example.com/item/2',
    'https://api.example.com/item/3'
]
# results = asyncio.run(fetch_all(urls))

सत्र का पुनः उपयोग और कनेक्शन पूलिंग

हर अनुरोध के लिए नया HTTP कनेक्शन बनाना धीमा होता है। दोनों लाइब्रेरी कनेक्शन पूलिंग का समर्थन करती हैं: requests.Session और httpx.Client TCP कनेक्शनों का पुनः उपयोग करते हैं और अनुरोधों के बीच हेडर/कुकीज़ साझा करते हैं।

यह खास तौर पर उन एजेंटों में उपयोगी है जो एक ही API को कई कॉल करते हैं।

import httpx

# Create once, reuse for many requests
client = httpx.Client(
    base_url='https://api.example.com',
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=10.0
)

response1 = client.get('/users')
response2 = client.get('/items')
response3 = client.get('/orders')

client.close()  # always close when done

JSON बॉडी के साथ POST अनुरोध भेजना

एजेंटों को अक्सर केवल डेटा पढ़ना ही नहीं, बल्कि उसे भेजना भी पड़ता है। Python डिक्शनरी को अपने-आप क्रमबद्ध करने और सही Content-Type हेडर निर्धारित करने के लिए json= पैरामीटर का उपयोग करें।

import httpx

payload = {
    'query': 'latest AI news',
    'max_results': 5,
    'language': 'en'
}

response = httpx.post(
    'https://api.example.com/search',
    json=payload,
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=15.0
)

response.raise_for_status()
results = response.json()
print(results['items'])

प्रतिक्रिया का विश्लेषण: text, json और content

प्रतिक्रिया ऑब्जेक्ट में बॉडी की तीन मुख्य प्रॉपर्टीज़ होती हैं:

  • .text — डिकोड की गई स्ट्रिंग (HTML, XML, साधारण पाठ)
  • .json() — JSON को Python डिक्शनरी/सूची में बदलता है
  • .content — मूल बाइट्स (चित्रों या बाइनरी फ़ाइलों के लिए)

API के सामग्री-प्रकार के आधार पर उपयुक्त प्रॉपर्टी का उपयोग करें।

import httpx

response = httpx.get('https://api.example.com/report', timeout=10.0)

# For JSON APIs
data = response.json()            # dict or list

# For HTML or plain text
html = response.text              # str

# For binary files
image_bytes = response.content    # bytes

print(type(data), type(html), type(image_bytes))

सबको एक साथ रखना: एजेंट का HTTP डेटा-प्राप्ति टूल

यह एक पूर्ण, पुनः उपयोग योग्य डेटा-प्राप्ति फ़ंक्शन है, जिसे एजेंट टूल के रूप में कॉल कर सकता है। यह त्रुटियों को सही ढंग से संभालता है, अनुरोध का लॉग दर्ज करता है और संरचित डेटा लौटाता है।

यह पैटर्न किसी भी वेब-डेटा प्राप्ति एजेंट टूल के लिए ठोस आधार है।

import httpx
import logging

logger = logging.getLogger(__name__)

def agent_fetch(url: str, headers: dict = None) -> dict:
    try:
        response = httpx.get(
            url,
            headers=headers or {},
            timeout=10.0
        )
        response.raise_for_status()
        logger.info(f'Fetched {url} -> {response.status_code}')
        return {'success': True, 'data': response.json()}
    except httpx.HTTPStatusError as e:
        return {'success': False, 'error': str(e)}
    except httpx.RequestError as e:
        return {'success': False, 'error': f'Network error: {e}'}

ज्ञान-जाँच: HTTP क्लाइंट

एजेंटों के लिए HTTP क्लाइंट की अपनी समझ का परीक्षण करें।

पुनरावलोकन: एजेंटों के लिए HTTP क्लाइंट

इस पाठ में आपने एजेंटों को विश्वसनीय HTTP डेटा-प्राप्ति क्षमताओं से लैस करना सीखा:

  • सरल समकालिक डेटा-प्राप्ति के लिए requests का उपयोग करें
  • अवरुद्ध न करने वाले अतुल्यकालिक अनुरोधों के लिए httpx.AsyncClient का उपयोग करें
  • हमेशा timeout= निर्धारित करें और raise_for_status() कॉल करें
  • एक ही होस्ट को कई कॉल करने के लिए सत्रों/क्लाइंट का पुनः उपयोग करें
  • प्रतिक्रिया के प्रकार के आधार पर .json(), .text या .content का उपयोग करें

अच्छी तरह लिखा गया डेटा-प्राप्ति टूल आपके एजेंट और वेब के बीच प्रवेश-द्वार होता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ AI एजेंट सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
60
पाठ
239

अक्सर पूछे जाने वाले प्रश्न

क्या “एजेंट के लिए HTTP क्लाइंट: httpx और requests” पाठ निःशुल्क है?

हाँ—“एजेंट के लिए HTTP क्लाइंट: httpx और requests” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और AI एजेंट पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“एजेंट के लिए HTTP क्लाइंट: httpx और requests” में मैं क्या सीखूँगा?

समकालिक और अतुल्यकालिक HTTP अनुरोध, सत्र प्रबंधन और हेडर। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI एजेंट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या AI एजेंट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI एजेंट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“एजेंट के लिए HTTP क्लाइंट: httpx और requests” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस AI एजेंट पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर AI एजेंट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. एजेंट के लिए HTTP क्लाइंट: httpx और requests
  2. BeautifulSoup से HTML पार्स करना
  3. पृष्ठांकन और गतिशील सामग्री संभालना
  4. जिम्मेदार स्क्रैपिंग के तरीके
← AI एजेंट पर वापस जाएँ