feat: Initial commit of LLM Tool Proxy
This commit is contained in:
41
app/models.py
Normal file
41
app/models.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List, Dict, Any, Optional
|
||||
|
||||
# Models for incoming requests
|
||||
class ChatMessage(BaseModel):
|
||||
"""Represents a single message in the chat history."""
|
||||
role: str
|
||||
content: str
|
||||
|
||||
class Tool(BaseModel):
|
||||
"""Represents a tool definition provided by the user."""
|
||||
type: str
|
||||
function: Dict[str, Any]
|
||||
|
||||
class IncomingRequest(BaseModel):
|
||||
"""Defines the structure of the request from the client."""
|
||||
messages: List[ChatMessage]
|
||||
tools: Optional[List[Tool]] = None
|
||||
stream: Optional[bool] = False
|
||||
|
||||
# Models for outgoing responses
|
||||
class ToolCallFunction(BaseModel):
|
||||
"""Function call details within a tool call."""
|
||||
name: str
|
||||
arguments: str # JSON string of arguments
|
||||
|
||||
class ToolCall(BaseModel):
|
||||
"""Represents a tool call requested by the LLM."""
|
||||
id: str
|
||||
type: str = "function"
|
||||
function: ToolCallFunction
|
||||
|
||||
class ResponseMessage(BaseModel):
|
||||
"""The message part of the response from the proxy."""
|
||||
role: str = "assistant"
|
||||
content: Optional[str] = None
|
||||
tool_calls: Optional[List[ToolCall]] = None
|
||||
|
||||
class ProxyResponse(BaseModel):
|
||||
"""Defines the final structured response sent back to the client."""
|
||||
message: ResponseMessage
|
||||
Reference in New Issue
Block a user