diff --git a/client/knowledge.go b/client/knowledge.go index f1faaf110..8e7fb8230 100644 --- a/client/knowledge.go +++ b/client/knowledge.go @@ -193,15 +193,18 @@ func (c *Client) CreateKnowledgeFromURL( knowledgeBaseID string, url string, enableMultimodel *bool, + title string, ) (*Knowledge, error) { path := fmt.Sprintf("/api/v1/knowledge-bases/%s/knowledge/url", knowledgeBaseID) reqBody := struct { URL string `json:"url"` EnableMultimodel *bool `json:"enable_multimodel"` + Title string `json:"title"` }{ URL: url, EnableMultimodel: enableMultimodel, + Title: title, } resp, err := c.doRequest(ctx, http.MethodPost, path, reqBody, nil) diff --git a/internal/application/service/knowledge.go b/internal/application/service/knowledge.go index e4f110b3f..2e49b1ec3 100644 --- a/internal/application/service/knowledge.go +++ b/internal/application/service/knowledge.go @@ -347,7 +347,7 @@ func (s *knowledgeService) CreateKnowledgeFromFile(ctx context.Context, // CreateKnowledgeFromURL creates a knowledge entry from a URL source func (s *knowledgeService) CreateKnowledgeFromURL(ctx context.Context, - kbID string, url string, enableMultimodel *bool, + kbID string, url string, enableMultimodel *bool, title string, ) (*types.Knowledge, error) { logger.Info(ctx, "Start creating knowledge from URL") logger.Infof(ctx, "Knowledge base ID: %s, URL: %s", kbID, url) @@ -406,6 +406,7 @@ func (s *knowledgeService) CreateKnowledgeFromURL(ctx context.Context, TenantID: tenantID, KnowledgeBaseID: kbID, Type: "url", + Title: title, Source: url, FileHash: fileHash, ParseStatus: "pending", diff --git a/internal/handler/knowledge.go b/internal/handler/knowledge.go index f2a300d26..2c50cf090 100644 --- a/internal/handler/knowledge.go +++ b/internal/handler/knowledge.go @@ -183,6 +183,7 @@ func (h *KnowledgeHandler) CreateKnowledgeFromURL(c *gin.Context) { var req struct { URL string `json:"url" binding:"required"` EnableMultimodel *bool `json:"enable_multimodel"` + Title string `json:"title"` } if err := c.ShouldBindJSON(&req); err != nil { logger.Error(ctx, "Failed to parse URL request", err) @@ -199,7 +200,7 @@ func (h *KnowledgeHandler) CreateKnowledgeFromURL(c *gin.Context) { ) // Create knowledge entry from the URL - knowledge, err := h.kgService.CreateKnowledgeFromURL(ctx, kbID, req.URL, req.EnableMultimodel) + knowledge, err := h.kgService.CreateKnowledgeFromURL(ctx, kbID, req.URL, req.EnableMultimodel, req.Title) // Check for duplicate knowledge error if err != nil { if h.handleDuplicateKnowledgeError(c, err, knowledge, "url") { diff --git a/internal/types/interfaces/knowledge.go b/internal/types/interfaces/knowledge.go index 893d0866e..6c739c75a 100644 --- a/internal/types/interfaces/knowledge.go +++ b/internal/types/interfaces/knowledge.go @@ -26,6 +26,7 @@ type KnowledgeService interface { kbID string, url string, enableMultimodel *bool, + title string, ) (*types.Knowledge, error) // CreateKnowledgeFromPassage creates knowledge from text passages. CreateKnowledgeFromPassage(ctx context.Context, kbID string, passage []string) (*types.Knowledge, error)