Weboldal keresés

A ’s szerver nélküli következtetés (és ügynökök) használata az OpenAI SDK-val


A DigitalOcean nemrégiben elindította a Serverless Inference-t - egy hosztolt API-t, amely lehetővé teszi, hogy nagy nyelvi modelleket, például Claude-ot, GPT-4o-t, LLaMA 3-at és Mistral-t futtass anélkül, hogy az infrastruktúrát kezelned kellene.

Ez úgy van megépítve, hogy egyszerű legyen: nincs GPU-beszolgáltatás, nincs szerverkonfiguráció, nincs skálázási logika, amit kezelni kellene. Csak küldj egy kérést egy végpontra.

Az API az Anthropic, OpenAI, Meta, Mistral, Deep Seek és mások modelljeivel működik - mindez egyetlen alap URL mögött érhető el.

A legjobb az, hogy API-kompatibilis az OpenAI-val.

Ez azt jelenti, hogy ha már olyan eszközöket használsz, mint az OpenAI Python SDK, a LangChain vagy a LlamaIndex, vagy bármelyik támogatott modellt, akkor ezek egyszerűen működni fognak. Kicserélheted a háttér-alkalmazást anélkül, hogy újra kellene írnod az alkalmazásodat.

Ez a megközelítés a DigitalOcean ügynökökkel is működik - olyan modellek, amelyek a saját dokumentumaidhoz vagy tudásbázisodhoz kapcsolódnak.

Miért használjunk DigitalOcean Inferenciát?

Több ok is van, amiért ez a megközelítés kiemelkedő—különösen, ha már a DigitalOcean-on dolgozol, vagy több rugalmasságot szeretnél a nagyméretű nyelvi modellek használatában.

  1. Egy kulcs mindent elintéz: Nem kell külön kulcsokat kezelnie az OpenAI, Anthropic, Mistral stb. számára. Egy DigitalOcean API kulcs hozzáférést biztosít minden modellhez - Claude, GPT-4o, LLaMA 3, Mistral és még sok más.
  2. Alacsonyabb költségek: Sok munkaterhelés esetén ez lényegesen költséghatékonyabb, mint közvetlenül a szolgáltatótól igénybe venni.
  3. Egységes számlázás: Minden használatod egy helyen jelenik meg. Minden a DO számládban látható, az alkalmazásaid, tereid, adatbázisaid, bármi, amit a DO-n futtatsz. Nincsenek meglepetés költségek különböző platformokon.
  4. Adatvédelem nyílt modellekhez: Ha nyílt súlyú modelleket (például LLaMA vagy Mistral) használsz, a megadott kéréseid és a válaszok nem kerülnek naplózásra és nem használják fel a képzéshez.
  5. *Nem történt SDK változás: Az OpenAI SDK egyszerűen működik. Ugyanígy használhatja a LangChain vagy LlamaIndex könyvtárakat is - csak módosítsa az alap URL-t.

Hogyan működik

A motorháztető alatt minden az OpenAI módszeren keresztül működik:

client.chat.completions.create()

Az egyetlen dolog, amit meg kell változtatnod, az a base_url, amikor inicializálod az ügyfelet.

  • Szerver nélküli következtetés (általános modellekhez): https://inference.do-ai.run/v1/
  • Ügynökök (a saját adataid felett végzett kontextusérzékeny következtetésekkel kapcsolatban): https://.agents.do-ai.run/api/v1/

Ez az - nézzük meg, hogyan néz ki ez a gyakorlatban.

Telepítse az OpenAI SDK-t

Futtassa az alábbi parancsot az OpenAI SDK telepítéséhez a gépére:

pip install openai python-dotenv

1. példa: Elérhető modellek listája

Ez felsorolja az összes elérhető modellt a DigitalOcean Inference-ből. Ugyanazt a kódot használod, mint az OpenAI esetében - csak egy DigitalOcean végpontra irányítod (base_url).

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

List all available models
try:
    models = client.models.list()
    print("Available models:")
    for model in models.data:
        print(f"- {model.id}")
except Exception as e:
    print(f"Error listing models: {e}")

Példa 2: Futasson egy egyszerű csevegési befejezést

Ugyanazt a .chat.completions.create() metódust használjuk. Csak a base_url különbözik.

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

Run a simple chat completion
try:
    response = client.chat.completions.create(
        model="llama3-8b-instruct",  # Swap in any supported model
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a fun fact about octopuses."}
        ]
    )
    print(response.choices[0].message.content)
except Exception as e:
    print(f"Error during completion: {e}")

3. példa: Válasz streamelése

Szeretnél egy választ, ami tokenenként érkezik vissza? Csak add hozzá a stream=True opciót, és járd végig a töredékeket.

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

Run a simple chat completion with streaming
try:
    stream = client.chat.completions.create(
        model="llama3-8b-instruct",  # Swap in any supported model
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a fun fact about octopuses."}
        ],
        stream=True
    )
    for event in stream:
        if event.choices[0].delta.content is not None:
            print(event.choices[0].delta.content, end='', flush=True)
    print()  # Add a newline at the end

except Exception as e:
    print(f"Error during completion: {e}")

Mi a helyzet az ügynökökkel?

A DigitalOcean ügynököket is kínál - ezek olyan nagyméretű nyelvi modellek, amelyek egy testreszabott tudásbázissal párosulnak. Feltölthetsz dokumentumokat, hozzáadhatsz URL-eket, strukturált tartalmat tartalmazhatsz, összekapcsolhatsz egy DigitalOcean Spaces tárolót vagy akár egy Amazon S3 tárolót is adatforrásként. Az ügynök ezután e kontextus figyelembevételével válaszol. Kitűnő belső eszközökhöz, dokumentációs botokhoz, vagy domain-specifikus asszisztensekhez.

Még mindig használod a .chat.completions.create() -t — az egyetlen különbség a base_url. De most a válaszaid a saját adataidra épülnek.

Megjegyzés: Az Inference esetében az alap URL rögzített. Az Ügynököknél ez egyedi az ügynökéhez, és hozzá kell adni a /api/v1-t.

python
client = OpenAI(
    base_url="https://your-agent-id.agents.do-ai.run/api/v1/",
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

4. példa: Használj ügynököt (nincs stream)

Ez egy standard ügynöki kérés a .chat.completions.create() használatával - ugyanaz a módszer, mint korábban.

Az egyetlen valódi változás a base_url, amely az ügynököd egyedi végpontjára mutat (plusz /api/v1). Az Inference esetében az alap URL rögzített. Az Ügynökök esetében egyedi az ügynököd számára, és egyszerűen hozzá kell fűzni a /api/v1 részt.

Itt a törzsbe include_retrieval_info=True is hozzáadtuk. Ez azt mondja az API-nak, hogy további metaadatokat adjon vissza arról, hogy az Ügynök mit húzott be a tudásbázisából a válasz generálásához.

from openai import OpenAI
from dotenv import load_dotenv
import os
import json
load_dotenv()

try:
    # Create a new client with the agents endpoint
    agents_client = OpenAI(
        base_url="https://rrp247s4dgv4xoexd2sk62yq.agents.do-ai.run/api/v1/",
        api_key=os.getenv("AJOT_AGENT_KEY")
    )
    
        
    # Try a simple text request with the agents endpoint
    stream = agents_client.chat.completions.create(
        model="openai-gpt-4o-mini",
        messages=[{
            "role": "user",
            "content": "Hello! WHo is Amit?"
        }],
        extra_body = {"include_retrieval_info": True}
    )
    
    print(f"\nAgents endpoint response: {agents_response.choices[0].message.content}")

    for choice in response.choices:
         print(choice.message.content)
    
     response_dict = response.to_dict()

     print("\nFull retrieval object:")
     print(json.dumps(response_dict["retrieval"], indent=2))
    
except Exception as e:
    print(f"Error with agents endpoint: {e}")

5. példa: Használjon ügynököt (folyamatban lévő és visszakeresési lehetőséggel)

Az egyetlen változás itt az, hogy engedélyeztük a stream=True beállítást, hogy a választ azonnal megkapjuk, ahogy generálódik. Minden más ugyanaz.

from openai import OpenAI
from dotenv import load_dotenv
import os
import json
load_dotenv()

try:
    # Create a new client with the agents endpoint
    agents_client = OpenAI(
        base_url="https://rrp247s4dgv4xoexd2sk62yq.agents.do-ai.run/api/v1/",
        api_key=os.getenv("AJOT_AGENT_KEY")
    )
    
        
    # Try a simple text request with the agents endpoint
    stream = agents_client.chat.completions.create(
        model="openai-gpt-4o-mini",
        messages=[{
            "role": "user",
            "content": "Hello! WHo is Amit?"
        }],
        extra_body = {"include_retrieval_info": True},
        stream=True,
    )
    
    for event in stream:
        if event.choices[0].delta.content is not None:
            print(event.choices[0].delta.content, end='', flush=True)
    print()  # Add a newline at the end
    
except Exception as e:
    print(f"Error with agents endpoint: {e}")

Következtetés

Összefoglalva:

  • Közvetlenül használhatja az OpenAI SDK-t a DigitalOcean Serverless Inference és ügynökei mellett.
  • A egyetlen dolog, amit meg kell változtatnod, az a base_url - minden más ugyanaz marad.
  • Használja a https://inference.do-ai.run/v1/ címet általános célú modellekhez, mint például a LLaMA 3, GPT-4o, Claude stb.
  • Használja az ügynöke URL-jét (plusz /api/v1) a saját dokumentációjához vagy tudásbázisához való csatlakozáshoz.
  • Minden a .chat.completions.create() -en keresztül működik - nincs új módszer, amit meg kellene tanulni.
  • A streaming aktiválásához használja a stream=True beállítást, és a lekérdezési információk megadásához a include_retrieval_info=True beállítást.

Ez megkönnyíti több modell tesztelését, a háttérrendszerek váltását vagy egy modell lehelyezését a saját tartalmadban - mindezt anélkül, hogy módosítanád a meglévő kódodat.

További források

  • Mi az a Serverless Inference?: Egy egyszerű áttekintés arról, hogyan működik a Serverless Inference és hol illeszkedik.
  • Hogyan használjuk a Serverless Inference-t: Dokumentáció a Serverless Inference-hez
  • Támogatott modellek listája: A rendelkezésre álló összes modell teljes bontása (OpenAI, Claude, LLaMA, Mistral stb.).
  • Digitális Óceán Ügynök létrehozása és konfigurálása: Útmutató az ügynökök építéséhez, amelyek a saját tudásbázisuk alapján reagálnak.
  • Inferencia API Referencia: Sémák, végpontok és minden, ami a háttérben zajlik.
  • OpenAI Python SDK: A hivatalos SDK, amelyre ez az egész útmutató épül.