Előrejelzés

POST http://localhost:5000/v2/clients/{client-id}/predict

Szerezze be a javasolt következő műveletet egy exportált Bonsai-agyból.

Elérésiút-paraméterek

client-id

Típus Minimális hossz Maximális hossz Használat
UTF-8 sztring 1 64 SZÜKSÉGES

Egy felhasználó által definiált sztring, amely egyedileg azonosítja az API-kérelmet igénylést igénylést elkért ügyfelet. Az ugyanattól az ügyféltől származó későbbi kérelmeknek ugyanazt az azonosító sztringet kell használniuk.

Fontos

Az ügyfél-címnek érvényes HTTP-sztringeknak kell lennie, amelyek a végponti URL-cím részeként is használhatók. Például az olyan speciális karaktereket, mint a és az eltoló karakterek, megfelelően URL-kódolásúnak kell lennie a következő / %2F formátumban: (a / esetén ) vagy %20 (szóközök esetén).

HTTP-válaszok

Válaszkód Válasz típusa Description
200 (OK) Releváns válaszobjektum POST a hívás sikeresen befejeződött
400 (Hibás kérés) Hibaüzenet A kérésben valami helytelenül van formázva
500 (belső hiba) Hibaüzenet Nem kezelt kivétel történt
503 (A szolgáltatás nem érhető el) Hibaüzenet Az erőforrás-korlátozások miatt az agy nem válaszolt

Objektum kérése

Bonsai az agy betanításához használt inkling fájl alapján testreszabja az alábbi JSON-sablont az exportálás során.

{
  'state': [ 
    {
      'StateName1' : 'StateData1',
      'StateName2' : {
        'Subfield1': 'SubData1'
        'Subfield2': 'SubData2'
      },
      'StateName3' : 'StateData3',
      ...
      'StateNameN' : 'StateDataN',
    }
  ]
}

Sablontokenek

Jogkivonat Description
StateName VÁLASZTHATÓ. Fogalom bemeneti változójának neve.

A kérés törzse

state
SZÜKSÉGES

Állapotadatok, amelyek alapján az agynak az értékeléshez használnia kell. Ha az állapotadatokat a megfelelő állapotnév mező nélkül adja meg, az értékeknek ugyanabban a sorrendben kell megjelenniük, mint a megfelelő inkling fájlban.

Válaszobjektum

Bonsai az agy betanításához használt inkling fájl alapján testreszabja az alábbi JSON-sablont az exportálás során.

{
  'concepts': {
    'ConceptName1': {
      'action' : {
        'ActionName1' : 'Result1',
        'ActionName2' : 'Result2',
        'ActionName3' : {
          'Subfield1': 'SubResult1',
          'Subfield2': 'SubResult2'
        },
        ...
        'ActionNameN' : 'ResultN'
      },
    },
    'ConceptName2': {
      'action': [Result1, Result2, ... ResultN]
    }
    ...
    'ConceptNameN': {
      'action' : {
        'ActionName1' : 'Result1'
      }
    }
  }
}

Sablontokenek

Jogkivonat Description
ActionName A koncepció kimeneti változójának neve.
ConceptName Inkling concept name (Inkling név).

Választörzs

concepts

A művelet eredményei a Bonsai agyból, fogalomnév szerint rendezve.


action

A koncepció kimeneti változói és a hozzájuk tartozó eredményadatok listája.

Példák

Tegyük fel, hogy a következő definíciók vannak a inkling fájlban:

inkling "2.0"

using Math
using Goal

# Pole and track constants
const TrackLength = 0.5
const MaxPoleAngle = (12 * Math.Pi) / 180

# State info from the simulator
type SimState {
  CartPosition: number,         # Position of cart in meters
  CartVelocity: number,         # Velocity of cart in meters/sec
  PoleAngle: number,            # Current angle of pole in radians
  PoleAngularVelocity: number, # Angular velocity of the pole in radians/sec
}

# Possible action results
type SimAction {
  # Amount of force in x direction to apply to the cart.
  Command: number<-1 .. 1>
}

# Define a concept graph with a single concept
graph (input: SimState): SimAction {
  concept BalancePole(input): SimAction {
    curriculum {
      source simulator (Action: SimAction): SimState {
        package "Cartpole"
      }

      # The objective of training is expressed as a goal with two
      # objectives: keep the pole from falling over and stay on the track
      goal (State: SimState) {
        avoid `Fall Over`:
          Math.Abs(State.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
        avoid `Out Of Range`:
          Math.Abs(State.cart_position) in Goal.RangeAbove(TrackLength / 2)
      }
    }
  }
}
import requests
import json

# General variables
url = "http://localhost:5000"
predictPath = "/v2/clients/{clientId}/predict"
headers = {
  "Content-Type": "application/json"
}

# Set a random UUID for the client.
# The same client ID will be used for every call
myClientId = str(uuid.uuid4())

# Build the endpoint reference
endpoint = url + predictPath.replace("{clientId}", myClientId)

# Set the request variables
requestBody = {
  "state": {
    "CartPosition": 3,
    "CartVelocity": 1.5,
    "PoleAngle": 0.75,
    "PoleAngularVelocity": 0.1
  }
}

# Send the POST request
response = requests.post(
            endpoint,
            data = json.dumps(requestBody),
            headers = headers
          )

# Extract the JSON response
prediction = response.json()

# Access the JSON result: full response object
print(prediction)

# Access the JSON result: all concepts
print(prediction['concepts'])

# Access the JSON result: specific field
print(prediction['concepts']['BalancePole']['action']['Command'])