Views
No views yet
async def document_query(document_id: str, query: str):
"""
Busca documentos na base de dados filtrando por um documento específico.
Args:
document_id: O ID do documento a ser buscado.
query: A query a ser realizada dentro do documento especificado.
Returns:
Uma lista de documentos relacionados à query dentro do documento especificado.
"""
resultado = await sistema_rag.document_query(document_id, query, 3)
resultado = [doc.__dict__ for doc in resultado]
for i in range(len(resultado)):
resultado[i].pop('id')
resultado[i].get('metadata', {}).pop('full_path', None)
resultado[i].get('metadata', {}).pop('categoria_reasoning', None)
resultado[i].get('metadata', {}).pop('categoria', None)
resultado[i].get('metadata', {}).pop('subcategoria', None)
resultado[i].get('metadata', {}).pop('resumo', None)
return resultado
async def search_document(query: str):
"""
Retorna os documentos mais relevantes para uma query.
Args:
query: A query a ser realizada.
Returns:
Uma lista de documentos relacionados à query.
"""
resultado = await sistema_rag.perguntar_async(query, 10)
documentos = {}
for result in resultado:
documentos[ result['metadata']['filename'] ] = {"resumo": result['metadata']['resumo'],
"categoria": result['metadata']['categoria'],
"subcategoria": result['metadata']['subcategoria'],
"document_id": result['metadata']['filename'],
}
return list(documentos.values())
for match in re.finditer("<\\|tool_call>(.*?)<tool_call\\|>", assistant_message): ## encontra as tools
tool = self.model_processor.parse_response(match.group())
result_tools += tool.get('tool_calls', [] )
resultados_tools = await self.retriever.run_tools(result_tools)
for name, value in resultados_tools.items():
observation_text += """<|tool_response>""" if observation_text.endswith("<tool_response|>") else ""
observation_text += f"""response:{name}{{value:<|"|>{value}<|"|>}}<tool_response|>"""