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.
- 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.
- 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.
- 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.
- 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.
- *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=Truebeállítást, és a lekérdezési információk megadásához ainclude_retrieval_info=Truebeá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.


