mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-25 00:16:29 +02:00
54 lines
No EOL
1.2 KiB
Python
54 lines
No EOL
1.2 KiB
Python
from typing import List, Optional, Union, Any, Literal
|
|
from pydantic import BaseModel
|
|
|
|
class SystemMessage(BaseModel):
|
|
role: Literal['system']
|
|
content: str
|
|
|
|
class UserMessage(BaseModel):
|
|
role: Literal['user']
|
|
content: str
|
|
|
|
class AssistantMessage(BaseModel):
|
|
role: Literal['assistant']
|
|
content: str
|
|
agenticSender: Optional[str] = None
|
|
agenticResponseType: Literal['internal', 'external']
|
|
|
|
class FunctionCall(BaseModel):
|
|
name: str
|
|
arguments: str
|
|
|
|
class ToolCall(BaseModel):
|
|
id: str
|
|
type: Literal['function']
|
|
function: FunctionCall
|
|
|
|
class AssistantMessageWithToolCalls(BaseModel):
|
|
role: Literal['assistant']
|
|
content: Optional[str] = None
|
|
tool_calls: List[ToolCall]
|
|
agenticSender: Optional[str] = None
|
|
agenticResponseType: Literal['internal', 'external']
|
|
|
|
class ToolMessage(BaseModel):
|
|
role: Literal['tool']
|
|
content: str
|
|
tool_call_id: str
|
|
tool_name: str
|
|
|
|
ApiMessage = Union[
|
|
SystemMessage,
|
|
UserMessage,
|
|
AssistantMessage,
|
|
AssistantMessageWithToolCalls,
|
|
ToolMessage
|
|
]
|
|
|
|
class ApiRequest(BaseModel):
|
|
messages: List[ApiMessage]
|
|
state: Any
|
|
|
|
class ApiResponse(BaseModel):
|
|
messages: List[ApiMessage]
|
|
state: Any |