Markdown

O Markdown é uma linguagem de marcação leve que permite formatar texto usando um editor de texto simples.

Este artigo introduz como o LangChain carrega documentos Markdown em formatos de documento que podemos usar posteriormente.

from langchain_community.document_loaders import UnstructuredMarkdownLoader

caminho_markdown = "../../../../../README.md"
carregador = UnstructuredMarkdownLoader(caminho_markdown)

dados = carregador.carregar()

dados
[Documento(page_content="🦜🔗 LangChain\n\n⚡ Construindo aplicativos com LLMs através de composição ⚡\n\nProcurando pela versão JS/TS? Confira o LangChain.js.\n\nSuporte de Produção: Ao levar seus LangChains para produção, adoraríamos oferecer suporte mais abrangente.\nPor favor, preencha este formulário e configuraremos um canal de suporte Slack dedicado.\n\nInstalação Rápida\n\npip install langchain\nou\nconda install langchain -c conda-forge\n\n🤔 O que é isso?\n\nOs modelos de linguagem grandes (LLMs) estão surgindo como uma tecnologia transformadora, permitindo que os desenvolvedores construam aplicativos que anteriormente não conseguiam. No entanto, usar esses LLMs isoladamente muitas vezes é insuficiente para criar um aplicativo verdadeiramente poderoso - o verdadeiro poder vem quando você pode combiná-los com outras fontes de computação ou conhecimento.\n\nEsta biblioteca tem como objetivo auxiliar no desenvolvimento desses tipos de aplicativos. Exemplos comuns desses aplicativos incluem:\n\n📚 Responder perguntas sobre documentos específicos\n\nDocumentação\n\nExemplo de ponta a ponta: Responder perguntas sobre um banco de dados Notion\n\n📬 Chatbots\n\nDocumentação\n\nExemplo de ponta a ponta: Chat-LangChain\n\n🤖 Agents\n\nDocumentação\n\nExemplo de ponta a ponta: GPT+WolframAlpha\n\n📝 Documentação\n\nConsulte aqui para obter a documentação completa sobre:\n\nComeçando (instalação, configuração do ambiente, exemplos simples)\n\nExemplos de Como-Fazer (demos, integrações, funções auxiliares)\n\nReferência (documentação completa da API)\n\nRecursos (explicação em alto nível de conceitos principais)\n\n🚀 No que isso pode ajudar?\n\nHá seis áreas principais para as quais o LangChain é projetado para ajudar.\nEstas são, em ordem crescente de complexidade:\n\n📃 LLMs e Prompts:\n\nIsso inclui gerenciamento de prompts, otimização de prompts, uma interface genérica para todos os LLMs e utilitários comuns para trabalhar com LLMs.\n\n🔗 Chains:\n\nAs chains vão além de uma única chamada de LLM e envolvem sequências de chamadas (seja para um LLM ou uma utilidade diferente). LangChain fornece uma interface padrão para chains, muitas integrações com outras ferramentas e chains de ponta a ponta para aplicativos comuns.\n\n🚚 Geração Aumentada de Dados:\n\nA Geração Aumentada de Dados envolve tipos específicos de chains que interagem primeiro com uma fonte de dados externa para buscar dados para uso na etapa de geração. Exemplos incluem sumarização de peças longas de texto e perguntas/respostas sobre fontes de dados específicos.\n\n🤖 Agents:\n\nAgents envolvem um LLM tomando decisões sobre quais ações tomar, realizando essa ação, vendo uma observação e repetindo isso até concluído. LangChain fornece uma interface padrão para agents, uma seleção de agents para escolher e exemplos de agents de ponta a ponta.\n\n🧠 Memória:\n\nMemória refere-se a persistir o estado entre chamadas de uma chain/agent. LangChain fornece uma interface padrão para memória, uma coleção de implementações de memória e exemplos de chains/agents que usam memória.\n\n📐 Avaliação:\n\n[BETA] Modelos generativos são notoriamente difíceis de avaliar com métricas tradicionais. Uma nova forma de avaliá-los é usando modelos de linguagem para fazer a avaliação. LangChain fornece alguns prompts/chains para ajudar nisso.\n\nPara mais informações sobre esses conceitos, consulte nossa documentação completa.\n\n📁 Contribuindo\n\nComo um projeto de código aberto em um campo em rápida evolução, somos extremamente abertos a contribuições, seja na forma de um novo recurso, infraestrutura melhorada ou melhor documentação.\n\nPara informações detalhadas sobre como contribuir, consulte aqui.", metadata={'source': '../../../../../README.md'})]

Nos bastidores, o Unstructured cria diferentes "elementos" para blocos de texto diferentes. Por padrão, os combinamos juntos, mas você pode facilmente preservar essa separação especificando mode="elements".

loader = UnstructuredMarkdownLoader(markdown_path, mode="elements")
data = loader.load()
data[0]
Document(page_content='ð\x9f¦\x9cï¸\x8fð\x9f”\x97 LangChain', metadata={'source': '../../../../../README.md', 'page_number': 1, 'category': 'Title'})