@@ -1986,6 +1986,224 @@ class TranscriptionResponseVerbose(OpenAIBaseModel):
19861986 """Extracted words and their corresponding timestamps."""
19871987
19881988
1989+ # ========== Anthropic Messages ========== #
1990+
1991+ # Anthropic Messages API Protocol Definitions
1992+
1993+ class AnthropicContentBlock (OpenAIBaseModel ):
1994+ """Base class for Anthropic content blocks"""
1995+ type : str
1996+
1997+
1998+ class AnthropicTextBlock (AnthropicContentBlock ):
1999+ type : Literal ["text" ] = "text"
2000+ text : str
2001+
2002+
2003+ class AnthropicImageSource (OpenAIBaseModel ):
2004+ type : Literal ["base64" ] = "base64"
2005+ media_type : Literal ["image/jpeg" , "image/png" , "image/gif" , "image/webp" ]
2006+ data : str
2007+
2008+
2009+ class AnthropicImageBlock (AnthropicContentBlock ):
2010+ type : Literal ["image" ] = "image"
2011+ source : AnthropicImageSource
2012+
2013+
2014+ class AnthropicToolUseBlock (AnthropicContentBlock ):
2015+ type : Literal ["tool_use" ] = "tool_use"
2016+ id : str
2017+ name : str
2018+ input : dict [str , Any ]
2019+
2020+
2021+ class AnthropicToolResultBlock (AnthropicContentBlock ):
2022+ type : Literal ["tool_result" ] = "tool_result"
2023+ tool_use_id : str
2024+ content : Optional [Union [str , list [Union [AnthropicTextBlock , AnthropicImageBlock ]]]] = None
2025+ is_error : Optional [bool ] = False
2026+
2027+
2028+ class AnthropicThinkingBlock (AnthropicContentBlock ):
2029+ type : Literal ["thinking" ] = "thinking"
2030+ thinking : str
2031+
2032+
2033+ # Union type for all Anthropic content blocks
2034+ AnthropicContent = Union [
2035+ AnthropicTextBlock ,
2036+ AnthropicImageBlock ,
2037+ AnthropicToolUseBlock ,
2038+ AnthropicToolResultBlock ,
2039+ AnthropicThinkingBlock
2040+ ]
2041+
2042+
2043+ class AnthropicMessage (OpenAIBaseModel ):
2044+ role : Literal ["user" , "assistant" ]
2045+ content : Union [str , list [AnthropicContent ]]
2046+
2047+
2048+ class AnthropicTool (OpenAIBaseModel ):
2049+ name : str
2050+ description : Optional [str ] = None
2051+ input_schema : dict [str , Any ]
2052+
2053+
2054+ class AnthropicToolChoiceAuto (OpenAIBaseModel ):
2055+ type : Literal ["auto" ] = "auto"
2056+ disable_parallel_tool_use : Optional [bool ] = False
2057+
2058+
2059+ class AnthropicToolChoiceAny (OpenAIBaseModel ):
2060+ type : Literal ["any" ] = "any"
2061+ disable_parallel_tool_use : Optional [bool ] = False
2062+
2063+
2064+ class AnthropicToolChoiceNone (OpenAIBaseModel ):
2065+ type : Literal ["none" ] = "none"
2066+
2067+
2068+ class AnthropicToolChoiceTool (OpenAIBaseModel ):
2069+ type : Literal ["tool" ] = "tool"
2070+ name : str
2071+ disable_parallel_tool_use : Optional [bool ] = False
2072+
2073+
2074+ AnthropicToolChoice = Union [
2075+ AnthropicToolChoiceAuto ,
2076+ AnthropicToolChoiceAny ,
2077+ AnthropicToolChoiceNone ,
2078+ AnthropicToolChoiceTool
2079+ ]
2080+
2081+
2082+ class AnthropicThinkingConfig (OpenAIBaseModel ):
2083+ """Base class for thinking configurations"""
2084+ type : str
2085+
2086+
2087+ class AnthropicThinkingConfigEnabled (AnthropicThinkingConfig ):
2088+ type : Literal ["enabled" ] = "enabled"
2089+ budget_tokens : int = Field (ge = 1024 )
2090+
2091+
2092+ class AnthropicThinkingConfigDisabled (AnthropicThinkingConfig ):
2093+ type : Literal ["disabled" ] = "disabled"
2094+
2095+
2096+ AnthropicThinking = Union [AnthropicThinkingConfigEnabled , AnthropicThinkingConfigDisabled ]
2097+
2098+
2099+ class AnthropicMetadata (OpenAIBaseModel ):
2100+ user_id : Optional [str ] = Field (None , max_length = 256 )
2101+
2102+
2103+ class AnthropicUsage (OpenAIBaseModel ):
2104+ input_tokens : int
2105+ output_tokens : int
2106+ cache_creation_input_tokens : Optional [int ] = None
2107+ cache_read_input_tokens : Optional [int ] = None
2108+
2109+
2110+ class AnthropicMessagesRequest (OpenAIBaseModel ):
2111+ model : str = Field (min_length = 1 , max_length = 256 )
2112+ messages : list [AnthropicMessage ] = Field (max_items = 100000 )
2113+ max_tokens : int = Field (ge = 1 )
2114+
2115+ # Optional parameters
2116+ container : Optional [str ] = None
2117+ metadata : Optional [AnthropicMetadata ] = None
2118+ service_tier : Optional [Literal ["auto" , "standard_only" ]] = None
2119+ stop_sequences : Optional [list [str ]] = Field (default_factory = list )
2120+ stream : Optional [bool ] = False
2121+ system : Optional [Union [str , list [AnthropicTextBlock ]]] = None
2122+ temperature : Optional [float ] = Field (None , ge = 0.0 , le = 1.0 )
2123+ thinking : Optional [AnthropicThinking ] = None
2124+ tool_choice : Optional [AnthropicToolChoice ] = None
2125+ tools : Optional [list [AnthropicTool ]] = None
2126+ top_k : Optional [int ] = Field (None , ge = 0 )
2127+ top_p : Optional [float ] = Field (None , ge = 0.0 , le = 1.0 )
2128+
2129+ # Aphrodite-specific extensions for compatibility
2130+ request_id : Optional [str ] = None
2131+
2132+ # For sampling params conversion
2133+ frequency_penalty : Optional [float ] = 0.0
2134+ presence_penalty : Optional [float ] = 0.0
2135+ seed : Optional [int ] = None
2136+
2137+ # TODO: add more parameters
2138+
2139+
2140+ class AnthropicMessagesResponse (OpenAIBaseModel ):
2141+ id : str
2142+ type : Literal ["message" ] = "message"
2143+ role : Literal ["assistant" ] = "assistant"
2144+ content : list [AnthropicContent ]
2145+ model : str
2146+ stop_reason : Optional [Literal ["end_turn" , "max_tokens" , "stop_sequence" ,
2147+ "tool_use" , "pause_turn" , "refusal" ]]
2148+ stop_sequence : Optional [str ] = None
2149+ usage : AnthropicUsage
2150+ container : Optional [dict [str , Any ]] = None
2151+
2152+
2153+ # Streaming response classes
2154+ class AnthropicMessageStart (OpenAIBaseModel ):
2155+ type : Literal ["message_start" ] = "message_start"
2156+ message : AnthropicMessagesResponse
2157+
2158+
2159+ class AnthropicContentBlockStart (OpenAIBaseModel ):
2160+ type : Literal ["content_block_start" ] = "content_block_start"
2161+ index : int
2162+ content_block : AnthropicContent
2163+
2164+
2165+ class AnthropicContentBlockDelta (OpenAIBaseModel ):
2166+ type : Literal ["content_block_delta" ] = "content_block_delta"
2167+ index : int
2168+ delta : dict [str , Any ] # Contains the delta content
2169+
2170+
2171+ class AnthropicContentBlockStop (OpenAIBaseModel ):
2172+ type : Literal ["content_block_stop" ] = "content_block_stop"
2173+ index : int
2174+
2175+
2176+ class AnthropicMessageDelta (OpenAIBaseModel ):
2177+ type : Literal ["message_delta" ] = "message_delta"
2178+ delta : dict [str , Any ]
2179+ usage : AnthropicUsage
2180+
2181+
2182+ class AnthropicMessageStop (OpenAIBaseModel ):
2183+ type : Literal ["message_stop" ] = "message_stop"
2184+
2185+
2186+ class AnthropicPing (OpenAIBaseModel ):
2187+ type : Literal ["ping" ] = "ping"
2188+
2189+
2190+ class AnthropicError (OpenAIBaseModel ):
2191+ type : Literal ["error" ] = "error"
2192+ error : dict [str , Any ]
2193+
2194+
2195+ AnthropicStreamEvent = Union [
2196+ AnthropicMessageStart ,
2197+ AnthropicContentBlockStart ,
2198+ AnthropicContentBlockDelta ,
2199+ AnthropicContentBlockStop ,
2200+ AnthropicMessageDelta ,
2201+ AnthropicMessageStop ,
2202+ AnthropicPing ,
2203+ AnthropicError
2204+ ]
2205+
2206+
19892207# ========== KoboldAI ========== #
19902208
19912209
0 commit comments