mirror of
https://github.com/langgenius/dify.git
synced 2026-05-26 13:00:51 -04:00
fix(api): preserve dataset nested null shapes (#36611)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: wangxiaolei <fatelei@gmail.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from datetime import datetime
|
||||
|
||||
from flask_restx import fields
|
||||
from pydantic import field_validator
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
from fields.base import ResponseModel
|
||||
from libs.helper import TimestampField, to_timestamp
|
||||
@@ -152,31 +152,41 @@ class DatasetRerankingModelResponse(ResponseModel):
|
||||
|
||||
|
||||
class DatasetKeywordSettingResponse(ResponseModel):
|
||||
keyword_weight: float
|
||||
keyword_weight: float | None = None
|
||||
|
||||
|
||||
class DatasetVectorSettingResponse(ResponseModel):
|
||||
vector_weight: float
|
||||
embedding_model_name: str
|
||||
embedding_provider_name: str
|
||||
vector_weight: float | None = None
|
||||
embedding_model_name: str | None = None
|
||||
embedding_provider_name: str | None = None
|
||||
|
||||
|
||||
class DatasetWeightedScoreResponse(ResponseModel):
|
||||
weight_type: str | None = None
|
||||
keyword_setting: DatasetKeywordSettingResponse | None = None
|
||||
vector_setting: DatasetVectorSettingResponse | None = None
|
||||
keyword_setting: DatasetKeywordSettingResponse = Field(default_factory=DatasetKeywordSettingResponse)
|
||||
vector_setting: DatasetVectorSettingResponse = Field(default_factory=DatasetVectorSettingResponse)
|
||||
|
||||
@field_validator("keyword_setting", "vector_setting", mode="before")
|
||||
@classmethod
|
||||
def _expand_null_nested(cls, value: object) -> object:
|
||||
return {} if value is None else value
|
||||
|
||||
|
||||
class DatasetRetrievalModelResponse(ResponseModel):
|
||||
search_method: str
|
||||
reranking_enable: bool
|
||||
reranking_mode: str | None = None
|
||||
reranking_model: DatasetRerankingModelResponse | None
|
||||
reranking_model: DatasetRerankingModelResponse = Field(default_factory=DatasetRerankingModelResponse)
|
||||
weights: DatasetWeightedScoreResponse | None = None
|
||||
top_k: int
|
||||
score_threshold_enabled: bool
|
||||
score_threshold: float | None = None
|
||||
|
||||
@field_validator("reranking_model", mode="before")
|
||||
@classmethod
|
||||
def _expand_null_nested(cls, value: object) -> object:
|
||||
return {} if value is None else value
|
||||
|
||||
|
||||
class DatasetSummaryIndexSettingResponse(ResponseModel):
|
||||
enable: bool | None = None
|
||||
@@ -192,10 +202,10 @@ class DatasetTagResponse(ResponseModel):
|
||||
|
||||
|
||||
class DatasetExternalKnowledgeInfoResponse(ResponseModel):
|
||||
external_knowledge_id: str
|
||||
external_knowledge_api_id: str
|
||||
external_knowledge_api_name: str
|
||||
external_knowledge_api_endpoint: str
|
||||
external_knowledge_id: str | None = None
|
||||
external_knowledge_api_id: str | None = None
|
||||
external_knowledge_api_name: str | None = None
|
||||
external_knowledge_api_endpoint: str | None = None
|
||||
|
||||
|
||||
class DatasetExternalRetrievalModelResponse(ResponseModel):
|
||||
@@ -211,8 +221,8 @@ class DatasetDocMetadataResponse(ResponseModel):
|
||||
|
||||
|
||||
class DatasetIconInfoResponse(ResponseModel):
|
||||
icon_type: str | None
|
||||
icon: str | None
|
||||
icon_type: str | None = None
|
||||
icon: str | None = None
|
||||
icon_background: str | None = None
|
||||
icon_url: str | None = None
|
||||
|
||||
@@ -237,17 +247,21 @@ class DatasetDetailResponse(ResponseModel):
|
||||
embedding_model_provider: str | None
|
||||
embedding_available: bool | None = None
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse | None
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse = Field(
|
||||
default_factory=DatasetSummaryIndexSettingResponse
|
||||
)
|
||||
tags: list[DatasetTagResponse]
|
||||
doc_form: str | None
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse | None
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse = Field(
|
||||
default_factory=DatasetExternalKnowledgeInfoResponse
|
||||
)
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse | None
|
||||
doc_metadata: list[DatasetDocMetadataResponse]
|
||||
built_in_field_enabled: bool
|
||||
pipeline_id: str | None
|
||||
runtime_mode: str | None
|
||||
chunk_structure: str | None
|
||||
icon_info: DatasetIconInfoResponse | None
|
||||
icon_info: DatasetIconInfoResponse = Field(default_factory=DatasetIconInfoResponse)
|
||||
is_published: bool
|
||||
total_documents: int
|
||||
total_available_documents: int
|
||||
@@ -258,3 +272,8 @@ class DatasetDetailResponse(ResponseModel):
|
||||
@classmethod
|
||||
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
|
||||
return to_timestamp(value)
|
||||
|
||||
@field_validator("summary_index_setting", "external_knowledge_info", "icon_info", mode="before")
|
||||
@classmethod
|
||||
def _expand_null_nested(cls, value: object) -> object:
|
||||
return {} if value is None else value
|
||||
|
||||
@@ -11708,9 +11708,9 @@ Condition detail
|
||||
| embedding_model | string | | Yes |
|
||||
| embedding_model_provider | string | | Yes |
|
||||
| enable_api | boolean | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | No |
|
||||
| external_retrieval_model | [DatasetExternalRetrievalModelResponse](#datasetexternalretrievalmodelresponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | No |
|
||||
| id | string | | Yes |
|
||||
| indexing_technique | string | | Yes |
|
||||
| is_multimodal | boolean | | Yes |
|
||||
@@ -11721,7 +11721,7 @@ Condition detail
|
||||
| provider | string | | Yes |
|
||||
| retrieval_model_dict | [DatasetRetrievalModelResponse](#datasetretrievalmodelresponse) | | Yes |
|
||||
| runtime_mode | string | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | No |
|
||||
| tags | [ [DatasetTagResponse](#datasettagresponse) ] | | Yes |
|
||||
| total_available_documents | integer | | Yes |
|
||||
| total_documents | integer | | Yes |
|
||||
@@ -11748,9 +11748,9 @@ Condition detail
|
||||
| embedding_model | string | | Yes |
|
||||
| embedding_model_provider | string | | Yes |
|
||||
| enable_api | boolean | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | No |
|
||||
| external_retrieval_model | [DatasetExternalRetrievalModelResponse](#datasetexternalretrievalmodelresponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | No |
|
||||
| id | string | | Yes |
|
||||
| indexing_technique | string | | Yes |
|
||||
| is_multimodal | boolean | | Yes |
|
||||
@@ -11762,7 +11762,7 @@ Condition detail
|
||||
| provider | string | | Yes |
|
||||
| retrieval_model_dict | [DatasetRetrievalModelResponse](#datasetretrievalmodelresponse) | | Yes |
|
||||
| runtime_mode | string | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | No |
|
||||
| tags | [ [DatasetTagResponse](#datasettagresponse) ] | | Yes |
|
||||
| total_available_documents | integer | | Yes |
|
||||
| total_documents | integer | | Yes |
|
||||
@@ -11790,10 +11790,10 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| external_knowledge_api_endpoint | string | | Yes |
|
||||
| external_knowledge_api_id | string | | Yes |
|
||||
| external_knowledge_api_name | string | | Yes |
|
||||
| external_knowledge_id | string | | Yes |
|
||||
| external_knowledge_api_endpoint | string | | No |
|
||||
| external_knowledge_api_id | string | | No |
|
||||
| external_knowledge_api_name | string | | No |
|
||||
| external_knowledge_id | string | | No |
|
||||
|
||||
#### DatasetExternalRetrievalModelResponse
|
||||
|
||||
@@ -11816,9 +11816,9 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| icon | string | | Yes |
|
||||
| icon | string | | No |
|
||||
| icon_background | string | | No |
|
||||
| icon_type | string | | Yes |
|
||||
| icon_type | string | | No |
|
||||
| icon_url | string | | No |
|
||||
|
||||
#### DatasetKeywordSetting
|
||||
@@ -11831,7 +11831,7 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| keyword_weight | number | | Yes |
|
||||
| keyword_weight | number | | No |
|
||||
|
||||
#### DatasetListItemResponse
|
||||
|
||||
@@ -11852,9 +11852,9 @@ Condition detail
|
||||
| embedding_model | string | | Yes |
|
||||
| embedding_model_provider | string | | Yes |
|
||||
| enable_api | boolean | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | No |
|
||||
| external_retrieval_model | [DatasetExternalRetrievalModelResponse](#datasetexternalretrievalmodelresponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | No |
|
||||
| id | string | | Yes |
|
||||
| indexing_technique | string | | Yes |
|
||||
| is_multimodal | boolean | | Yes |
|
||||
@@ -11866,7 +11866,7 @@ Condition detail
|
||||
| provider | string | | Yes |
|
||||
| retrieval_model_dict | [DatasetRetrievalModelResponse](#datasetretrievalmodelresponse) | | Yes |
|
||||
| runtime_mode | string | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | No |
|
||||
| tags | [ [DatasetTagResponse](#datasettagresponse) ] | | Yes |
|
||||
| total_available_documents | integer | | Yes |
|
||||
| total_documents | integer | | Yes |
|
||||
@@ -12014,7 +12014,7 @@ Condition detail
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| reranking_enable | boolean | | Yes |
|
||||
| reranking_mode | string | | No |
|
||||
| reranking_model | [DatasetRerankingModelResponse](#datasetrerankingmodelresponse) | | Yes |
|
||||
| reranking_model | [DatasetRerankingModelResponse](#datasetrerankingmodelresponse) | | No |
|
||||
| score_threshold | number | | No |
|
||||
| score_threshold_enabled | boolean | | Yes |
|
||||
| search_method | string | | Yes |
|
||||
@@ -12069,9 +12069,9 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| embedding_model_name | string | | Yes |
|
||||
| embedding_provider_name | string | | Yes |
|
||||
| vector_weight | number | | Yes |
|
||||
| embedding_model_name | string | | No |
|
||||
| embedding_provider_name | string | | No |
|
||||
| vector_weight | number | | No |
|
||||
|
||||
#### DatasetWeightedScore
|
||||
|
||||
|
||||
@@ -2338,9 +2338,9 @@ Condition detail
|
||||
| embedding_model | string | | Yes |
|
||||
| embedding_model_provider | string | | Yes |
|
||||
| enable_api | boolean | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | No |
|
||||
| external_retrieval_model | [DatasetExternalRetrievalModelResponse](#datasetexternalretrievalmodelresponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | No |
|
||||
| id | string | | Yes |
|
||||
| indexing_technique | string | | Yes |
|
||||
| is_multimodal | boolean | | Yes |
|
||||
@@ -2351,7 +2351,7 @@ Condition detail
|
||||
| provider | string | | Yes |
|
||||
| retrieval_model_dict | [DatasetRetrievalModelResponse](#datasetretrievalmodelresponse) | | Yes |
|
||||
| runtime_mode | string | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | No |
|
||||
| tags | [ [DatasetTagResponse](#datasettagresponse) ] | | Yes |
|
||||
| total_available_documents | integer | | Yes |
|
||||
| total_documents | integer | | Yes |
|
||||
@@ -2378,9 +2378,9 @@ Condition detail
|
||||
| embedding_model | string | | Yes |
|
||||
| embedding_model_provider | string | | Yes |
|
||||
| enable_api | boolean | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | Yes |
|
||||
| external_knowledge_info | [DatasetExternalKnowledgeInfoResponse](#datasetexternalknowledgeinforesponse) | | No |
|
||||
| external_retrieval_model | [DatasetExternalRetrievalModelResponse](#datasetexternalretrievalmodelresponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | Yes |
|
||||
| icon_info | [DatasetIconInfoResponse](#dataseticoninforesponse) | | No |
|
||||
| id | string | | Yes |
|
||||
| indexing_technique | string | | Yes |
|
||||
| is_multimodal | boolean | | Yes |
|
||||
@@ -2392,7 +2392,7 @@ Condition detail
|
||||
| provider | string | | Yes |
|
||||
| retrieval_model_dict | [DatasetRetrievalModelResponse](#datasetretrievalmodelresponse) | | Yes |
|
||||
| runtime_mode | string | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | Yes |
|
||||
| summary_index_setting | [DatasetSummaryIndexSettingResponse](#datasetsummaryindexsettingresponse) | | No |
|
||||
| tags | [ [DatasetTagResponse](#datasettagresponse) ] | | Yes |
|
||||
| total_available_documents | integer | | Yes |
|
||||
| total_documents | integer | | Yes |
|
||||
@@ -2412,10 +2412,10 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| external_knowledge_api_endpoint | string | | Yes |
|
||||
| external_knowledge_api_id | string | | Yes |
|
||||
| external_knowledge_api_name | string | | Yes |
|
||||
| external_knowledge_id | string | | Yes |
|
||||
| external_knowledge_api_endpoint | string | | No |
|
||||
| external_knowledge_api_id | string | | No |
|
||||
| external_knowledge_api_name | string | | No |
|
||||
| external_knowledge_id | string | | No |
|
||||
|
||||
#### DatasetExternalRetrievalModelResponse
|
||||
|
||||
@@ -2429,16 +2429,16 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| icon | string | | Yes |
|
||||
| icon | string | | No |
|
||||
| icon_background | string | | No |
|
||||
| icon_type | string | | Yes |
|
||||
| icon_type | string | | No |
|
||||
| icon_url | string | | No |
|
||||
|
||||
#### DatasetKeywordSettingResponse
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| keyword_weight | number | | Yes |
|
||||
| keyword_weight | number | | No |
|
||||
|
||||
#### DatasetListQuery
|
||||
|
||||
@@ -2522,7 +2522,7 @@ Condition detail
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| reranking_enable | boolean | | Yes |
|
||||
| reranking_mode | string | | No |
|
||||
| reranking_model | [DatasetRerankingModelResponse](#datasetrerankingmodelresponse) | | Yes |
|
||||
| reranking_model | [DatasetRerankingModelResponse](#datasetrerankingmodelresponse) | | No |
|
||||
| score_threshold | number | | No |
|
||||
| score_threshold_enabled | boolean | | Yes |
|
||||
| search_method | string | | Yes |
|
||||
@@ -2566,9 +2566,9 @@ Condition detail
|
||||
|
||||
| Name | Type | Description | Required |
|
||||
| ---- | ---- | ----------- | -------- |
|
||||
| embedding_model_name | string | | Yes |
|
||||
| embedding_provider_name | string | | Yes |
|
||||
| vector_weight | number | | Yes |
|
||||
| embedding_model_name | string | | No |
|
||||
| embedding_provider_name | string | | No |
|
||||
| vector_weight | number | | No |
|
||||
|
||||
#### DatasetWeightedScoreResponse
|
||||
|
||||
|
||||
173
api/tests/unit_tests/fields/test_dataset_fields.py
Normal file
173
api/tests/unit_tests/fields/test_dataset_fields.py
Normal file
@@ -0,0 +1,173 @@
|
||||
from fields.dataset_fields import DatasetDetailResponse
|
||||
|
||||
|
||||
def _dataset_detail_payload(**overrides):
|
||||
payload = {
|
||||
"id": "ds-1",
|
||||
"name": "Dataset",
|
||||
"description": "desc",
|
||||
"provider": "vendor",
|
||||
"permission": "only_me",
|
||||
"data_source_type": None,
|
||||
"indexing_technique": "economy",
|
||||
"app_count": 0,
|
||||
"document_count": 0,
|
||||
"word_count": 0,
|
||||
"created_by": "account-1",
|
||||
"author_name": None,
|
||||
"created_at": 1704067200,
|
||||
"updated_by": None,
|
||||
"updated_at": 1704067200,
|
||||
"embedding_model": None,
|
||||
"embedding_model_provider": None,
|
||||
"embedding_available": True,
|
||||
"retrieval_model_dict": {
|
||||
"search_method": "hybrid_search",
|
||||
"reranking_enable": True,
|
||||
"reranking_mode": "weighted_score",
|
||||
"reranking_model": {
|
||||
"reranking_provider_name": "provider",
|
||||
"reranking_model_name": "model",
|
||||
},
|
||||
"weights": {
|
||||
"weight_type": "customized",
|
||||
"keyword_setting": {"keyword_weight": 0.3},
|
||||
"vector_setting": {
|
||||
"vector_weight": 0.7,
|
||||
"embedding_model_name": "embedding",
|
||||
"embedding_provider_name": "provider",
|
||||
},
|
||||
},
|
||||
"top_k": 3,
|
||||
"score_threshold_enabled": False,
|
||||
"score_threshold": None,
|
||||
},
|
||||
"summary_index_setting": {
|
||||
"enable": False,
|
||||
"model_name": None,
|
||||
"model_provider_name": None,
|
||||
"summary_prompt": None,
|
||||
},
|
||||
"tags": [],
|
||||
"doc_form": None,
|
||||
"external_knowledge_info": {
|
||||
"external_knowledge_id": "knowledge-id",
|
||||
"external_knowledge_api_id": "api-id",
|
||||
"external_knowledge_api_name": "api",
|
||||
"external_knowledge_api_endpoint": "https://example.com",
|
||||
},
|
||||
"external_retrieval_model": None,
|
||||
"doc_metadata": [],
|
||||
"built_in_field_enabled": False,
|
||||
"pipeline_id": None,
|
||||
"runtime_mode": "general",
|
||||
"chunk_structure": None,
|
||||
"icon_info": {
|
||||
"icon_type": "emoji",
|
||||
"icon": "📙",
|
||||
"icon_background": None,
|
||||
"icon_url": None,
|
||||
},
|
||||
"is_published": False,
|
||||
"total_documents": 0,
|
||||
"total_available_documents": 0,
|
||||
"enable_api": False,
|
||||
"is_multimodal": False,
|
||||
}
|
||||
payload.update(overrides)
|
||||
return payload
|
||||
|
||||
|
||||
def _dump_dataset_detail(payload):
|
||||
return DatasetDetailResponse.model_validate(payload).model_dump(mode="json")
|
||||
|
||||
|
||||
def test_dataset_detail_expands_legacy_null_nested_fields():
|
||||
response = _dump_dataset_detail(
|
||||
_dataset_detail_payload(
|
||||
summary_index_setting=None,
|
||||
external_knowledge_info=None,
|
||||
icon_info=None,
|
||||
)
|
||||
)
|
||||
|
||||
assert response["summary_index_setting"] == {
|
||||
"enable": None,
|
||||
"model_name": None,
|
||||
"model_provider_name": None,
|
||||
"summary_prompt": None,
|
||||
}
|
||||
assert response["external_knowledge_info"] == {
|
||||
"external_knowledge_id": None,
|
||||
"external_knowledge_api_id": None,
|
||||
"external_knowledge_api_name": None,
|
||||
"external_knowledge_api_endpoint": None,
|
||||
}
|
||||
assert response["icon_info"] == {
|
||||
"icon_type": None,
|
||||
"icon": None,
|
||||
"icon_background": None,
|
||||
"icon_url": None,
|
||||
}
|
||||
assert response["external_retrieval_model"] is None
|
||||
|
||||
|
||||
def test_dataset_detail_expands_legacy_null_retrieval_nested_fields():
|
||||
response = _dump_dataset_detail(
|
||||
_dataset_detail_payload(
|
||||
retrieval_model_dict={
|
||||
"search_method": "hybrid_search",
|
||||
"reranking_enable": True,
|
||||
"reranking_mode": "weighted_score",
|
||||
"reranking_model": None,
|
||||
"weights": {
|
||||
"keyword_setting": None,
|
||||
"vector_setting": None,
|
||||
},
|
||||
"top_k": 3,
|
||||
"score_threshold_enabled": False,
|
||||
"score_threshold": None,
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
assert response["retrieval_model_dict"]["reranking_model"] == {
|
||||
"reranking_provider_name": None,
|
||||
"reranking_model_name": None,
|
||||
}
|
||||
assert response["retrieval_model_dict"]["weights"] == {
|
||||
"weight_type": None,
|
||||
"keyword_setting": {"keyword_weight": None},
|
||||
"vector_setting": {
|
||||
"vector_weight": None,
|
||||
"embedding_model_name": None,
|
||||
"embedding_provider_name": None,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_dataset_detail_expands_missing_weighted_score_nested_fields():
|
||||
response = _dump_dataset_detail(
|
||||
_dataset_detail_payload(
|
||||
retrieval_model_dict={
|
||||
"search_method": "hybrid_search",
|
||||
"reranking_enable": True,
|
||||
"reranking_mode": "weighted_score",
|
||||
"reranking_model": None,
|
||||
"weights": {},
|
||||
"top_k": 3,
|
||||
"score_threshold_enabled": False,
|
||||
"score_threshold": None,
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
assert response["retrieval_model_dict"]["weights"] == {
|
||||
"weight_type": None,
|
||||
"keyword_setting": {"keyword_weight": None},
|
||||
"vector_setting": {
|
||||
"vector_weight": None,
|
||||
"embedding_model_name": None,
|
||||
"embedding_provider_name": None,
|
||||
},
|
||||
}
|
||||
@@ -38,9 +38,9 @@ export type DatasetDetailResponse = {
|
||||
embedding_model: string | null
|
||||
embedding_model_provider: string | null
|
||||
enable_api: boolean
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse
|
||||
external_knowledge_info?: DatasetExternalKnowledgeInfoResponse
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse
|
||||
icon_info: DatasetIconInfoResponse
|
||||
icon_info?: DatasetIconInfoResponse
|
||||
id: string
|
||||
indexing_technique: string | null
|
||||
is_multimodal: boolean
|
||||
@@ -51,7 +51,7 @@ export type DatasetDetailResponse = {
|
||||
provider: string
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
runtime_mode: string | null
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse
|
||||
summary_index_setting?: DatasetSummaryIndexSettingResponse
|
||||
tags: Array<DatasetTagResponse>
|
||||
total_available_documents: number
|
||||
total_documents: number
|
||||
@@ -231,9 +231,9 @@ export type DatasetDetailWithPartialMembersResponse = {
|
||||
embedding_model: string | null
|
||||
embedding_model_provider: string | null
|
||||
enable_api: boolean
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse
|
||||
external_knowledge_info?: DatasetExternalKnowledgeInfoResponse
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse
|
||||
icon_info: DatasetIconInfoResponse
|
||||
icon_info?: DatasetIconInfoResponse
|
||||
id: string
|
||||
indexing_technique: string | null
|
||||
is_multimodal: boolean
|
||||
@@ -245,7 +245,7 @@ export type DatasetDetailWithPartialMembersResponse = {
|
||||
provider: string
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
runtime_mode: string | null
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse
|
||||
summary_index_setting?: DatasetSummaryIndexSettingResponse
|
||||
tags: Array<DatasetTagResponse>
|
||||
total_available_documents: number
|
||||
total_documents: number
|
||||
@@ -465,9 +465,9 @@ export type DatasetListItemResponse = {
|
||||
embedding_model: string | null
|
||||
embedding_model_provider: string | null
|
||||
enable_api: boolean
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse
|
||||
external_knowledge_info?: DatasetExternalKnowledgeInfoResponse
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse
|
||||
icon_info: DatasetIconInfoResponse
|
||||
icon_info?: DatasetIconInfoResponse
|
||||
id: string
|
||||
indexing_technique: string | null
|
||||
is_multimodal: boolean
|
||||
@@ -479,7 +479,7 @@ export type DatasetListItemResponse = {
|
||||
provider: string
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
runtime_mode: string | null
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse
|
||||
summary_index_setting?: DatasetSummaryIndexSettingResponse
|
||||
tags: Array<DatasetTagResponse>
|
||||
total_available_documents: number
|
||||
total_documents: number
|
||||
@@ -497,10 +497,10 @@ export type DatasetDocMetadataResponse = {
|
||||
}
|
||||
|
||||
export type DatasetExternalKnowledgeInfoResponse = {
|
||||
external_knowledge_api_endpoint: string
|
||||
external_knowledge_api_id: string
|
||||
external_knowledge_api_name: string
|
||||
external_knowledge_id: string
|
||||
external_knowledge_api_endpoint?: string | null
|
||||
external_knowledge_api_id?: string | null
|
||||
external_knowledge_api_name?: string | null
|
||||
external_knowledge_id?: string | null
|
||||
}
|
||||
|
||||
export type DatasetExternalRetrievalModelResponse = {
|
||||
@@ -510,16 +510,16 @@ export type DatasetExternalRetrievalModelResponse = {
|
||||
}
|
||||
|
||||
export type DatasetIconInfoResponse = {
|
||||
icon: string | null
|
||||
icon?: string | null
|
||||
icon_background?: string | null
|
||||
icon_type: string | null
|
||||
icon_type?: string | null
|
||||
icon_url?: string | null
|
||||
}
|
||||
|
||||
export type DatasetRetrievalModelResponse = {
|
||||
reranking_enable: boolean
|
||||
reranking_mode?: string | null
|
||||
reranking_model: DatasetRerankingModelResponse
|
||||
reranking_model?: DatasetRerankingModelResponse
|
||||
score_threshold?: number | null
|
||||
score_threshold_enabled: boolean
|
||||
search_method: string
|
||||
@@ -816,13 +816,13 @@ export type DatasetQueryContentResponse = {
|
||||
}
|
||||
|
||||
export type DatasetKeywordSettingResponse = {
|
||||
keyword_weight: number
|
||||
keyword_weight?: number | null
|
||||
}
|
||||
|
||||
export type DatasetVectorSettingResponse = {
|
||||
embedding_model_name: string
|
||||
embedding_provider_name: string
|
||||
vector_weight: number
|
||||
embedding_model_name?: string | null
|
||||
embedding_provider_name?: string | null
|
||||
vector_weight?: number | null
|
||||
}
|
||||
|
||||
export type DatasetKeywordSetting = {
|
||||
|
||||
@@ -307,10 +307,10 @@ export const zDatasetDocMetadataResponse = z.object({
|
||||
* DatasetExternalKnowledgeInfoResponse
|
||||
*/
|
||||
export const zDatasetExternalKnowledgeInfoResponse = z.object({
|
||||
external_knowledge_api_endpoint: z.string(),
|
||||
external_knowledge_api_id: z.string(),
|
||||
external_knowledge_api_name: z.string(),
|
||||
external_knowledge_id: z.string(),
|
||||
external_knowledge_api_endpoint: z.string().nullish(),
|
||||
external_knowledge_api_id: z.string().nullish(),
|
||||
external_knowledge_api_name: z.string().nullish(),
|
||||
external_knowledge_id: z.string().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -326,9 +326,9 @@ export const zDatasetExternalRetrievalModelResponse = z.object({
|
||||
* DatasetIconInfoResponse
|
||||
*/
|
||||
export const zDatasetIconInfoResponse = z.object({
|
||||
icon: z.string().nullable(),
|
||||
icon: z.string().nullish(),
|
||||
icon_background: z.string().nullish(),
|
||||
icon_type: z.string().nullable(),
|
||||
icon_type: z.string().nullish(),
|
||||
icon_url: z.string().nullish(),
|
||||
})
|
||||
|
||||
@@ -654,16 +654,16 @@ export const zHitTestingFile = z.object({
|
||||
* DatasetKeywordSettingResponse
|
||||
*/
|
||||
export const zDatasetKeywordSettingResponse = z.object({
|
||||
keyword_weight: z.number(),
|
||||
keyword_weight: z.number().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
* DatasetVectorSettingResponse
|
||||
*/
|
||||
export const zDatasetVectorSettingResponse = z.object({
|
||||
embedding_model_name: z.string(),
|
||||
embedding_provider_name: z.string(),
|
||||
vector_weight: z.number(),
|
||||
embedding_model_name: z.string().nullish(),
|
||||
embedding_provider_name: z.string().nullish(),
|
||||
vector_weight: z.number().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -681,7 +681,7 @@ export const zDatasetWeightedScoreResponse = z.object({
|
||||
export const zDatasetRetrievalModelResponse = z.object({
|
||||
reranking_enable: z.boolean(),
|
||||
reranking_mode: z.string().nullish(),
|
||||
reranking_model: zDatasetRerankingModelResponse,
|
||||
reranking_model: zDatasetRerankingModelResponse.optional(),
|
||||
score_threshold: z.number().nullish(),
|
||||
score_threshold_enabled: z.boolean(),
|
||||
search_method: z.string(),
|
||||
@@ -708,9 +708,9 @@ export const zDatasetDetailResponse = z.object({
|
||||
embedding_model: z.string().nullable(),
|
||||
embedding_model_provider: z.string().nullable(),
|
||||
enable_api: z.boolean(),
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse,
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse.optional(),
|
||||
external_retrieval_model: zDatasetExternalRetrievalModelResponse,
|
||||
icon_info: zDatasetIconInfoResponse,
|
||||
icon_info: zDatasetIconInfoResponse.optional(),
|
||||
id: z.string(),
|
||||
indexing_technique: z.string().nullable(),
|
||||
is_multimodal: z.boolean(),
|
||||
@@ -721,7 +721,7 @@ export const zDatasetDetailResponse = z.object({
|
||||
provider: z.string(),
|
||||
retrieval_model_dict: zDatasetRetrievalModelResponse,
|
||||
runtime_mode: z.string().nullable(),
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse,
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse.optional(),
|
||||
tags: z.array(zDatasetTagResponse),
|
||||
total_available_documents: z.int(),
|
||||
total_documents: z.int(),
|
||||
@@ -749,9 +749,9 @@ export const zDatasetDetailWithPartialMembersResponse = z.object({
|
||||
embedding_model: z.string().nullable(),
|
||||
embedding_model_provider: z.string().nullable(),
|
||||
enable_api: z.boolean(),
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse,
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse.optional(),
|
||||
external_retrieval_model: zDatasetExternalRetrievalModelResponse,
|
||||
icon_info: zDatasetIconInfoResponse,
|
||||
icon_info: zDatasetIconInfoResponse.optional(),
|
||||
id: z.string(),
|
||||
indexing_technique: z.string().nullable(),
|
||||
is_multimodal: z.boolean(),
|
||||
@@ -763,7 +763,7 @@ export const zDatasetDetailWithPartialMembersResponse = z.object({
|
||||
provider: z.string(),
|
||||
retrieval_model_dict: zDatasetRetrievalModelResponse,
|
||||
runtime_mode: z.string().nullable(),
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse,
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse.optional(),
|
||||
tags: z.array(zDatasetTagResponse),
|
||||
total_available_documents: z.int(),
|
||||
total_documents: z.int(),
|
||||
@@ -791,9 +791,9 @@ export const zDatasetListItemResponse = z.object({
|
||||
embedding_model: z.string().nullable(),
|
||||
embedding_model_provider: z.string().nullable(),
|
||||
enable_api: z.boolean(),
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse,
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse.optional(),
|
||||
external_retrieval_model: zDatasetExternalRetrievalModelResponse,
|
||||
icon_info: zDatasetIconInfoResponse,
|
||||
icon_info: zDatasetIconInfoResponse.optional(),
|
||||
id: z.string(),
|
||||
indexing_technique: z.string().nullable(),
|
||||
is_multimodal: z.boolean(),
|
||||
@@ -805,7 +805,7 @@ export const zDatasetListItemResponse = z.object({
|
||||
provider: z.string(),
|
||||
retrieval_model_dict: zDatasetRetrievalModelResponse,
|
||||
runtime_mode: z.string().nullable(),
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse,
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse.optional(),
|
||||
tags: z.array(zDatasetTagResponse),
|
||||
total_available_documents: z.int(),
|
||||
total_documents: z.int(),
|
||||
|
||||
@@ -183,9 +183,9 @@ export type DatasetDetailResponse = {
|
||||
embedding_model: string | null
|
||||
embedding_model_provider: string | null
|
||||
enable_api: boolean
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse
|
||||
external_knowledge_info?: DatasetExternalKnowledgeInfoResponse
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse
|
||||
icon_info: DatasetIconInfoResponse
|
||||
icon_info?: DatasetIconInfoResponse
|
||||
id: string
|
||||
indexing_technique: string | null
|
||||
is_multimodal: boolean
|
||||
@@ -196,7 +196,7 @@ export type DatasetDetailResponse = {
|
||||
provider: string
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
runtime_mode: string | null
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse
|
||||
summary_index_setting?: DatasetSummaryIndexSettingResponse
|
||||
tags: Array<DatasetTagResponse>
|
||||
total_available_documents: number
|
||||
total_documents: number
|
||||
@@ -221,9 +221,9 @@ export type DatasetDetailWithPartialMembersResponse = {
|
||||
embedding_model: string | null
|
||||
embedding_model_provider: string | null
|
||||
enable_api: boolean
|
||||
external_knowledge_info: DatasetExternalKnowledgeInfoResponse
|
||||
external_knowledge_info?: DatasetExternalKnowledgeInfoResponse
|
||||
external_retrieval_model: DatasetExternalRetrievalModelResponse
|
||||
icon_info: DatasetIconInfoResponse
|
||||
icon_info?: DatasetIconInfoResponse
|
||||
id: string
|
||||
indexing_technique: string | null
|
||||
is_multimodal: boolean
|
||||
@@ -235,7 +235,7 @@ export type DatasetDetailWithPartialMembersResponse = {
|
||||
provider: string
|
||||
retrieval_model_dict: DatasetRetrievalModelResponse
|
||||
runtime_mode: string | null
|
||||
summary_index_setting: DatasetSummaryIndexSettingResponse
|
||||
summary_index_setting?: DatasetSummaryIndexSettingResponse
|
||||
tags: Array<DatasetTagResponse>
|
||||
total_available_documents: number
|
||||
total_documents: number
|
||||
@@ -251,10 +251,10 @@ export type DatasetDocMetadataResponse = {
|
||||
}
|
||||
|
||||
export type DatasetExternalKnowledgeInfoResponse = {
|
||||
external_knowledge_api_endpoint: string
|
||||
external_knowledge_api_id: string
|
||||
external_knowledge_api_name: string
|
||||
external_knowledge_id: string
|
||||
external_knowledge_api_endpoint?: string | null
|
||||
external_knowledge_api_id?: string | null
|
||||
external_knowledge_api_name?: string | null
|
||||
external_knowledge_id?: string | null
|
||||
}
|
||||
|
||||
export type DatasetExternalRetrievalModelResponse = {
|
||||
@@ -264,14 +264,14 @@ export type DatasetExternalRetrievalModelResponse = {
|
||||
}
|
||||
|
||||
export type DatasetIconInfoResponse = {
|
||||
icon: string | null
|
||||
icon?: string | null
|
||||
icon_background?: string | null
|
||||
icon_type: string | null
|
||||
icon_type?: string | null
|
||||
icon_url?: string | null
|
||||
}
|
||||
|
||||
export type DatasetKeywordSettingResponse = {
|
||||
keyword_weight: number
|
||||
keyword_weight?: number | null
|
||||
}
|
||||
|
||||
export type DatasetListQuery = {
|
||||
@@ -331,7 +331,7 @@ export type DatasetRerankingModelResponse = {
|
||||
export type DatasetRetrievalModelResponse = {
|
||||
reranking_enable: boolean
|
||||
reranking_mode?: string | null
|
||||
reranking_model: DatasetRerankingModelResponse
|
||||
reranking_model?: DatasetRerankingModelResponse
|
||||
score_threshold?: number | null
|
||||
score_threshold_enabled: boolean
|
||||
search_method: string
|
||||
@@ -371,9 +371,9 @@ export type DatasetUpdatePayload = {
|
||||
}
|
||||
|
||||
export type DatasetVectorSettingResponse = {
|
||||
embedding_model_name: string
|
||||
embedding_provider_name: string
|
||||
vector_weight: number
|
||||
embedding_model_name?: string | null
|
||||
embedding_provider_name?: string | null
|
||||
vector_weight?: number | null
|
||||
}
|
||||
|
||||
export type DatasetWeightedScoreResponse = {
|
||||
|
||||
@@ -217,10 +217,10 @@ export const zDatasetDocMetadataResponse = z.object({
|
||||
* DatasetExternalKnowledgeInfoResponse
|
||||
*/
|
||||
export const zDatasetExternalKnowledgeInfoResponse = z.object({
|
||||
external_knowledge_api_endpoint: z.string(),
|
||||
external_knowledge_api_id: z.string(),
|
||||
external_knowledge_api_name: z.string(),
|
||||
external_knowledge_id: z.string(),
|
||||
external_knowledge_api_endpoint: z.string().nullish(),
|
||||
external_knowledge_api_id: z.string().nullish(),
|
||||
external_knowledge_api_name: z.string().nullish(),
|
||||
external_knowledge_id: z.string().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -236,9 +236,9 @@ export const zDatasetExternalRetrievalModelResponse = z.object({
|
||||
* DatasetIconInfoResponse
|
||||
*/
|
||||
export const zDatasetIconInfoResponse = z.object({
|
||||
icon: z.string().nullable(),
|
||||
icon: z.string().nullish(),
|
||||
icon_background: z.string().nullish(),
|
||||
icon_type: z.string().nullable(),
|
||||
icon_type: z.string().nullish(),
|
||||
icon_url: z.string().nullish(),
|
||||
})
|
||||
|
||||
@@ -246,7 +246,7 @@ export const zDatasetIconInfoResponse = z.object({
|
||||
* DatasetKeywordSettingResponse
|
||||
*/
|
||||
export const zDatasetKeywordSettingResponse = z.object({
|
||||
keyword_weight: z.number(),
|
||||
keyword_weight: z.number().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -345,9 +345,9 @@ export const zDatasetTagResponse = z.object({
|
||||
* DatasetVectorSettingResponse
|
||||
*/
|
||||
export const zDatasetVectorSettingResponse = z.object({
|
||||
embedding_model_name: z.string(),
|
||||
embedding_provider_name: z.string(),
|
||||
vector_weight: z.number(),
|
||||
embedding_model_name: z.string().nullish(),
|
||||
embedding_provider_name: z.string().nullish(),
|
||||
vector_weight: z.number().nullish(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -365,7 +365,7 @@ export const zDatasetWeightedScoreResponse = z.object({
|
||||
export const zDatasetRetrievalModelResponse = z.object({
|
||||
reranking_enable: z.boolean(),
|
||||
reranking_mode: z.string().nullish(),
|
||||
reranking_model: zDatasetRerankingModelResponse,
|
||||
reranking_model: zDatasetRerankingModelResponse.optional(),
|
||||
score_threshold: z.number().nullish(),
|
||||
score_threshold_enabled: z.boolean(),
|
||||
search_method: z.string(),
|
||||
@@ -392,9 +392,9 @@ export const zDatasetDetailResponse = z.object({
|
||||
embedding_model: z.string().nullable(),
|
||||
embedding_model_provider: z.string().nullable(),
|
||||
enable_api: z.boolean(),
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse,
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse.optional(),
|
||||
external_retrieval_model: zDatasetExternalRetrievalModelResponse,
|
||||
icon_info: zDatasetIconInfoResponse,
|
||||
icon_info: zDatasetIconInfoResponse.optional(),
|
||||
id: z.string(),
|
||||
indexing_technique: z.string().nullable(),
|
||||
is_multimodal: z.boolean(),
|
||||
@@ -405,7 +405,7 @@ export const zDatasetDetailResponse = z.object({
|
||||
provider: z.string(),
|
||||
retrieval_model_dict: zDatasetRetrievalModelResponse,
|
||||
runtime_mode: z.string().nullable(),
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse,
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse.optional(),
|
||||
tags: z.array(zDatasetTagResponse),
|
||||
total_available_documents: z.int(),
|
||||
total_documents: z.int(),
|
||||
@@ -433,9 +433,9 @@ export const zDatasetDetailWithPartialMembersResponse = z.object({
|
||||
embedding_model: z.string().nullable(),
|
||||
embedding_model_provider: z.string().nullable(),
|
||||
enable_api: z.boolean(),
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse,
|
||||
external_knowledge_info: zDatasetExternalKnowledgeInfoResponse.optional(),
|
||||
external_retrieval_model: zDatasetExternalRetrievalModelResponse,
|
||||
icon_info: zDatasetIconInfoResponse,
|
||||
icon_info: zDatasetIconInfoResponse.optional(),
|
||||
id: z.string(),
|
||||
indexing_technique: z.string().nullable(),
|
||||
is_multimodal: z.boolean(),
|
||||
@@ -447,7 +447,7 @@ export const zDatasetDetailWithPartialMembersResponse = z.object({
|
||||
provider: z.string(),
|
||||
retrieval_model_dict: zDatasetRetrievalModelResponse,
|
||||
runtime_mode: z.string().nullable(),
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse,
|
||||
summary_index_setting: zDatasetSummaryIndexSettingResponse.optional(),
|
||||
tags: z.array(zDatasetTagResponse),
|
||||
total_available_documents: z.int(),
|
||||
total_documents: z.int(),
|
||||
|
||||
Reference in New Issue
Block a user