MCPcopy
hub / github.com/Tencent/WeKnora / CreateKnowledgeFromFile

Method CreateKnowledgeFromFile

client/knowledge.go:108–217  ·  view source on GitHub ↗

CreateKnowledgeFromFile creates a knowledge entry from a local file path Parameters: - knowledgeBaseID: The ID of the knowledge base - filePath: The local file path - metadata: Optional metadata for the knowledge entry - enableMultimodel: Optional flag to enable multimodal processing - customFileNam

(ctx context.Context,
	knowledgeBaseID string, filePath string, metadata map[string]string, enableMultimodel *bool, customFileName string, channel string,
	processConfig *KnowledgeProcessOverrides,
)

Source from the content-addressed store, hash-verified

106// - channel: Optional ingestion channel (e.g. "web", "api", "wechat"); empty defaults to "web"
107// - processConfig: Optional parse config overrides (serialized as process_config form field)
108func (c *Client) CreateKnowledgeFromFile(ctx context.Context,
109 knowledgeBaseID string, filePath string, metadata map[string]string, enableMultimodel *bool, customFileName string, channel string,
110 processConfig *KnowledgeProcessOverrides,
111) (*Knowledge, error) {
112 // Open the local file
113 file, err := os.Open(filePath)
114 if err != nil {
115 return nil, fmt.Errorf("failed to open file: %w", err)
116 }
117 defer file.Close()
118
119 // Get file information
120 fileInfo, err := file.Stat()
121 if err != nil {
122 return nil, fmt.Errorf("failed to get file information: %w", err)
123 }
124
125 // Create the HTTP request
126 path := fmt.Sprintf("/api/v1/knowledge-bases/%s/knowledge/file", knowledgeBaseID)
127 req, err := http.NewRequestWithContext(ctx, http.MethodPost, c.baseURL+path, nil)
128 if err != nil {
129 return nil, fmt.Errorf("failed to create request: %w", err)
130 }
131
132 // Create a multipart form writer
133 body := &bytes.Buffer{}
134 writer := multipart.NewWriter(body)
135 part, err := writer.CreateFormFile("file", fileInfo.Name())
136 if err != nil {
137 return nil, fmt.Errorf("failed to create form file: %w", err)
138 }
139
140 // Copy file contents
141 _, err = io.Copy(part, file)
142 if err != nil {
143 return nil, fmt.Errorf("failed to copy file content: %w", err)
144 }
145
146 // Add enable_multimodel field
147 if enableMultimodel != nil {
148 if err := writer.WriteField("enable_multimodel", strconv.FormatBool(*enableMultimodel)); err != nil {
149 return nil, fmt.Errorf("failed to write enable_multimodel field: %w", err)
150 }
151 }
152
153 // Add metadata to the request if provided
154 if metadata != nil {
155 metadataBytes, err := json.Marshal(metadata)
156 if err != nil {
157 return nil, fmt.Errorf("failed to serialize metadata: %w", err)
158 }
159 if err := writer.WriteField("metadata", string(metadataBytes)); err != nil {
160 return nil, fmt.Errorf("failed to write metadata field: %w", err)
161 }
162 }
163
164 // Add custom file name if provided
165 if customFileName != "" {

Callers 1

ExampleUsageFunction · 0.95

Calls 5

applyAuthHeadersMethod · 0.95
parseResponseFunction · 0.85
NameMethod · 0.65
SetMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected