Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions go/appbuilder/knowledge_base_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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"`
}

Expand Down
23 changes: 22 additions & 1 deletion go/appbuilder/knowledge_base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)
}
Original file line number Diff line number Diff line change
@@ -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() {
Expand All @@ -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<Map<String, Object>> tags;


public String getSource() {
Expand All @@ -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;
}
Expand All @@ -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<Map<String, Object>> getTags() {
return tags;
}
public void setTags(List<Map<String, Object>> 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;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ public class DocumentsDescribeResponse {
private boolean isTruncated;
private String nextMarker;
private Integer maxKeys;
private Integer totalCount;

public DocumentDescribeResponse[] getData() {
return data;
Expand Down Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
21 changes: 15 additions & 6 deletions python/core/console/knowledge_base/data_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")


Expand All @@ -135,6 +143,7 @@ class DescribeDocumentsResponse(BaseModel):
)
nextMarker: str = Field(..., description="下一页起始位置")
maxKeys: int = Field(..., description="本次查询包含的最大结果集数量")
totalCount: int = Field(..., description="总量")
data: list[DescribeDocument] = Field(..., description="文档信息列表")


Expand Down
7 changes: 6 additions & 1 deletion python/tests/test_knowledge_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Loading