Arendaja platvorm

IBM watsonx.ai API

IBM watsonx ülevaade arendajatele, mis hõlmab API-juurdepääsu, hinnastust, SDK-tuge, lõppunkte, võimekusi ja platvormi reegleid.

API võti Nõutud
Peamine API watsonx.ai REST API
SDK tugi Ametlik Pythoni pakett ibm-watsonx-ai ja ametlik Node.js-i pakett @ibm-cloud/watsonx-ai. REST HTTP kaudu on juurdepääs võimalik mis tahes programmeerimiskeeles, sealhulgas PHP-s.
Päringupiirangud Päringupiirangud ja kvoodid sõltuvad IBM Cloudi kontost, teenuseplaanist, piirkonnast, mudelist, juurutusest ja lüüsi konfiguratsioonist. IBM dokumenteerib lüüsi juurutuste päringu- ja märgipiirangud, kuid kõigi watsonx.ai m
Platvorm

API ülevaade

Lõppunktid (endpoints)

API ligipääs

Juuraadress (Base URL) https://us-south.ml.cloud.ibm.com
Peamine API watsonx.ai REST API
Hinnad

API Hinnad

Hinnakujundusmudel Plaanipõhine ja kasutuspõhine hinnastamine

Saadaval on tasuta mänguväljak ja proovikasutuse mahud. Tasuline Essentials põhineb kasutuspõhisel hinnastamisel; Standardi avaldatud algne instantsi tasu on 1 110 USA dollarit kuus, millele lisanduvad piirkonniti erinevad mudeli-, tokeni-, mahu-, majutuse-, peenhäälestuse- ja funktsioonitasud ning

Arendaja töömugavus

SDK info

SDK Ametlik Pythoni pakett ibm-watsonx-ai ja ametlik Node.js-i pakett @ibm-cloud/watsonx-ai. REST HTTP kaudu on juurdepääs võimalik mis tahes programmeerimiskeeles, sealhulgas PHP-s.
Kasutusmugavus Mõõdukas. Prompt Lab ja ametlikud SDK-d lihtsustavad alustamist, kuid projektid, piirkonnad, IAM-autentimine, versioonitud päringud ja mudelipõhised võimalused muudavad ettevõtetele mõeldud seadistamise keerukamaks.
Dokumentatsioon Hea ja põhjalik dokumentatsioon, mis hõlmab ametlikku REST API-t, Pythoni SDK-d, Node.js SDK-d, õpetusi, Prompt Labi koodigeneratsiooni ning teenusepõhist dokumentatsiooni. Täpne käitumine võib varieeruda sõltuvalt mudelist, paketist ja juurutustüübist.
Viivitus Kõigi mudelite kohta ei õnnestunud kontrollida universaalset latentsuse SLA-d ega kindlat vastamisaja väärtust. Latentsus sõltub piirkonnast, mudelist, prompti ja väljundi suurusest, jagatud või spetsiaalsest juurutusest, järjekorrast ning voogedastusreži
Featuurid

API võimekused

✓ Voogedastus
✓ Funktsioonide kasutamine
✓ Assistants API
✓ Failide üleslaadimine
✓ Peenhäälestamine
✓ Pildi sisend
✓ Struktureeritud väljund
✓ Liivakast
Lühikirjeldus

Praegune platvorm ühendab versioonitud REST API-d ametlike Pythoni ja Node.js-i SDK-dega. Põhifunktsioonide hulka kuuluvad alusmudelite otsimine, teksti genereerimine, vestlus, voogedastus, teksti esitamine vektorkujul (embeddingud), tulemuste ümberjärjestamine, dokumentide andmete eraldamine, hindamised, prognoosimine, agentide juhitud vestluse töövood ja alusmudelite häälestamine. Tööriistade kutsumine on toetatud vestluse parameetrite, näiteks `tools` ja `tool_choice`, kaudu. JSON-objektina vastuseid toetatakse ühilduvate mudelite ja API-de puhul parameetri `response_format` kaudu; juhitud JSON-i või skeemipõhiseid juhtelemente võivad mõjutada kasutatav mudel või lüüs. Pildisisendit toetavad ainult valitud nägemisvõimega mudelid ning see peab vastama mudeli sisuvormingule. Failidega seotud töövood kasutavad üldjuhul üles laaditud või ühendatud andmevarasid, mitte API-t universaalse mitmeosalise failide vastuvõtu lõpp-punktina. Agentide ja assistentide funktsioonid on kättesaadavad watsonx.ai agentide töövoogude ja Agent Labi kaudu. API-päringud nõuavad kuupäevaga versiooni ning üldjuhul ka `project_id`-i või `space_id`-i. Piirkondlik lõpp-punkt ja funktsioonide kättesaadavus võivad erineda.

Näited

API Näited

set -euo pipefail

# Required environment variables:
# IBM_CLOUD_API_KEY, WATSONX_URL, WATSONX_PROJECT_ID, WATSONX_MODEL_ID

: "${IBM_CLOUD_API_KEY:?Set IBM_CLOUD_API_KEY}"
: "${WATSONX_URL:=https://us-south.ml.cloud.ibm.com}"
: "${WATSONX_PROJECT_ID:?Set WATSONX_PROJECT_ID}"
: "${WATSONX_MODEL_ID:=ibm/granite-4-h-small}"

TOKEN=$(curl --fail-with-body -sS -X POST "https://iam.cloud.ibm.com/identity/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
  --data-urlencode "apikey=${IBM_CLOUD_API_KEY}" | python -c 'import json,sys; print(json.load(sys.stdin)["access_token"])')

RESPONSE=$(curl --fail-with-body -sS -X POST "${WATSONX_URL}/ml/v1/text/chat?version=2025-02-11" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d "$(cat <<JSON
{
  \"model_id\": \"${WATSONX_MODEL_ID}\",
  \"project_id\": \"${WATSONX_PROJECT_ID}\",
  \"messages\": [
    {\"role\": \"system\", \"content\": \"You are a concise technical assistant.\"},
    {\"role\": \"user\", \"content\": \"Explain what an API gateway does in one paragraph.\"}
  ],
  \"max_tokens\": 200,
  \"temperature\": 0.2
}
JSON
)")
printf '%s\n' "${RESPONSE}" | python -c 'import json,sys; data=json.load(sys.stdin); print(data["choices"][0]["message"]["content"])'

# Structured JSON response example:
# curl --fail-with-body -sS -X POST "${WATSONX_URL}/ml/v1/text/chat?version=2025-02-11" \
#   -H "Authorization: Bearer ${TOKEN}" \
#   -H "Content-Type: application/json" \
#   -d "{\"model_id\":\"${WATSONX_MODEL_ID}\",\"project_id\":\"${WATSONX_PROJECT_ID}\",\"messages\":[{\"role\":\"system\",\"content\":\"Return valid JSON only.\"},{\"role\":\"user\",\"content\":\"List three API benefits.\"}],\"response_format\":{\"type\":\"json_object\"},\"max_tokens\":200}"
# Install: pip install -U ibm-watsonx-ai
import json
import os
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference

url = os.getenv("WATSONX_URL", "https://us-south.ml.cloud.ibm.com")
api_key = os.environ["IBM_CLOUD_API_KEY"]
project_id = os.environ["WATSONX_PROJECT_ID"]
model_id = os.getenv("WATSONX_MODEL_ID", "ibm/granite-4-h-small")

credentials = Credentials(url=url, api_key=api_key)
model = ModelInference(
    model_id=model_id,
    credentials=credentials,
    project_id=project_id,
)

messages = [
    {"role": "system", "content": "You are a concise technical assistant."},
    {"role": "user", "content": "What is an API gateway?"},
    {"role": "assistant", "content": "An API gateway is a managed entry point for backend APIs."},
    {"role": "user", "content": "Now give two practical benefits."},
]

try:
    response = model.chat(messages=messages, params={"max_tokens": 200, "temperature": 0.2})
    print(response["choices"][0]["message"]["content"])

    json_response = model.chat(
        messages=[
            {"role": "system", "content": "Return a JSON object with a key named benefits."},
            {"role": "user", "content": "Give two API gateway benefits."},
        ],
        params={"response_format": {"type": "json_object"}, "max_tokens": 200},
    )
    print(json.loads(json_response["choices"][0]["message"]["content"]))

    for event in model.chat_stream(
        messages=[{"role": "user", "content": "Stream a short explanation of REST APIs."}],
        params={"max_tokens": 150},
    ):
        if isinstance(event, dict):
            choice = event.get("choices", [{}])[0]
            delta = choice.get("delta", {})
            text = delta.get("content", "")
            if text:
                print(text, end="", flush=True)
    print()
except Exception as exc:
    print(f"watsonx.ai request failed: {exc}")
    raise
// Install: npm install @ibm-cloud/watsonx-ai
import { WatsonXAI } from "@ibm-cloud/watsonx-ai";

const service = new WatsonXAI({
  version: "2024-05-31",
  serviceUrl: process.env.WATSONX_URL || "https://us-south.ml.cloud.ibm.com"
});

const projectId = process.env.WATSONX_PROJECT_ID;
const modelId = process.env.WATSONX_MODEL_ID || "ibm/granite-4-h-small";
if (!projectId) throw new Error("WATSONX_PROJECT_ID is required");

try {
  const response = await service.textChat({
    modelId,
    projectId,
    messages: [
      { role: "system", content: "You are a concise technical assistant." },
      { role: "user", content: "Explain API gateways in two sentences." }
    ],
    maxTokens: 200,
    temperature: 0.2
  });
  console.log(response.result.choices[0].message?.content || "");

  const structured = await service.textChat({
    modelId,
    projectId,
    messages: [
      { role: "system", content: "Return valid JSON with a key named benefits." },
      { role: "user", content: "Give two benefits of API gateways." }
    ],
    responseFormat: { type: "json_object" },
    maxTokens: 200
  });
  const structuredText = structured.result.choices[0].message?.content || "{}";
  console.log(JSON.parse(structuredText));

  const toolResponse = await service.textChat({
    modelId,
    projectId,
    messages: [{ role: "user", content: "Find the weather for Boston." }],
    tools: [{
      type: "function",
      function: {
        name: "get_weather",
        description: "Get current weather for a city",
        parameters: {
          type: "object",
          properties: { city: { type: "string" } },
          required: ["city"]
        }
      }
    }],
    maxTokens: 200
  });
  console.log(toolResponse.result.choices[0].message);
} catch (error) {
  console.error("watsonx.ai request failed:", error);
  process.exitCode = 1;
}
<?php
$apiKey = getenv('IBM_CLOUD_API_KEY');
$watsonxUrl = getenv('WATSONX_URL') ?: 'https://us-south.ml.cloud.ibm.com';
$projectId = getenv('WATSONX_PROJECT_ID');
$modelId = getenv('WATSONX_MODEL_ID') ?: 'ibm/granite-4-h-small';

if (!$apiKey || !$projectId) {
    throw new RuntimeException('IBM_CLOUD_API_KEY and WATSONX_PROJECT_ID are required');
}

function requestJson(string $url, array $headers, ?string $body = null): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_POSTFIELDS => $body,
        CURLOPT_TIMEOUT => 120,
    ]);
    $raw = curl_exec($ch);
    if ($raw === false) {
        throw new RuntimeException('cURL error: ' . curl_error($ch));
    }
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $data = json_decode($raw, true);
    if ($status < 200 || $status >= 300) {
        throw new RuntimeException('HTTP ' . $status . ': ' . $raw);
    }
    if (!is_array($data)) {
        throw new RuntimeException('Invalid JSON response');
    }
    return $data;
}

$tokenResponse = requestJson(
    'https://iam.cloud.ibm.com/identity/token',
    ['Content-Type: application/x-www-form-urlencoded', 'Accept: application/json'],
    http_build_query([
        'grant_type' => 'urn:ibm:params:oauth:grant-type:apikey',
        'apikey' => $apiKey,
    ])
);

$token = $tokenResponse['access_token'] ?? null;
if (!$token) {
    throw new RuntimeException('IAM response did not contain an access token');
}

$payload = [
    'model_id' => $modelId,
    'project_id' => $projectId,
    'messages' => [
        ['role' => 'system', 'content' => 'You are a concise technical assistant.'],
        ['role' => 'user', 'content' => 'Explain what an API gateway does in one paragraph.'],
    ],
    'max_tokens' => 200,
    'temperature' => 0.2,
];

$response = requestJson(
    $watsonxUrl . '/ml/v1/text/chat?version=2025-02-11',
    [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    json_encode($payload, JSON_THROW_ON_ERROR)
);

$content = $response['choices'][0]['message']['content'] ?? null;
if ($content === null) {
    throw new RuntimeException('Chat response did not contain message content');
}

echo $content . PHP_EOL;
?>
Põhimõtted

Andmete kasutus

Andmete kasutus

IBM-i watsonxi dokumentatsiooni kohaselt on kliendi andmed ja mudelid kliendi kontol privaatsed ning IBM-il ega teistel organisatsioonidel ei ole neile juurdepääsu ega neid ei kasutata IBMi alusmudelite treenimiseks. Eeltreenitud alusmudelile viipade saatmine ei treeni seda mudelit. Kliendid vastutavad jätkuvalt ise oma konfigureeritud andmeallikate, ühendatud teenuste, häälestatud mudelite ja juurutusseadete eest.

Andmete säilitamine

IBM dokumenteerib andmete krüptimise puhkeolekus ja edastamisel ning märgib, et kliendiandmeid säilitatakse spetsiaalsetes salvestusmahutites. Täpsed säilitamise, kustutamise, varundamise ja logide käsitlemise põhimõtted sõltuvad watsonx.ai teenusest, juurutuse tüübist, piirkonnast, konto konfiguratsioonist ja kohaldatavatest IBM Cloudi tingimustest. Tootmiskeskkonna säilitamisnõuete kohta vaadake IBM Cloudi kehtivat teenusekirjeldust ja andmekaitsedokumentatsiooni.

Päringupiirangud

Päringupiirangud ja kvoodid sõltuvad IBM Cloudi kontost, teenuseplaanist, piirkonnast, mudelist, juurutusest ja lüüsi konfiguratsioonist. IBM dokumenteerib lüüsi juurutuste päringu- ja märgipiirangud, kuid kõigi watsonx.ai m

Arendaja juhend

IBM watsonx.ai API: arendaja juhend, võimalused, hinnad ja näited

IBM watsonx.ai on ettevõtetele suunatud arendajaplatvorm, mis pakub versioonitud REST API-de ning ametlike Python- ja Node.js-i SDK-de kaudu juurdepääsu alusmudelite inferentsile, vestlustele, voogedastusele, tööriistade kutsumisele, struktureeritud vastustele, valitud multimodaalsetele sisenditele, vektorrepresentatsioonidele, tulemuste ümberjärjestamisele, dokumentidest andmete eraldamisele, agentidele, hindamistele ja mudelite kohandamisele. Selles juhendis käsitletakse juurdepääsu, autentimist, mudelite valimist, esimesi päringuid, hinnastamist, täpsemaid võimalusi, tootmiskeskkonnaga seotud kaalutlusi ning olukordi, kus watsonx.ai on API-na sobiv või ebasobiv valik.
IBM watsonx.ai pakub programmilist võimalust generatiivse tehisintellekti ja masinõppe rakenduste loomiseks, kasutades IBM Granite’i ning valitud kolmandate osapoolte alusmudeleid. Arendajad kasutavad tavaliselt versioonitud watsonx.ai REST API-t või ametlikke Pythoni ja Node.js-i SDK-sid, autentides end IBM Cloud IAM-i kaudu ning seostades päringud projekti või juurutusruumiga. Platvorm on loodud organisatsioonidele, kes vajavad ettevõtte tasemel juhtimist, piirkondlikke juurutusvõimalusi ja juurdepääsu enamale kui lihtsalt tarbijatele mõeldud vestlusrobotile.
IBM watsonx.ai pakub versioonitud REST API-sid ning ametlikke Pythoni ja Node.js-i SDK-sid vundamentmudelitega vestlemiseks, teksti genereerimiseks, voogedastuseks, tööriistade kutsumiseks, struktureeritud JSON-i töötlemiseks, teatud mudelite puhul pildisisendi kasutamiseks, failide ja agentidega töötamiseks, manusteks, ümberjärjestamiseks, dokumentide ekstraheerimiseks ning mudelite häälestamiseks. Juurdepääsuks on vaja IBM Cloudi autentimist ja tavaliselt ka projekti või ruumi identifikaatorit. Hinnakujundus ühendab paketi- ja kasutuspõhised tasud, samas kui piirangud ja võimalused erinevad mudeli, piirkonna ja juurutuse järgi.

Mis on IBM watsonx.ai API?

IBM watsonx.ai API on IBM-i ettevõtetele mõeldud tehisintellektiplatvormi arendajaliides. Selle abil saab rakendus saata toetatud alusmudelitele viipasid ja sõnumeid, vastu võtta genereeritud vastuseid ning kasutada seotud tehisintellekti toiminguid, näiteks tekstiembedding'uid, tulemuste ümberjärjestamist, dokumentide ekstraheerimist, hindamist, prognoosimist ja mudelite häälestamist.

Põhiliides on versioonitud REST API. IBM pakub ka ametlikku ibm-watsonx-ai Pythoni paketti ja @ibm-cloud/watsonx-ai Node.js-i SDK-d. Päringutes määratakse mudel tavaliselt väärtusega model_id ning IBM Cloudi projekt või juurutuskontekst väärtusega project_id või mõne töövoo puhul ruumi identifikaatoriga.

watsonx.ai on mõeldud eelkõige ettevõtete rakendustele, mitte igapäevaseks vestlusroboti kasutamiseks. See sobib hästi meeskondadele, kes loovad hallatud siseabilisi, otsinguga täiendatud genereerimise süsteeme, tehisintellekti agente, koodigeneraatoreid, dokumenditöövooge, masinõpperakendusi ning rakendusi, mis vajavad IBM Cloudi, hübriidpilve või valitud kohapealse juurutamise võimalusi.

Kuidas saada juurdepääs ja mandaadid?

Alustuseks looge IBM Cloudi konto või kasutage olemasolevat kontot ning aktiveerige toetatud piirkonnas vajalik watsonx.ai teenus. Olenevalt tootest ja paketist võib juurdepääs olla saadaval watsonx.ai SaaS-keskkonna, IBM Cloudi, AWS-i või mõne muu toetatud ettevõtetele mõeldud juurutuslahenduse kaudu.

  1. Valige toetatud piirkond ning aktiveerige watsonx.ai või watsonx.ai Runtime.
  2. Avage watsonx.ai arendajate juurdepääsu jaotis ning märkige üles piirkondlik teenuse lõpp-punkt.
  3. Looge IBM Cloudi API-võti ja salvestage see keskkonnamuutujasse või saladuste haldurisse, mitte rakenduse lähtekoodi.
  4. Märkige üles valitud toimingu jaoks vajalik projekti ID või juurutusruumi identifikaator.
  5. Valige alusmudelite kataloogist praegu saadaolev mudel ning kontrollige selle toetatud funktsioone.

Toorete HTTP-päringute korral vahetatakse IBM Cloudi API-võti lühiajalise IAM-i juurdepääsuloa vastu. Saadud luba saadetakse Authorization: Bearer päises. SDK-d võivad autentimist lihtsustada, kuid rakendus vajab endiselt õiget teenuse URL-i, projekti konteksti ja mudeli identifikaatorit.

Mudeli ja API-toimingu valimine

Uue vestlus- või tekstigeneratsioonirakenduse puhul alustage praegusest tekstivestluse API-st, POST /ml/v1/text/chat, või selle SDK-ekvivalendist. See toiming on mõeldud sõnumitele, mille rollid on näiteks system, user ja assistant. Valitud mudel peab toetama funktsioone, mida kavatsete kasutada.

Otse alusmudeliga järeldamine erineb konkreetse juurutusega seotud järeldamisest. Kataloogis olevat mudelit saab kutsuda standardse mudeli järeldamise tee kaudu, samas kui projekti või juurutusruumi juurutatud mudel võib vajada juurutusepõhist lõpp-punkti. Prompt Lab ja praegune API viitedokumentatsioon aitavad määrata valitud mudeli jaoks sobiva päringu vormi.

Mudelite võimalused ei ole ühesugused. Enne rakenduse loomist kontrollige, kas valitud mudel toetab vestlust, visuaalset sisendit, voogedastust, tööriistu, JSON-väljundit, häälestamist, kontekstipiiranguid ja teie rakenduses kasutatavaid parameetreid. Saadavus võib sõltuda mudelist, piirkonnast, paketist ja juurutuse tüübist.

Esimese päringu tegemine REST-i abil

Järgmine näide kasutab praegust tekstivestluse mustrit. Selles vahetatakse IBM Cloudi API-võti IAM-i loa vastu ja saadetakse seejärel vestluspäring piirkondlikule watsonx.ai lõpp-punktile. Versiooni päringuparameeter on nõutav, et IBM saaks API-t edasi arendada, säilitades samal ajal versioonipõhise käitumise.

set -euo pipefail

: "${IBM_CLOUD_API_KEY:?Set IBM_CLOUD_API_KEY}"
: "${WATSONX_PROJECT_ID:?Set WATSONX_PROJECT_ID}"

WATSONX_URL="${WATSONX_URL:-https://us-south.ml.cloud.ibm.com}"
WATSONX_MODEL_ID="${WATSONX_MODEL_ID:-ibm/granite-4-h-small}"

TOKEN=$(curl --fail-with-body -sS -X POST 
  "https://iam.cloud.ibm.com/identity/token" 
  -H "Content-Type: application/x-www-form-urlencoded" 
  --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" 
  --data-urlencode "apikey=${IBM_CLOUD_API_KEY}" 
  | python -c 'import json,sys; print(json.load(sys.stdin)["access_token"])')

curl --fail-with-body -sS -X POST 
  "${WATSONX_URL}/ml/v1/text/chat?version=2025-02-11" 
  -H "Authorization: Bearer ${TOKEN}" 
  -H "Content-Type: application/json" 
  -H "Accept: application/json" 
  -d "$(cat <<JSON
{
  "model_id": "${WATSONX_MODEL_ID}",
  "project_id": "${WATSONX_PROJECT_ID}",
  "messages": [
    {"role": "system", "content": "You are a concise technical assistant."},
    {"role": "user", "content": "Explain what an API gateway does in one paragraph."}
  ],
  "max_tokens": 200,
  "temperature": 0.2
}
JSON
)"

Näites eeldatakse, et IBM_CLOUD_API_KEY ja WATSONX_PROJECT_ID on juba määratud. Muutke WATSONX_URL piirkonnale, kus teenus on aktiveeritud, ning muutke WATSONX_MODEL_ID mudelile, mis on kontol praegu saadaval.

API vastuse mõistmine

Edukas vestlusvastus sisaldab kogumit choices. Genereeritud assistendi sõnum loetakse tavaliselt väärtusest choices[0].message.content. Rakendused ei tohiks eeldada, et kõik vastused on identsed: voogedastusvastused saabuvad järk-järgult, tööriistakutsed kasutavad funktsiooniteavet sisaldavaid sõnumivälju ning veavastuseid tuleb käsitleda eraldi.

Tootmiskood peaks kontrollima HTTP olekukoode ning säilitama tõrkeotsingu jaoks kasulikku päringu- või korrelatsiooniteavet, logimata samal ajal API-võtmeid või tundlikku viibateksti. Olenevalt lõpp-punktist, mudelist ja teenuse konfiguratsioonist võib vastus sisaldada ka kasutusteavet või muid metaandmeid.

Kuidas watsonx.ai API hinnastamine toimib?

watsonx.ai ühendab paketitasud kasutuspõhiste tasudega. Alusmudeli järeldamist võidakse mõõta ressursiühikutes, mis vastavad 1000 sisend- ja väljundmärgile, samas kui mõne mudeli ja juurutusrežiimi eest võetakse tunnipõhist tasu. IBM pakub tasuta mänguväljaku- või proovikasutuse mahtusid, Essentials pay-as-you-go paketti ning Standardi ettevõttepaketti.

Esitatud hinnateave näitab Standardi avaldatud alustava eksemplari hinnana 1110 USA dollarit kuus, kuid see ei ole kõigi API töökoormuste puhul ühesugune kulu. Mudeli kasutus, maht, majutus, häälestamine, teksti ekstraheerimine ja muud funktsioonid võivad lisada eraldi tasusid. Hinnad ja saadavus sõltuvad riigist, piirkonnast, mudelist, GPU konfiguratsioonist, paketist ja teenuse asukohast, seega vaadake enne tootmislahenduse kavandamist IBM-i praegust hinnakirja.

Arendajatele saadaolevad põhivõimalused

  • Vestlus ja teksti genereerimine: saatke toetatud alusmudelitele vestlus- või juhistepõhiseid sõnumeid.
  • Voogedastus: saate järk-järgult saabuvaid väljundsündmusi, selle asemel et oodata kogu vastust, mis võib interaktiivsetes rakendustes parandada tajutavat reageerimiskiirust.
  • Tööriista- või funktsioonikutsed: määrake funktsioonid, mida mudel saab valida, ning täitke need JSON-argumentidega. Välist funktsiooni käivitab rakendus, mitte mudel, ja rakendus peaks selle argumente valideerima.
  • Struktureeritud vastused: ühilduvate mudelite ja API-de puhul saab JSON-objekti väljundit taotleda väärtusega response_format. Juhitud JSON või skeemipõhised juhtelemendid võivad sõltuda mudelist või lüüsiteest, seega kontrollige enne rangetele skeemidele tuginemist nende tuge.
  • Valitud multimodaalne sisend: visioonivõimelised mudelid saavad töödelda pildisisu, kui mudel ja päringu vorming seda toetavad. See ei tähenda, et kõik watsonx.ai mudelid pilte aktsepteerivad.
  • Failipõhised töövood: faile saab üles laadida või registreerida andmevarade või ühendustena dokumentide ekstraheerimiseks, otsinguks, häälestamiseks ja seotud töövoogudeks. API-t ei tohiks käsitleda universaalse mitmeosalise failide sissevõtu lõpp-punktina.
  • Agendid: watsonx.ai agenditöövood ja Agent Lab toetavad rakendusi, mis kasutavad tööriistu ja väliseid andmeid.
  • Muud toimingud: API-d ja platvormi töövood hõlmavad embedding'uid, tulemuste ümberjärjestamist, dokumentide teksti ekstraheerimist, hindamist, aegridade prognoosimist ja alusmudelite häälestamist.

Pythoni SDK kasutamine

Ametlik Pythoni SDK on kasulik märkmike, andmeteaduse töövoogude, järeldamise ja häälestamisega seotud arenduse jaoks. Järgmises näites kasutatakse praegust ModelInference liidest ning mandaate hoitakse keskkonnamuutujates.

import os
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference

credentials = Credentials(
    url=os.getenv("WATSONX_URL", "https://us-south.ml.cloud.ibm.com"),
    api_key=os.environ["IBM_CLOUD_API_KEY"],
)

model = ModelInference(
    model_id=os.getenv("WATSONX_MODEL_ID", "ibm/granite-4-h-small"),
    credentials=credentials,
    project_id=os.environ["WATSONX_PROJECT_ID"],
)

response = model.chat(
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "What is an API gateway?"},
    ],
    params={"max_tokens": 200, "temperature": 0.2},
)

print(response["choices"][0]["message"]["content"])

Voogedastuseks pakub SDK funktsiooni chat_stream. Enne sündmuse kuvamist või kliendile edastamist tuleks kontrollida, kas see sisaldab järk-järgult saabuvat sisu. SDK meetodite nimed ja toetatud parameetrid võivad versioonide vahel muutuda, seega hoidke pakett ajakohasena ning vähem levinud toimingute lisamisel tutvuge kehtiva dokumentatsiooniga.

Struktureeritud väljund ja tööriistakutsed

Struktureeritud väljund on kasulik siis, kui rakenduse järgmine osa ootab proosa asemel masinloetavaid andmeid. Ühilduv päring võib sisaldada JSON-objekti tüüpi response_format. Rakendus peaks siiski tagastatud teksti parsima, käsitlema vigast väljundit ning kontrollima, kas valitud mudel toetab soovitud vormingut.

json_response = model.chat(
    messages=[
        {"role": "system", "content": "Return a JSON object with a key named benefits."},
        {"role": "user", "content": "Give two API gateway benefits."},
    ],
    params={
        "response_format": {"type": "json_object"},
        "max_tokens": 200,
    },
)

print(json_response["choices"][0]["message"]["content"])

Tööriistakutsed järgivad teistsugust juhtvoogu. Rakendus edastab funktsiooni nime, kirjelduse ja parameetrite määratluse. Kui mudel funktsiooni taotleb, valideerib rakendus JSON-argumendid, teeb toimingu ja saadab tulemuse vestlusesse tagasi. Ärge lubage mudeli genereeritud argumentidel mööda minna autoriseerimisest, sisendi valideerimisest või ärireeglitest.

Node.js-i ja teiste keelte tugi

IBM pakub JavaScripti ja TypeScripti teenuste jaoks @ibm-cloud/watsonx-ai Node.js-i SDK-d. See pakub watsonx.ai praeguseid toiminguid, näiteks tekstivestlust, ning võib sobida veebitaustateenustele. PHP ja teised keeled saavad REST API-t otse kutsuda standardsete HTTP-klientide, näiteks cURL-i abil; teenusepakkuja spetsiifiline pakett ei ole vajalik.

Prompt Lab on peamine interaktiivne arendajatööriist. See võimaldab viipasid ja mudeleid katsetada ning genereerida koodipaneeli kaudu päringunäiteid. Käsitlege genereeritud näiteid lähtekohana: enne juurutamist kontrollige mudelit, API versiooni, lõpp-punkti, parameetreid ja SDK süntaksit kehtiva dokumentatsiooni põhjal.

Voogedastus, failid ja multimodaalsed päringud

Voogedastus sobib kasutajale suunatud vestlusliidestele, sest teksti saab kuvada selle saabumise ajal. See ei kõrvalda mudeli- ega võrgulatentsust ning rakendused vajavad endiselt tühistamise, ajalõpu ja osalise vastuse käsitlemist.

Failitöövood põhinevad üldjuhul IBM Cloudi andmevaradel, ühendustel või muudel registreeritud ressurssidel. See on kasulik dokumentide ekstraheerimiseks, otsinguks ja häälestamiseks, kuid toob kaasa projekti salvestusruumi, õiguste ja säilitamisega seotud kaalutlused. Veenduge, kuidas valitud töövoog faili salvestab ja sellele juurde pääseb, selle asemel et eeldada, et faili töödeldakse ainult mälus.

Pildisisend on saadaval ainult valitud visioonivõimeliste mudelite puhul. Enne pildipõhise funktsiooni loomist kontrollige mudelipõhist sisuvormingut ja piirkondlikku saadavust. Esitatud teabe põhjal ei paku watsonx.ai kontrollitud esimese osapoole üldist pildi- ega videogenereerimise toodet.

Olulised piirangud ja tootmiskasutuse kaalutlused

Kõigile watsonx.ai mudelitele ja juurutustele ei kehti ühtset avalikku päringumäära ega kindlat latentsusväärtust. Kvoodid ja päringupiirangud sõltuvad IBM Cloudi kontost, teenusepaketist, piirkonnast, mudelist, juurutusest ja lüüsi konfiguratsioonist. Latentsus sõltub mudelist, viibast ja väljundi suurusest, järjekorrast, piirkonnast ning sellest, kas järeldamine toimub jagatud või pühendatud keskkonnas.

  • Käsitlege ajutisi HTTP 429, 503 ja 504 vastuseid piiratud arvu korduskatsete ja eksponentsiaalse viivitusega.
  • Jälgige märkide või ressursiühikute kasutust ning määrake rakendustaseme eelarved.
  • Hoidke API-võtmed, projekti identifikaatorid ja juurutuse konfiguratsioon lähtekontrollist väljas.
  • Kasutage piirkondlikku lõpp-punkti, mis vastab andmete asukoha ja juurutuse nõuetele.
  • Kontrollige iga valitud mudeli puhul konteksti, väljundi, voogedastuse, tööriistade, visiooni ja JSON-i tuge.
  • Testige tõrkehaldust vigaste päringute, kättesaamatute mudelite, kvoodi ammendumise ja teenusekatkestuste korral.
  • Vaadake üle salvestatud varade, seire-, hindamis- ja haldusfunktsioonide säilitamise ning juurdepääsu käitumine.

IBM märgib, et watsonx-i klientide viipasid, häälestusandmeid, treeningandmeid ja alusmudelite väljundeid ei kasutata IBM-i arendatud mudelite treenimiseks ega täiustamiseks. Salvestatud projekti varadel, seadistatud seiresüsteemidel, ühendatud andmeallikatel ja kolmandate osapoolte mudelipakkujatel võivad siiski olla eraldi juurdepääsu-, säilitamis- ja lepingutingimused. Täpse juurutuse kohta vaadake kehtivat teenusedokumentatsiooni.

Eelised ja piirangud

watsonx.ai peamine eelis on selle ettevõtetele suunatud ulatus. See ühendab juurdepääsu mudelitele IBM Cloudi IAM-i, piirkondlike ja hübriidjuurutuse võimaluste, halduse, seire, andmeühenduste, agentide, häälestamise ja laiemate masinõppetoimingutega. Ametlikud REST-i, Pythoni ja Node.js-i liidesed võimaldavad platvormi olemasolevatesse teenustesse integreerida, selle asemel et kasutada ainult veebiliidest.

Kompromissiks on keerukus. Arendajad peavad mõistma projekte või ruume, piirkondlikke lõpp-punkte, IAM-i lube, versioonitud päringuid ja mudelipõhist käitumist. Hinnastamine on sageli kasutuspõhine või ettevõtetele suunatud ning funktsioonid võivad pakettide, piirkondade ja juurutusrežiimide lõikes erineda. Meeskonnad, kes otsivad lihtsat ja odavat tarbijatele mõeldud vestlusrobotit või ühtset API-t, mille võimalused on kõigi mudelite puhul samad, võivad leida, et platvorm on nende vajaduste jaoks liiga mahukas.

Millal seda API-t kasutada?

Valige watsonx.ai API, kui vajate hallatud ettevõtete tehisintellekti arendust, IBM Granite'i või valitud kolmandate osapoolte mudeleid, piirkondlikku või hübriidpilve juurutust, otsingu- ja dokumenditöövooge, agente, häälestamist, mudeli elutsükli haldust või integratsiooni IBM Cloudi projektidega.

See on kehvem valik, kui vajadus on seotud juhusliku isikliku vestluse, minimaalse tarbijatele suunatud integratsiooni, eraldiseisva pildi- või videogenereerimise või prognoositava ühe hinnaga API-ga, mille võimalused on kõigi mudelite puhul ühesugused. Sellistel juhtudel võivad konto seadistamine, teenuse valimine ja kasutuspõhine hinnastamine kaaluda üles platvormi ettevõtetele mõeldud funktsioonide eelised.

Allikad 11