mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-19 10:50:15 +08:00
* chore(api-nodes): remove non-used; extract model to separate files * chore(api-nodes): remove non-needed prefix in filenames
171 lines
6.6 KiB
Python
171 lines
6.6 KiB
Python
from pydantic import BaseModel, Field
|
|
|
|
|
|
class Datum2(BaseModel):
|
|
b64_json: str | None = Field(None, description="Base64 encoded image data")
|
|
revised_prompt: str | None = Field(None, description="Revised prompt")
|
|
url: str | None = Field(None, description="URL of the image")
|
|
|
|
|
|
class InputTokensDetails(BaseModel):
|
|
image_tokens: int | None = Field(None)
|
|
text_tokens: int | None = Field(None)
|
|
|
|
|
|
class Usage(BaseModel):
|
|
input_tokens: int | None = Field(None)
|
|
input_tokens_details: InputTokensDetails | None = Field(None)
|
|
output_tokens: int | None = Field(None)
|
|
total_tokens: int | None = Field(None)
|
|
|
|
|
|
class OpenAIImageGenerationResponse(BaseModel):
|
|
data: list[Datum2] | None = Field(None)
|
|
usage: Usage | None = Field(None)
|
|
|
|
|
|
class OpenAIImageEditRequest(BaseModel):
|
|
background: str | None = Field(None, description="Background transparency")
|
|
model: str = Field(...)
|
|
moderation: str | None = Field(None)
|
|
n: int | None = Field(None, description="The number of images to generate")
|
|
output_compression: int | None = Field(None, description="Compression level for JPEG or WebP (0-100)")
|
|
output_format: str | None = Field(None)
|
|
prompt: str = Field(...)
|
|
quality: str | None = Field(None, description="Size of the image (e.g., 1024x1024, 1536x1024, auto)")
|
|
size: str | None = Field(None, description="Size of the output image")
|
|
|
|
|
|
class OpenAIImageGenerationRequest(BaseModel):
|
|
background: str | None = Field(None, description="Background transparency")
|
|
model: str | None = Field(None)
|
|
moderation: str | None = Field(None)
|
|
n: int | None = Field(
|
|
None,
|
|
description="The number of images to generate.",
|
|
)
|
|
output_compression: int | None = Field(None, description="Compression level for JPEG or WebP (0-100)")
|
|
output_format: str | None = Field(None)
|
|
prompt: str = Field(...)
|
|
quality: str | None = Field(None, description="The quality of the generated image")
|
|
size: str | None = Field(None, description="Size of the image (e.g., 1024x1024, 1536x1024, auto)")
|
|
style: str | None = Field(None, description="Style of the image (only for dall-e-3)")
|
|
|
|
|
|
class ModelResponseProperties(BaseModel):
|
|
instructions: str | None = Field(None)
|
|
max_output_tokens: int | None = Field(None)
|
|
model: str | None = Field(None)
|
|
temperature: float | None = Field(1, description="Controls randomness in the response", ge=0.0, le=2.0)
|
|
top_p: float | None = Field(
|
|
1,
|
|
description="Controls diversity of the response via nucleus sampling",
|
|
ge=0.0,
|
|
le=1.0,
|
|
)
|
|
truncation: str | None = Field("disabled", description="Allowed values: 'auto' or 'disabled'")
|
|
|
|
|
|
class ResponseProperties(BaseModel):
|
|
instructions: str | None = Field(None)
|
|
max_output_tokens: int | None = Field(None)
|
|
model: str | None = Field(None)
|
|
previous_response_id: str | None = Field(None)
|
|
truncation: str | None = Field("disabled", description="Allowed values: 'auto' or 'disabled'")
|
|
|
|
|
|
class ResponseError(BaseModel):
|
|
code: str = Field(...)
|
|
message: str = Field(...)
|
|
|
|
|
|
class OutputTokensDetails(BaseModel):
|
|
reasoning_tokens: int = Field(..., description="The number of reasoning tokens.")
|
|
|
|
|
|
class CachedTokensDetails(BaseModel):
|
|
cached_tokens: int = Field(
|
|
...,
|
|
description="The number of tokens that were retrieved from the cache.",
|
|
)
|
|
|
|
|
|
class ResponseUsage(BaseModel):
|
|
input_tokens: int = Field(..., description="The number of input tokens.")
|
|
input_tokens_details: CachedTokensDetails = Field(...)
|
|
output_tokens: int = Field(..., description="The number of output tokens.")
|
|
output_tokens_details: OutputTokensDetails = Field(...)
|
|
total_tokens: int = Field(..., description="The total number of tokens used.")
|
|
|
|
|
|
class InputTextContent(BaseModel):
|
|
text: str = Field(..., description="The text input to the model.")
|
|
type: str = Field("input_text")
|
|
|
|
|
|
class OutputContent(BaseModel):
|
|
type: str = Field(..., description="The type of output content")
|
|
text: str | None = Field(None, description="The text content")
|
|
data: str | None = Field(None, description="Base64-encoded audio data")
|
|
transcript: str | None = Field(None, description="Transcript of the audio")
|
|
|
|
|
|
class OutputMessage(BaseModel):
|
|
type: str = Field(..., description="The type of output item")
|
|
content: list[OutputContent] | None = Field(None, description="The content of the message")
|
|
role: str | None = Field(None, description="The role of the message")
|
|
|
|
|
|
class OpenAIResponse(ModelResponseProperties, ResponseProperties):
|
|
created_at: float | None = Field(
|
|
None,
|
|
description="Unix timestamp (in seconds) of when this Response was created.",
|
|
)
|
|
error: ResponseError | None = Field(None)
|
|
id: str | None = Field(None, description="Unique identifier for this Response.")
|
|
object: str | None = Field(None, description="The object type of this resource - always set to `response`.")
|
|
output: list[OutputMessage] | None = Field(None)
|
|
parallel_tool_calls: bool | None = Field(True)
|
|
status: str | None = Field(
|
|
None,
|
|
description="One of `completed`, `failed`, `in_progress`, or `incomplete`.",
|
|
)
|
|
usage: ResponseUsage | None = Field(None)
|
|
|
|
|
|
class InputImageContent(BaseModel):
|
|
detail: str = Field(..., description="One of `high`, `low`, or `auto`. Defaults to `auto`.")
|
|
file_id: str | None = Field(None)
|
|
image_url: str | None = Field(None)
|
|
type: str = Field(..., description="The type of the input item. Always `input_image`.")
|
|
|
|
|
|
class InputFileContent(BaseModel):
|
|
file_data: str | None = Field(None)
|
|
file_id: str | None = Field(None)
|
|
filename: str | None = Field(None, description="The name of the file to be sent to the model.")
|
|
type: str = Field(..., description="The type of the input item. Always `input_file`.")
|
|
|
|
|
|
class InputMessage(BaseModel):
|
|
content: list[InputTextContent | InputImageContent | InputFileContent] = Field(
|
|
...,
|
|
description="A list of one or many input items to the model, containing different content types.",
|
|
)
|
|
role: str | None = Field(None)
|
|
type: str | None = Field(None)
|
|
|
|
|
|
class OpenAICreateResponse(ModelResponseProperties, ResponseProperties):
|
|
include: str | None = Field(None)
|
|
input: list[InputMessage] = Field(...)
|
|
parallel_tool_calls: bool | None = Field(
|
|
True, description="Whether to allow the model to run tool calls in parallel."
|
|
)
|
|
store: bool | None = Field(
|
|
True,
|
|
description="Whether to store the generated model response for later retrieval via API.",
|
|
)
|
|
stream: bool | None = Field(False)
|
|
usage: ResponseUsage | None = Field(None)
|