diff --git a/go/appbuilder/knowledge_base_data.go b/go/appbuilder/knowledge_base_data.go index cdfbd4385..865d6a951 100644 --- a/go/appbuilder/knowledge_base_data.go +++ b/go/appbuilder/knowledge_base_data.go @@ -262,21 +262,27 @@ type DescribeDocumentsRequest struct { } type DescribeDocumentResponse struct { - ID string `json:"id"` - Name string `json:"name"` - CreatedAt string `json:"createdAt"` - DisplayStatus string `json:"displayStatus"` - WordCount int64 `json:"wordCount"` - Enabled bool `json:"enabled"` - Meta DescribeDocumentMeta `json:"meta"` + DocumentId string `json:"documentId"` + Name string `json:"name"` + CreatedAt string `json:"createdAt"` + Status string `json:"status"` + Meta DescribeDocumentMeta `json:"meta"` + EnhanceTaskStatus EnhanceStatus `json:"enhanceTaskStatus,omitempty"` + GraphTaskStatus EnhanceStatus `json:"graphTaskStatus,omitempty"` +} + +type EnhanceStatus struct { + Status string `json:"status"` + Message string `json:"message"` } type DescribeDocumentMeta struct { - Source string `json:"source"` - FileID string `json:"fileId"` - URL string `json:"url"` - MimeType string `json:"mime_type"` - FileSize int64 `json:"file_size"` + Source string `json:"source"` + WordCount int64 `json:"wordCount"` + MimeType string `json:"mimeType"` + FileSize int64 `json:"fileSize"` + URL string `json:"url"` + Tags []map[string]any `json:"tags"` } type DescribeDocumentsResponse struct { @@ -285,6 +291,7 @@ type DescribeDocumentsResponse struct { IsTruncated bool `json:"isTruncated"` NextMarker string `json:"nextMarker"` MaxKeys int `json:"maxKeys"` + TotalCount int `json:"totalCount"` RequestID string `json:"requestId"` } diff --git a/go/appbuilder/knowledge_base_test.go b/go/appbuilder/knowledge_base_test.go index 571d04a96..ff4baa0b4 100644 --- a/go/appbuilder/knowledge_base_test.go +++ b/go/appbuilder/knowledge_base_test.go @@ -1452,7 +1452,7 @@ func TestChunk(t *testing.T) { } log("Documents retrieved: %+v", documentsRes) - documentID := documentsRes.Data[0].ID + documentID := documentsRes.Data[0].DocumentId // 创建切片 chunkID, err := client.CreateChunk(CreateChunkRequest{ KnowledgeBaseID: knowledgeBaseID, @@ -1609,3 +1609,24 @@ func TestQueryKnowledgeBase(t *testing.T) { t.Logf("%s========== OK: %s ==========%s", "\033[32m", t.Name(), "\033[0m") } } + +func TestDescribeDocuments(t *testing.T) { + config, err := NewSDKConfig("", "") + if err != nil { + t.Logf("%s========== FAIL: %s ==========%s", "\033[31m", t.Name(), "\033[0m") + t.Fatalf("new http client config failed: %v", err) + } + knowledgeBaseID := "b1ddd469-c93d-496a-8e4f-51e02c2ca42f" + client, err := NewKnowledgeBaseWithKnowledgeBaseID(knowledgeBaseID, config) + if err != nil { + t.Logf("%s========== FAIL: %s ==========%s", "\033[31m", t.Name(), "\033[0m") + t.Fatalf("new Knowledge base instance failed") + } + documentsRes, err := client.DescribeDocuments(DescribeDocumentsRequest{KnowledgeBaseID: knowledgeBaseID}) + if err != nil { + t.Logf("%s========== FAIL: %s ==========%s", "\033[31m", t.Name(), "\033[0m") + t.Fatalf("describe documents failed: %v", err) + } + + t.Logf("Documents retrieved: %+v", documentsRes) +} diff --git a/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentDescribeResponse.java b/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentDescribeResponse.java index 780c540f7..d77ed29ff 100644 --- a/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentDescribeResponse.java +++ b/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentDescribeResponse.java @@ -1,20 +1,23 @@ package com.baidubce.appbuilder.model.knowledgebase; +import java.util.List; +import java.util.Map; + public class DocumentDescribeResponse { - private String id; + private String documentId; private String name; private String createdAt; - private String displayStatus; - private Integer wordCount; - private Boolean enabled; + private String status; private Meta meta; + private EnhanceStatus enhanceStatus; + private EnhanceStatus graphTaskStatus; public String getId() { - return id; + return documentId; } public void setId(String id) { - this.id = id; + this.documentId = id; } public String getName() { @@ -34,43 +37,44 @@ public void setCreatedAt(String createdAt) { } public String getDisplayStatus() { - return displayStatus; + return status; } - public void setDisplayStatus(String displayStatus) { - this.displayStatus = displayStatus; + public void setStatus(String status) { + this.status = status; } - public Integer getWordCount() { - return wordCount; + public Meta getMeta() { + return meta; } - public void setWordCount(Integer wordCount) { - this.wordCount = wordCount; + public void setMeta(Meta meta) { + this.meta = meta; } - public Boolean getEnabled() { - return enabled; + public EnhanceStatus getEnhanceStatus() { + return enhanceStatus; } - public void setEnabled(Boolean enabled) { - this.enabled = enabled; + public void setEnhanceStatus(EnhanceStatus enhanceStatus) { + this.enhanceStatus = enhanceStatus; } - public Meta getMeta() { - return meta; + public EnhanceStatus getGraphTaskStatus() { + return graphTaskStatus; } - public void setMeta(Meta meta) { - this.meta = meta; + public void setGraphTaskStatus(EnhanceStatus graphTaskStatus) { + this.graphTaskStatus = graphTaskStatus; } public static class Meta { private String source; - private String fileId; + private Integer wordCount; + private String mimeType; private String url; - private String mime_type; - private Integer file_size; + private Integer fileSize; + private List> tags; public String getSource() { @@ -81,14 +85,6 @@ public void setSource(String source) { this.source = source; } - public String getFileId() { - return fileId; - } - - public void setFileId(String fileId) { - this.fileId = fileId; - } - public String getUrl() { return url; } @@ -98,19 +94,52 @@ public void setUrl(String url) { } public String getMimeType() { - return mime_type; + return mimeType; } - public void setMimeType(String mime_type) { - this.mime_type = mime_type; + public void setMimeType(String mimeType) { + this.mimeType = mimeType; } public Integer getFileSize() { - return file_size; + return fileSize; + } + + public void setFileSize(Integer fileSize) { + this.fileSize = fileSize; + } + public Integer getWordCount() { + return wordCount; + } + public void setWordCount(Integer wordCount) { + this.wordCount = wordCount; + } + public List> getTags() { + return tags; + } + public void setTags(List> tags) { + this.tags = tags; + } + } + + public static class EnhanceStatus { + private String status; + private String message; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMessage() { + return message; } - public void setFileSize(Integer file_size) { - this.file_size = file_size; + public void setMessage(String message) { + this.message = message; } } } diff --git a/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentsDescribeResponse.java b/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentsDescribeResponse.java index 3f210f1f5..4ee539e00 100644 --- a/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentsDescribeResponse.java +++ b/java/src/main/java/com/baidubce/appbuilder/model/knowledgebase/DocumentsDescribeResponse.java @@ -6,6 +6,7 @@ public class DocumentsDescribeResponse { private boolean isTruncated; private String nextMarker; private Integer maxKeys; + private Integer totalCount; public DocumentDescribeResponse[] getData() { return data; @@ -46,4 +47,10 @@ public Integer getMaxKeys() { public void setMaxKeys(Integer maxKeys) { this.maxKeys = maxKeys; } + public Integer getTotalCount() { + return totalCount; + } + public void setTotalCount(Integer totalCount) { + this.totalCount = totalCount; + } } diff --git a/java/src/test/java/com/baidubce/appbuilder/KnowledgebaseTest.java b/java/src/test/java/com/baidubce/appbuilder/KnowledgebaseTest.java index 59046d79c..bc566cbb2 100644 --- a/java/src/test/java/com/baidubce/appbuilder/KnowledgebaseTest.java +++ b/java/src/test/java/com/baidubce/appbuilder/KnowledgebaseTest.java @@ -209,4 +209,13 @@ public void testQueryKnowledgeBaseV2() throws IOException, AppBuilderServerExcep request.getKnowledgebase_ids(), request.getMetadata_filters(), request.getPipeline_config()); assertNotNull(response.getChunks().get(0).getChunk_id()); } + @Test + public void testDescribeDocuments() throws IOException, AppBuilderServerException { + String knowledgeBaseID = "b1ddd469-c93d-496a-8e4f-51e02c2ca42f"; + Knowledgebase knowledgebase = new Knowledgebase(System.getenv("APPBUILDER_TOKEN")); + // 获取文档列表 + DocumentsDescribeRequest request = new DocumentsDescribeRequest(knowledgeBaseID, null, 10); + DocumentsDescribeResponse describeResponses = knowledgebase.describeDocuments(request); + assertNotNull(describeResponses.getData()[0].getId()); + } } diff --git a/python/core/console/knowledge_base/data_class.py b/python/core/console/knowledge_base/data_class.py index fd155e30d..5057817b6 100644 --- a/python/core/console/knowledge_base/data_class.py +++ b/python/core/console/knowledge_base/data_class.py @@ -111,19 +111,27 @@ class DescribeDocumentsRequest(BaseModel): class DescribeDocumentMeata(BaseModel): - source: Optional[str] = Field(None, description="文档来源") - fileId: Optional[str] = Field(None, description="文档对应的文件ID") + source: Optional[str] = Field(None, description="文档来源。upload_file:文本文档数据 datatable:表格型知识数据 url:网页数据") + wordCount: Optional[int] = Field(None, description="文档字数") + mimeType: Optional[str] = Field(None, description="文件类型,目前支持doc/txt/docx/pdf/ppt/pptx/xlsx/xls/csv/json这几种文件类型。如果是通过url方式导入的文档,该值为url") + fileSize: Optional[int] = Field(None, description="文件大小,单位bytes") + url:Optional[str] = Field(None, description="原文件下载链接") + tags: Optional[list[dict]] = Field(None, description="文档标签列表") + +class EnhanceStatus(BaseModel): + status: Optional[str] = Field(None, description="知识增强状态") + message: Optional[str] = Field(None, description="增强任务状态对应的提示信息") class DescribeDocument(BaseModel): - id: str = Field(..., description="文档ID") + documentId: str = Field(..., description="文档ID") name: str = Field(..., description="文档名称") createdAt: str = Field(..., description="文档创建时间") - wordCount: int = Field(..., description="文档字数") - enabled: bool = Field(True, description="文档是否可用") - displayStatus: str = Field( + status: str = Field( ..., description="文档状态。available:可用,queuing:排队中,notConfigured:数据待配置,parsing:解析中,indexing:处理中,parseError:解析失败,error:处理失败, retrainingSegmentUnusable:重建切片中,切片不可用, retrainErrSegmentUsable:重建切片错误,旧切片可用", ) + enhanceTaskStatus:Optional[EnhanceStatus] =Field(None, description="知识增强状态") + graphTaskStatus:Optional[EnhanceStatus] =Field(None, description="知识增强状态") meta: Optional[DescribeDocumentMeata] = Field(..., description="文档元信息,包括source、fileId") @@ -135,6 +143,7 @@ class DescribeDocumentsResponse(BaseModel): ) nextMarker: str = Field(..., description="下一页起始位置") maxKeys: int = Field(..., description="本次查询包含的最大结果集数量") + totalCount: int = Field(..., description="总量") data: list[DescribeDocument] = Field(..., description="文档信息列表") diff --git a/python/tests/test_knowledge_base.py b/python/tests/test_knowledge_base.py index 02db2dde2..b0bf4f94a 100644 --- a/python/tests/test_knowledge_base.py +++ b/python/tests/test_knowledge_base.py @@ -133,7 +133,7 @@ def test_create_knowledge_base(self): knowledge.get_documents_list( knowledge_base_id=knowledge_base_id) list_res = knowledge.describe_documents(knowledge_base_id=knowledge_base_id) - document_id = list_res.data[-1].id + document_id = list_res.data[-1].documentId knowledge.describe_chunks(document_id, knowledgebase_id=knowledge_base_id, keyword="test") resp = knowledge.create_chunk(document_id, content="test", knowledgebase_id=knowledge_base_id) chunk_id = resp.id @@ -191,6 +191,11 @@ def test_query_knowledge_base(self): chunk_id = res.chunks[0].chunk_id self.assertIsNotNone(chunk_id) + def test_describe_documents(self): + knowledge = appbuilder.KnowledgeBase() + appbuilder.logger.setLoglevel("DEBUG") + documents = knowledge.describe_documents(knowledge_base_id="b1ddd469-c93d-496a-8e4f-51e02c2ca42f") + self.assertEqual(len(documents.data), 10) if __name__ == "__main__": unittest.main()