File size: 1,154 Bytes
646085c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from fastapi import APIRouter
from langchain.globals import set_verbose
from controller.question import Question
from model.model_ai import ModelAI
from tools.duckduckgo import search
from tools.time import time

set_verbose(True)  # Mensajes de depuración desactivados

router = APIRouter(
    prefix="/IA",
    tags=["Ask Agent"],
    responses={404: {"description": "No encontrado"}},
)
model = ModelAI()
# Se añade las herramientas de tiempo y búsqueda al agente
tools = [time, search]
# esto incluye el uso de llm + memoria + herramientas
agent_executor = model.agent_executer(tools)


@router.get("/ask")
def ask_question():
    """Devuelve el formato de pregunta esperado."""
    return {"input": "Pregunta"}


@router.post("/ask")
async def ask_question(question: Question):
    """Recibe una pregunta y devuelve una respuesta del agente ejecutor."""
    try:
        # Usamos ainvoke para realizar la llamada asíncrona
        respuesta = await agent_executor.ainvoke({"input": question.input})
        return {"respuesta": respuesta["output"]}
    except Exception as e:
        return {"error": str(e)}