Spaces:
Running
Running
from langchain_community.document_loaders import ConfluenceLoader | |
from langchain_community.document_loaders.confluence import ContentFormat | |
from langflow.custom import Component | |
from langflow.io import BoolInput, DropdownInput, IntInput, Output, SecretStrInput, StrInput | |
from langflow.schema import Data | |
class ConfluenceComponent(Component): | |
display_name = "Confluence" | |
description = "Confluence wiki collaboration platform" | |
documentation = "https://python.langchain.com/v0.2/docs/integrations/document_loaders/confluence/" | |
trace_type = "tool" | |
icon = "Confluence" | |
name = "Confluence" | |
inputs = [ | |
StrInput( | |
name="url", | |
display_name="Site URL", | |
required=True, | |
info="The base URL of the Confluence Space. Example: https://<company>.atlassian.net/wiki.", | |
), | |
StrInput( | |
name="username", | |
display_name="Username", | |
required=True, | |
info="Atlassian User E-mail. Example: [email protected]", | |
), | |
SecretStrInput( | |
name="api_key", | |
display_name="API Key", | |
required=True, | |
info="Atlassian Key. Create at: https://id.atlassian.com/manage-profile/security/api-tokens", | |
), | |
StrInput(name="space_key", display_name="Space Key", required=True), | |
BoolInput(name="cloud", display_name="Use Cloud?", required=True, value=True, advanced=True), | |
DropdownInput( | |
name="content_format", | |
display_name="Content Format", | |
options=[ | |
ContentFormat.EDITOR.value, | |
ContentFormat.EXPORT_VIEW.value, | |
ContentFormat.ANONYMOUS_EXPORT_VIEW.value, | |
ContentFormat.STORAGE.value, | |
ContentFormat.VIEW.value, | |
], | |
value=ContentFormat.STORAGE.value, | |
required=True, | |
advanced=True, | |
info="Specify content format, defaults to ContentFormat.STORAGE", | |
), | |
IntInput( | |
name="max_pages", | |
display_name="Max Pages", | |
required=False, | |
value=1000, | |
advanced=True, | |
info="Maximum number of pages to retrieve in total, defaults 1000", | |
), | |
] | |
outputs = [ | |
Output(name="data", display_name="Data", method="load_documents"), | |
] | |
def build_confluence(self) -> ConfluenceLoader: | |
content_format = ContentFormat(self.content_format) | |
return ConfluenceLoader( | |
url=self.url, | |
username=self.username, | |
api_key=self.api_key, | |
cloud=self.cloud, | |
space_key=self.space_key, | |
content_format=content_format, | |
max_pages=self.max_pages, | |
) | |
def load_documents(self) -> list[Data]: | |
confluence = self.build_confluence() | |
documents = confluence.load() | |
data = [Data.from_document(doc) for doc in documents] # Using the from_document method of Data | |
self.status = data | |
return data | |