The Wyvern SDK Reference
host
- The host to run the service on. Defaults to localhost.port
- The port to run the service on. Defaults to 5000.route_components
- The list of route components to registerroute_components
- The list of route components to register. Defaults to None.realtime_feature_components
- The list of realtime feature components to register. Defaults to None.host
- The host to run the service on. Defaults to localhost.port
- The port to run the service on. Defaults to 5000.WyvernService
- The generated Wyvern serviceroute_components
- The list of route components to registerrealtime_feature_components
- The list of realtime feature components to register. Defaults to None.host
- The host to run the service on. Defaults to localhost.port
- The port to run the service on. Defaults to 5000.route_components
- The list of route components to register. Defaults to None.realtime_feature_components
- The list of realtime feature components to register. Defaults to None.host
str, optional - The host to run the service on. Defaults to localhost.port
int, optional - The port to run the service on. Defaults to 5000.FastAPI
- The generated FastAPI appENVIRONMENT
- The environment the service is running in. Default to development
.
PROJECT_NAME
- The name of the project. Default to default
.
REDIS_HOST
- The host of the redis instance. Default to localhost
.
REDIS_PORT
- The port of the redis instance. Default to 6379
.
WYVERN_API_KEY
- The API key for the Wyvern API. Default to ""
, empty string.
WYVERN_BASE_URL
- The base url of the Wyvern API. Default to https://api.wyvern.ai
WYVERN_ONLINE_FEATURES_PATH:
The path to the online features endpoint. Default to /feature/get-online-features
.
WYVERN_HISTORICAL_FEATURES_PATH:
The path to the historical features endpoint. Default to /feature/get-historical-features
.
WYVERN_FEATURE_STORE_URL
- The url of the Wyvern feature store. Default to https://api.wyvern.ai
.
SNOWFLAKE_ACCOUNT
- The account name of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_USER
- The username of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_PASSWORD
- The password of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_ROLE
- The role of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_WAREHOUSE
- The warehouse of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_DATABASE
- The database of the Snowflake instance. Default to ""
, empty string.
SNOWFLAKE_OFFLINE_STORE_SCHEMA
- The schema of the Snowflake instance. Default to PUBLIC
.
AWS_ACCESS_KEY_ID
- The access key id for the AWS instance. Default to ""
, empty string.
AWS_SECRET_ACCESS_KEY
- The secret access key for the AWS instance. Default to ""
, empty string.
AWS_REGION_NAME
- The region name for the AWS instance. Default to us-east-1
.
FEATURE_STORE_TIMEOUT
- The timeout for the feature store. Default to 60
seconds.
SERVER_TIMEOUT
- The timeout for the server. Default to 60
seconds.
REDIS_BATCH_SIZE
- The batch size for the redis instance. Default to 100
.
WYVERN_INDEX_VERSION
- The version of the Wyvern index. Default to 1
.
MODELBIT_BATCH_SIZE
- The batch size for the modelbit. Default to 30
.
EXPERIMENTATION_ENABLED
- Whether experimentation is enabled. Default to False
.
EXPERIMENTATION_PROVIDER
- The experimentation provider. Default to ExperimentationProvider.EPPO.value
.
EPPO_API_KEY
- The API key for EPPO (an experimentation provider). Default to ""
, empty string.
FEATURE_STORE_ENABLED
- Whether the feature store is enabled. Default to True
.
EVENT_LOGGING_ENABLED
- Whether event logging is enabled. Default to True
.
experiment_id
- The experiment id.entity_id
- The entity id.result
- The result of the experiment. Can be None.timestamp
- The timestamp of the event.metadata
- The metadata of the event such as targeting parameters etc.has_error
- Whether the request has errored or not.event_type
- The event type. This is always EventType.EXPERIMENTATION.Note
- This method is overridden to do nothing because the assignment logger we set in Eppo already
handles result logging upon assignment.
RuntimeError
- If there is no current request contextrequest
- The request context to setproject
str - Name of the projectpath
str - path to the wyvern app. Default path is pipelines.main:apphost
str - Host to run the application on. Default host is 0.0.0.0port
int - Port to run the application on. Default port is 5001func
- The function to be wrappedfeatures
- A list of feature names.entities
- A dictionary or pandas DataFrame of entity names and their values.
some requirements of entities:
candidate_score
- The score of the candidatecandidate_order
- The order of the candidate in the list of candidatespagination_fields
- The pagination fields that are used to compute the pagination.entities
- The entities that need to be paginated.user_page_size
- Zero-indexed user facing page numberuser_page
- Number of items per user facing pagecandidate_page_size
- This is the size of the candidate page.candidate_page
- This is the zero-indexed page number for the candidate setNAME
- The name of the realtime feature component. This is used to identify the realtime feature component.real_time_features
- A list of all the realtime feature components.component_registry
- A dictionary that maps the name of the realtime feature component to the realtime featurename
: Name of the componentoutput_feature_names
: features outputted by this real-time feature<component_name>:<feature_name>
<component_name>:<feature_name>
identifiers
- List of identifiers for which features are to be retrieved.feature_names
- List of feature names to be retrieved. Feature names are of the form
<feature_view_name>:<feature_name>
.<feature_view_name>:<feature_name>
. The feature values are of type WyvernFeature
which is a union of all the possible feature types. The feature types are defined in wyvern/wyvern_typing.py
.
The FeatureStoreRetrievalComponent is a singleton and can be accessed via feature_store_retrieval_component
.
The FeatureStoreRetrievalComponent is configured via the following environment variables:
identifiers
- List of identifiers for which features are to be retrieved.feature_names
- List of feature names to be retrieved.fetch_features_from_feature_store
which handles exceptions and returns an empty FeatureMap in case of
an exception.
request
- The request that is used to retrieve features. This is used to retrieve the entities and
identifiers that are needed to compute the features.requested_feature_names
- The feature names that are
requested. This is used to filter out the real-time features that are calculated instead of
retrieved from the feature store. ie: product_fv:FEATURE_PRODUCT_AMOUNT_PAID_LAST_15_DAYS
feature_overrides
- This is used to override the default real-time features.*upstreams
- The upstream components to this component.name
- The name of this component.handle_exceptions
- Whether to handle feature store exceptions. Defaults to False.
If True, missing feature values will be None instead of raising exceptions.
If False, exceptions will be raised.feature_identifier
- The identifier of the feature.feature_identifier_type
- The type of the feature identifier.feature_name
- The name of the feature.feature_value
- The value of the feature.event_type
- The type of the event. Defaults to EventType.FEATURE.request
- The request to log feature events for.feature_map
- The feature map to log.model_name
- The name of the modelmodel_output
- The output of the modelentity_identifier
- The identifier of the entity that was used to generate the model output. This is optional.entity_identifier_type
- The type of the identifier of the entity that was used to generate the model output.
This is optional.event_type
- The type of the event. This is always EventType.MODEL.data
- A dictionary mapping entity identifiers to model outputs. The model outputs can also be None.model_name
- The name of the model. This is optional.identifier
- The identifier of the entity.request
- The request that will be used to generate the model input.entities
- A list of entities that will be used to generate the model input.AUTH_TOKEN
- A class variable that stores the auth token for Modelbit.URL
- A class variable that stores the url for Modelbit.*upstreams
- A list of upstream components.name
- A string that represents the name of the model.auth_token
- A string that represents the auth token for Modelbit.url
- A string that represents the url for Modelbit.WyvernModelbitTokenMissingError
- If the auth token is not provided.API_VERSION
- the version of the API. This is used in the API routing. The default value is “v1”.PATH
- the path of the API. This is used in the API routing.REQUEST_SCHEMA_CLASS
- the class of the request schema. This is used to validate the request data.RESPONSE_SCHEMA_CLASS
- the class of the response schema. This is used to validate the response data.API_NAME
- the name of the API. This is used in the API routing. If not provided, the name of the
APIRouteComponent will be used.scored_candidates
- The list of scored candidatesentity_keys
- The set of entity keys (unique identifiers) to boostboost
- The boost factorentity_key_mapping
- A lambda function that takes in a candidate entity and
returns the field we should apply the boost tomultiplicative
- Whether to apply the boost with multiplication or addition - true indicates it is
multiplication and false indicates it is additioncsv_file
- The path to the CSV filemultiplicative
- Whether to apply the boost with multiplication or addition - true indicates it is
multiplication and false indicates it is additionbusiness_logic_pipeline_order
- The order of the business logic pipeline that this event occurred inbusiness_logic_name
- The name of the business logic component that this event occurred inold_score
- The old score of the entitynew_score
- The new score of the entityrequest
- The request that the business logic layer is being asked to perform business logic onscored_candidates
- The candidates that the business logic layer is being asked to perform business logic onrequest
- The request that the business logic layer was asked to perform business logic onadjusted_candidates
- The candidates that the business logic layer performed business logic oninput
- The input to the business logic pipelineoutput
- The output of a business logic componentpipeline_index
- The index of the business logic component in the business logic pipelineupstream_name
- The name of the business logic componentrequest_id
- The request id of the request that the business logic component was called inold_scores
- The old scores of the candidates that the business logic component was called onscored_candidates
- The list of scored candidatesentity_pins
- The map of entity keys (unique identifiers) to pin, and their pinning positionentity_key_mapping
- A lambda function that takes in a candidate entity and
returns the field we should apply the pin toallow_down_ranking
- Whether to allow down-ranking of candidates that are not pinnedquery
- the query entitycandidates
- the list of candidate entitiescandidate_id
- the identifier of the candidateranked_score
- the ranked score of the candidateranked_candidates
- the list of ranked candidatesevents
- the list of logged eventsPATH
- the path of the API. This is used in the API routing. The default value is “/ranking”.request
- the ranking requestimpression_score
- The score of the impression.impression_order
- The order of the impression.event_type
- The type of the event. This is always EventType.IMPRESSION.request
- The request that was made.scored_impressions
- The scored impressions. This is a list of scored candidates.
Each scored candidate has an entity and a score.input
- The input to the component. This contains the request and the scored impressions.request_id
- The request ID of the request that triggered the event.api_source
- The API source of the request that triggered the event.event_timestamp
- The timestamp of the event.event_type
- The type of the event.event_data
- The data associated with the event. This is a generic type that can be any subclass of BaseModel.entity_identifier
- The identifier of the entity that the event is associated with.entity_identifier_type
- The type of the entity identifier.event_type
- The type of the event. This is always EventType.CUSTOM.input
- List of tuples of embeddings to compute cosine similarity for.input
- A list of candidates to be sorted. Each candidate must have a score.descending
- Whether to sort in descending order. Defaults to True.message
- The error message.error_code
- The error code.customer_specific
- Whether the stream name should be customer specificenv_specific
- Whether the stream name should be environment specificstream_name
KinesisFirehoseStream - The stream to put records torecord_generator
List[Callable[[], List[BaseModel]]] - A list of functions that return a list of recordsstream_name
KinesisFirehoseStream - The stream to put records torecords
List[BaseModel] - A list of recordsevent_generator
- A function that returns a list of events to be logged.events
- A list of custom events to be logged.route_component
- The route component to register.WyvernRouteRegistrationError
- If the route component is not a subclass of APIRouteComponent.method
- The HTTP method of the requesturl
- The full URL of the requesturl_path
- The path of the URL of the requestjson
- The JSON body of the request, represented by pydantic modelheaders
- The headers of the requestentity_store
- A dictionary that can be used to store entities that are created during the requestevents
- A list of functions that return a list of LoggedEvents. These functions are called at the end of
the request to log events to the event storefeature_map
- A FeatureMap that can be used to store features that are created during the requestrequest_id
- The request ID of the requestjson
- The JSON body of the request, represented by pydantic modelreq
- The FastAPI requestrequest_id
- The request ID of the requestentities
- A dictionary of entity name to entity value.features
- A list of feature names.full_feature_names
- A boolean indicating whether to return full feature names. If True, the feature names will
be returned in the format <feature_view_name>__<feature_name>
. If False, only the feature names will be
returned.entities
- A dictionary of entity name to entity value.timestamps
- A list of timestamps. Used to retrieve historical features at specific timestamps. If not provided,
the latest feature values will be returned.features
- A list of feature names.full_feature_names
- A boolean indicating whether to return full feature names. If True, the feature names will
be returned in the format <feature_view_name>__<feature_name>
. If False, only the feature names will be
returned.entities
- A dictionary of entity name to entity value.features
- A list of feature names.results
- A list of dictionaries containing feature values.end_date
- The end date of the materialization window. Defaults to the current time.feature_views
- A list of feature view names to materialize. If not provided, all feature views will be
materialized.start_date
- The start date of the materialization window. Defaults to None, which will use the start date of
the feature view.request_ids
- A list of request IDs.entity_identifiers
- A list of entity identifiers.feature_names
- A list of feature names.path
- Path to the feature store repo.path
- Path to the feature store repo.host
- Host to run the feature store on.port
- Port to run the feature store on.full_feature_names
- a list of full feature names.full_feature_names
- a list of full feature names.request_ids
- a list of request ids.entities
- a dictionary of entity names and their values.requests
- a dictionary of entity types and their corresponding requests.entity_identifier_type
- the entity type of the request. E.g. “product__query”request
- the request object.context
- the snowflake connection context.full_feature_names
- a list of full feature names.full_feature_names
- a list of full feature names.store
- the feast feature store.store
- the feast feature store.feature_names
- a list of feature names.entity_values
- a dictionary of entity names and their values.timestamps
- a list of timestamps for getting historical features at those timestamps.store
- the feast feature store.requests
- a list of historical feature requests.store
- the feast feature store.request
- a historical feature request.sort_key
- The key to sort on.sort_field
- The field to sort on.sort_order
- The order to sort on. Defaults to desc._all_entities
- a list of all the entities under the tree_all_identifiers
- a list of all the identifiers under the treeWyvernEntity
— a WyvernDataModel
can have many
entities within it, it itself may not be an entity
class WyvernField(pydantic.Field)
to represent the “entity ide field”, which will reference to the nested entity field name
brand_id: Optional[str]
and brand: Optional[Brand]
,
as the hydrated entity. We fetch the brand_id for the product from Wyvern Index,
as the first hydration step for Product entity, then we fetch brand entity from Wyvern Index,
as the second hydration step
query
- the query stringIdentifier
- the identifier for this entity with identifier_type=SimpleIdentifierType.QUERY.product_id
- the product idIdentifier
- the identifier for this entity with identifier_type=SimpleIdentifierType.PRODUCT.user_id
- the user idIdentifier
- the identifier for this entity with identifier_type=SimpleIdentifierType.USER.request_id
- The request id.include_events
- Whether to include events in the response.Identifier
- The identifier for the request. The identifier type is “request”.identifier
- The identifier of the entity.features
- A dictionary of feature names to feature values.entity
- The candidate entity.score
- The score of the candidate entity. Defaults to 0.0.candidates
- The list of candidate entities.python wyvern/examples/example_business_logic.py
Json representation of the request: