vproxy / src /aistudio_api /api /response_models.py
jlshu's picture
Upload 85 files
95f8c4b verified
Raw History Blame Contribute Delete
2.52 kB
"""Structured HTTP response models."""
from __future__ import annotations
from typing import Literal
from pydantic import BaseModel
class ErrorDetail(BaseModel):
message: str
type: str = "server_error"
class ErrorResponse(BaseModel):
error: ErrorDetail
class GeminiUsageMetadata(BaseModel):
promptTokenCount: int = 0
candidatesTokenCount: int = 0
thoughtsTokenCount: int = 0
totalTokenCount: int = 0
class GeminiFunctionCallPayload(BaseModel):
name: str
args: object | None = None
class GeminiFunctionResponsePayload(BaseModel):
name: str
response: object | None = None
class GeminiInlineDataResponse(BaseModel):
mimeType: str
data: str
class GeminiPartResponse(BaseModel):
text: str | None = None
thought: bool | None = None
inlineData: GeminiInlineDataResponse | None = None
thoughtSignature: str | None = None
functionCall: GeminiFunctionCallPayload | None = None
functionResponse: GeminiFunctionResponsePayload | None = None
class GeminiContentResponse(BaseModel):
role: Literal["model"] = "model"
parts: list[GeminiPartResponse]
class GeminiCandidateResponse(BaseModel):
content: GeminiContentResponse
finishReason: str | None = None
class GeminiGenerateContentResponse(BaseModel):
candidates: list[GeminiCandidateResponse]
usageMetadata: GeminiUsageMetadata | None = None
class HealthResponse(BaseModel):
status: str
busy: bool
class ModelStatsResponse(BaseModel):
requests: int
success: int
rate_limited: int
errors: int
prompt_tokens: int
completion_tokens: int
total_tokens: int
last_used: str | None = None
class StatsTotalsResponse(BaseModel):
requests: int
success: int
rate_limited: int
errors: int
prompt_tokens: int
completion_tokens: int
total_tokens: int
class StatsResponse(BaseModel):
models: dict[str, ModelStatsResponse]
totals: StatsTotalsResponse
class GeminiModelResponse(BaseModel):
name: str
version: str | None = "001"
displayName: str | None = None
description: str | None = None
inputTokenLimit: int | None = None
outputTokenLimit: int | None = None
supportedGenerationMethods: list[str] = [
"generateContent",
"countTokens",
"createCachedContent",
]
temperature: float | None = None
topP: float | None = None
topK: int | None = None
class GeminiModelListResponse(BaseModel):
models: list[GeminiModelResponse]