mirror of
https://github.com/langgenius/dify.git
synced 2026-07-24 04:58:32 +08:00
143 lines
6.2 KiB
Python
143 lines
6.2 KiB
Python
from collections.abc import Mapping
|
|
from typing import Annotated, Any
|
|
|
|
from pydantic import BaseModel, Field, WithJsonSchema
|
|
|
|
DatasourceType = Annotated[
|
|
str,
|
|
WithJsonSchema({"enum": ["local_file", "online_document", "website_crawl", "online_drive"], "type": "string"}),
|
|
]
|
|
PipelineResponseMode = Annotated[
|
|
str,
|
|
WithJsonSchema({"enum": ["streaming", "blocking"], "type": "string"}),
|
|
]
|
|
DatasourceInfoList = Annotated[
|
|
list[Mapping[str, Any]],
|
|
WithJsonSchema(
|
|
{
|
|
"items": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"reference": {
|
|
"description": (
|
|
"Use the `id` returned by the "
|
|
"[Upload Pipeline File](/api-reference/knowledge-pipeline/upload-pipeline-file) "
|
|
"endpoint. `related_id` is accepted as an alias."
|
|
),
|
|
"type": "string",
|
|
},
|
|
"name": {"description": "Document title. Defaults to `untitled`.", "type": "string"},
|
|
},
|
|
"required": ["reference"],
|
|
"title": "Local File",
|
|
"type": "object",
|
|
},
|
|
{
|
|
"properties": {
|
|
"workspace_id": {
|
|
"description": "ID of the workspace or database in the external platform.",
|
|
"type": "string",
|
|
},
|
|
"page": {
|
|
"description": "Page details.",
|
|
"properties": {
|
|
"page_id": {"description": "Page identifier.", "type": "string"},
|
|
"type": {
|
|
"description": "Page type defined by the datasource plugin.",
|
|
"type": "string",
|
|
},
|
|
"page_name": {
|
|
"description": "Display name. Defaults to `untitled`.",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["page_id", "type"],
|
|
"type": "object",
|
|
},
|
|
"credential_id": {
|
|
"description": (
|
|
"Credential for authenticating with the external platform. If omitted, the "
|
|
"provider's default credential is used."
|
|
),
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["workspace_id", "page"],
|
|
"title": "Online Document",
|
|
"type": "object",
|
|
},
|
|
{
|
|
"properties": {
|
|
"url": {"description": "URL to crawl.", "type": "string"},
|
|
"title": {
|
|
"description": "Used as the document name. Defaults to `untitled`.",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["url"],
|
|
"title": "Website Crawl",
|
|
"type": "object",
|
|
},
|
|
{
|
|
"properties": {
|
|
"id": {"description": "File or folder ID.", "type": "string"},
|
|
"type": {
|
|
"description": "Whether this entry is a single file or a folder to expand.",
|
|
"enum": ["file", "folder"],
|
|
"type": "string",
|
|
},
|
|
"bucket": {
|
|
"description": (
|
|
"Storage bucket name. Required by some drive providers, such as S3-compatible "
|
|
"stores; omit if the provider does not use buckets."
|
|
),
|
|
"type": "string",
|
|
},
|
|
"name": {"description": "File name. Defaults to `untitled`.", "type": "string"},
|
|
},
|
|
"required": ["id", "type"],
|
|
"title": "Online Drive",
|
|
"type": "object",
|
|
},
|
|
]
|
|
},
|
|
"type": "array",
|
|
}
|
|
),
|
|
]
|
|
|
|
|
|
class DatasourceNodeRunApiEntity(BaseModel):
|
|
pipeline_id: str
|
|
node_id: str
|
|
inputs: dict[str, Any]
|
|
datasource_type: DatasourceType
|
|
credential_id: str | None = None
|
|
is_published: bool
|
|
|
|
|
|
class PipelineRunApiEntity(BaseModel):
|
|
inputs: Mapping[str, Any] = Field(
|
|
description=(
|
|
"Key-value pairs for pipeline input variables defined in the workflow. Pass `{}` if the pipeline has "
|
|
"no input variables."
|
|
)
|
|
)
|
|
datasource_type: DatasourceType = Field(
|
|
description="Type of the datasource. Determines which fields are expected in `datasource_info_list` items."
|
|
)
|
|
datasource_info_list: DatasourceInfoList = Field(
|
|
description="List of datasource objects to process. The expected item structure depends on `datasource_type`."
|
|
)
|
|
start_node_id: str = Field(description="ID of the datasource node where the run starts.")
|
|
is_published: bool = Field(
|
|
description=(
|
|
"Whether to run the published or draft version of the pipeline. `true` runs the latest published "
|
|
"version; `false` runs the current draft (useful for testing unpublished changes)."
|
|
)
|
|
)
|
|
response_mode: PipelineResponseMode = Field(
|
|
description="Response mode. Use `streaming` for SSE or `blocking` for JSON."
|
|
)
|