JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

funções | JustPaste.app
about 1 month ago0 views
👨‍💻Programming

funções

from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableLambda

def montar_contexto(resultados: List[Tuple[Document, float]]) -> str:
    partes = []

    for i, (doc, score) in enumerate(resultados, start=1):
        source = doc.metadata.get("source", "desconhecido")
        page = doc.metadata.get("page", "desconhecida")
        trecho = doc.page_content.strip()

        partes.append(
            f"[{i}] source={source} | page={page} | score={score:.4f}\n{trecho}"
        )

    return "\n\n".join(partes)

def montar_fontes(resultados: List[Tuple[Document, float]]):
    fontes = []
    for i, (doc, score) in enumerate(resultados, start=1):
        fontes.append(
            {
                "id": i,
                "source": doc.metadata.get("source", "desconhecido"),
                "page": doc.metadata.get("page", "desconhecida"),
                "score": round(float(score), 4),
            }
        )
    return fontes

def recuperar_contexto_e_fontes(entrada: dict) -> dict:
    pergunta = entrada["question"]
    k = int(entrada.get("k", 4))
    resultados = vectorstore.similarity_search_with_relevance_scores(pergunta, k=k)

    return {
        "question": pergunta,
        "context": montar_contexto(resultados),
        "fontes": montar_fontes(resultados),
    }
← Back to timeline