Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for vercel_ai_sdk_mate.model
# -*- coding: utf-8 -*-
"""
Data model for Vercel AI SDK v5
Reference:
- https://ai-sdk.dev/docs/introduction
- https://ai-sdk.dev/docs/migration-guides/migration-guide-5-0
"""
import typing as T
from pydantic import BaseModel , Field
from .constants import (
RequestBodyTriggerEnum ,
MessageRoleEnum ,
MessagePartTypeEnum ,
)
from .type_defs import (
T_REQUEST_BODY_TRIGGER_TYPE ,
T_MESSAGE_ROLE_TYPE ,
T_MESSAGE_PART_TYPE_TYPE ,
T_MESSAGE_PART_STATE_TYPE ,
T_RECORD_TYPE ,
)
[docs]
class BaseMessagePart ( BaseModel ):
type : T_MESSAGE_PART_TYPE_TYPE = Field ()
[docs]
class TextUIPart ( BaseMessagePart ):
"""
Ref:
- https://ai-sdk.dev/docs/reference/ai-sdk-core/ui-message#textuipart
"""
type : T . Literal [ "text" ] = Field ( default = MessagePartTypeEnum . TEXT . value )
text : str = Field ()
state : T_MESSAGE_PART_STATE_TYPE | None = Field ( default = None )
[docs]
class ReasoningUIPart ( BaseMessagePart ):
"""
Ref:
- https://ai-sdk.dev/docs/reference/ai-sdk-core/ui-message#reasoninguipart
"""
type : T . Literal [ "reasoning" ] = Field ( default = MessagePartTypeEnum . REASONING . value )
text : str = Field ()
state : T_MESSAGE_PART_STATE_TYPE | None = Field ( default = None )
providerMetadata : T_RECORD_TYPE | None = Field ( default = None )
T_PART = T . Union [
TextUIPart ,
ReasoningUIPart ,
]
[docs]
class Message ( BaseModel ):
"""
Ref:
- https://ai-sdk.dev/docs/reference/ai-sdk-core/ui-message
"""
id : str = Field ()
role : T_MESSAGE_ROLE_TYPE = Field ()
parts : list [ T . Annotated [ T_PART , Field ( discriminator = "type" )]] = Field ()
[docs]
class RequestBody ( BaseModel ):
"""
Ref:
- https://ai-sdk.dev/docs/ai-sdk-ui/chatbot#advanced-trigger-based-routing
"""
id : str = Field ()
messages : list [ Message ] = Field ()
trigger : T_REQUEST_BODY_TRIGGER_TYPE = Field ()