Posted on Hozzászólás most!

HTTPX2 az OpenAI SDK-ban: Mit érdemes tudni?

HTTPX2 az OpenAI SDK-ban: Mit érdemes tudni?
HTTPX2 az OpenAI SDK-ban: Mit érdemes tudni?

Az OpenAI SDK legújabb verziója már HTTPX2-t használ mind szinkron, mind aszinkron HTTP kliensként, ami fontos változásokat hozott az OpenAI API integráció terén. Ebben a cikkben lépésről lépésre bemutatom, mit jelent ez a fejlesztők számára, hogyan állhatsz át könnyedén HTTPX2-re, és mire kell figyelned a Python OpenAI kliens használatakor.

Legyen szó egyszerű API hívásokról, komplex proxy beállításokról vagy TLS tanúsítványok kezeléséről, az OpenAI SDK mostantól egységesebben, korszerűbb módon támogatja a HTTPX2-t. Az alábbiakban áttekintjük a legfontosabb tudnivalókat, példákat és tanácsokat, hogy a lehető leggördülékenyebben alkalmazhasd a változásokat a saját projektedben.

Mi változott az OpenAI SDK HTTP rétegében?

Az OpenAI SDK régebbi verzióiban a httpx csomag szolgáltatta a HTTP kommunikáció alapját. A legújabb verzióban viszont már HTTPX2-t használ az SDK. Ez azt jelenti, hogy ha Python OpenAI klienst vagy aszinkron HTTP klienst használsz, minden API hívásod a HTTPX2-n keresztül fog futni.

Ez a váltás számos előnnyel jár: jobb teljesítmény, biztonságosabb TLS kezelés, modernebb API felület. Fontos azonban tudni, hogy egyes dolgok megváltoztak: például a TLS tanúsítványok ellenőrzése most már az operációs rendszer bizalmi tárolóját használja, nem a certifi csomagot, mint korábban.

A HTTPX2 telepítése automatikusan megtörténik az openai csomaggal együtt. Ha azonban régebbi kódod van, amely csak azért importálta a httpx-et, mert az SDK korábban ezt tette, mostantól vagy külön telepítsd azt, vagy állj át httpx2-re mindenhol.

HTTPX2 használata a Python OpenAI klienssel

A legtöbb fejlesztőnek nincs szüksége külön HTTPX2 telepítésre. Elég az pip install openai parancsot futtatni, és már használhatod is a HTTPX2-t az OpenAI SDK-n keresztül. A meglévő API hívások, időtúllépési beállítások, streaming API-k, autentikáció, visszakísérletezési logika továbbra is a megszokott módon működnek.

Ha azonban speciális HTTP kliensre, például proxy vagy egyedi transport konfigurációra van szükséged, akkor a következő minták segítségével tudod beállítani:

  • Proxy beállítása:
    proxy_client = OpenAI(http_client=DefaultHttpx2Client(proxy="http://proxy.example.com:8080"))
  • Saját transport és timeout:
    transport_client = OpenAI(
          http_client=DefaultHttpx2Client(
            transport=httpx2.HTTPTransport(local_address="0.0.0.0"),
            timeout=httpx2.Timeout(30.0, connect=5.0),
          )
        )
  • Aszinkron klienshez:
    async_client = AsyncOpenAI(http_client=DefaultAsyncHttpx2Client(timeout=httpx2.Timeout(30.0)))

Ezek a példák jól mutatják, hogy a HTTPX2 konfigurációs lehetőségei rugalmasak és könnyen átláthatók. Ha közvetlenül httpx2.Client vagy httpx2.AsyncClient példányokat szeretnél használni, azt is megteheted – ekkor a saját beállításaid érvényesülnek.

TLS tanúsítványok és biztonság: Mire figyelj?

Az egyik legnagyobb változás a TLS tanúsítványok kezelésében jelentkezett. Míg a korábbi httpx+certifi páros minden esetben egy Python-csomagból vette a CA tanúsítványokat, a HTTPX2 már az adott operációs rendszer saját bizalmi tárát használja.

Ez több előnyt is jelent: a rendszered CA kezelése egységesebb lesz, nem kell külön Python-csomagra támaszkodni. Ugyanakkor problémát okozhat, ha például minimalista Docker konténered nincs megfelelően beállítva CA tanúsítványokkal, vagy ha vállalati TLS-inspekciós proxy mögött dolgozol.

Forgatókönyv Teendő
Minimalista konténer (alap CA nélkül) Telepítsd a rendszer CA-t vagy állítsd be a SSL_CERT_FILE környezeti változót.
Vállalati TLS proxy használata Másold a vállalati CA tanúsítványt a rendszer CA tárolójába, vagy add meg explicit módon.
Egyedi certifi használat Állítsd be a SSL_CERT_FILE=/path/to/ca-bundle.pem vagy SSL_CERT_DIR változót.
Saját SSL kontextus használata Add át az ssl.SSLContext-et a verify argumentumként.

Ha explicit módon szeretnéd kontrollálni, hogy melyik CA tanúsítványt használja az alkalmazás, hozz létre egy ssl.SSLContext-et, és add át a DefaultHttpx2Client vagy DefaultAsyncHttpx2Client példánynak a verify paraméterben.

Egyedi HTTPX2 objektumok és timeout kezelés

A HTTPX2 átállás egyik előnye, hogy mostantól minden HTTPX2-re épülő beállítást használhatsz: például részletes timeoutokat, egyedi transportokat, vagy akár egyedi autentikációs eljárásokat. Fontos tudni, hogy az SDK továbbra is támogatja a timeout numerikus értékadást, de mostantól a httpx2.Timeout objektumot is használhatod a részletesebb vezérléshez.

Például:

import httpx2
from openai import OpenAI
client = OpenAI(timeout=httpx2.Timeout(60.0, connect=5.0, read=20.0))

Ha saját, finomhangolt HTTPX2 klienst szeretnél használni, mind a httpx2.Client, mind a httpx2.AsyncClient példányait átadhatod az OpenAI SDK-nak. Ez akkor lehet hasznos, ha például saját connection pool beállításaid vagy proxy integrációd van.

Ha korábban HTTPX objektumokat (pl. httpx.Request, httpx.Response) használtál a SDK visszatérő értékeiben, mostantól ezek HTTPX2 objektumok lesznek. Ennek köszönhetően egyszerűbb a típusbiztonság és áttekinthetőbb a kód.

Aszinkron HTTP kliens és Aiohttp támogatás

Sokan használnak aszinkron Python OpenAI klienst, főleg nagyobb teljesítményű, párhuzamos feldolgozást igénylő alkalmazásokban. A HTTPX2 átállás ezt is érinti: az AsyncOpenAI alapértelmezetten HTTPX2-t használ, de támogatja az aiohttp-t is natív HTTPX2 transzporttal.

Ha aiohttp-t szeretnéd használni, csak telepítsd az extra csomagot:

pip install 'openai[aiohttp]'
from openai import AsyncOpenAI, DefaultAioHttpClient
client = AsyncOpenAI(http_client=DefaultAioHttpClient())

A DefaultAioHttpClient() lényegében egy HTTPX2 alapú AsyncClient. Nem szükséges külön transport vagy adapter beállítása, és nem kell aggódnod a régi httpx-aiohttp integráció miatt sem.

Hibakezelés, tesztelés és mockolás HTTPX2 alatt

A fejlesztés során elmaradhatatlan a hibakezelés és tesztelés. Az OpenAI SDK továbbra is a jól ismert kivételeket dobja, például openai.APITimeoutError vagy openai.APIConnectionError. Ezek kiváltó oka mostantól HTTPX2 Exception lesz, így ha részletesen szeretnéd kezelni az alacsonyabb szintű hibákat, már HTTPX2 kivételeket kapsz.

Ha tesztelni vagy mockolni szeretnéd az OpenAI SDK-t, a HTTPX2 kérés-válasz párokat kell elfogni és visszaadni. Például:

import httpx2
from openai import OpenAI
def handler(request: httpx2.Request) -> httpx2.Response:
    return httpx2.Response(200, request=request, json={"object": "list", "data": []})
client = OpenAI(http_client=httpx2.Client(transport=httpx2.MockTransport(handler)))

Ez a módszer gyors, hatékony és teljes mértékben HTTPX2 kompatibilis. A régi httpx alapú mockok nem működnek automatikusan, ezek cseréje szükséges.

Gyakran ismételt kérdések

Miért váltott az OpenAI SDK HTTPX2-re?

A HTTPX2 modernebb, gyorsabb, és jobb TLS tanúsítványkezelést, valamint fejlettebb aszinkron támogatást nyújt. Az OpenAI SDK ezzel a váltással biztosítja a hosszú távú kompatibilitást és a biztonságosabb működést.

Kell-e külön telepítenem a HTTPX2-t az OpenAI SDK használatához?

Nem. A pip install openai automatikusan feltelepíti a HTTPX2-t is. Csak akkor van szükség külön telepítésre, ha a saját kódodban is közvetlenül használod a HTTPX2 funkcióit.

Mi a teendő, ha TLS hibát kapok konténerben?

Ha minimalista Docker vagy más konténer alapképet használsz, előfordulhat, hogy nincs telepítve a rendszer CA tanúsítvány csomag. Ilyenkor telepítsd (Debian/Ubuntu alatt apt-get install ca-certificates), vagy add meg a SSL_CERT_FILE környezeti változót a kívánt CA bundle útvonalával.

Működnek a régi HTTPX mockjaim és integrációim?

Nem automatikusan. A HTTPX2 teljesen új API-t és objektumokat használ, ezért a régi HTTPX alapú tesztek, mockok, valamint egyedi transport vagy autentikációs megoldások átírása szükséges.

Használhatom egyszerre a httpx-et és a httpx2-t?

Igen, technikailag használhatod mindkettőt, de az OpenAI SDK minden funkciója HTTPX2-re épül. Ajánlott minden új fejlesztést HTTPX2-vel végezni, és a régi httpx-es importokat fokozatosan kiváltani.

Összegzés

Az OpenAI SDK HTTPX2-re való átállása mérföldkő a Pythonos OpenAI API integráció történetében. A HTTPX2 használata nemcsak modernebb, hanem biztonságosabb és rugalmasabb is a fejlesztők számára. Ha eddig is használtad az OpenAI SDK-t, a legtöbb funkció változatlanul működik, de érdemes átnézni a TLS beállításokat, a mockolási logikát és a proxy/transport konfigurációkat.

Ha szeretnéd a legtöbbet kihozni az OpenAI SDK-ból, próbáld ki a HTTPX2 részletes konfigurációs lehetőségeit, és frissítsd a régi httpx-es részeket! Ha bármi kérdésed van, vagy elakadsz a migráció során, írj hozzászólást vagy keresd szakértőinket – segítünk a gördülékeny átállásban!

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük