rag_chat / tool.py
jcjurado's picture
Upload folder using huggingface_hub
4d44f79 verified
import os
import requests
from pydantic import BaseModel, Field
from openai import pydantic_function_tool, OpenAI
from dotenv import load_dotenv
load_dotenv(override=True)
openai = OpenAI(api_key=os.getenv("GOOGLE_API_KEY"),base_url="https://generativelanguage.googleapis.com/v1beta/openai/")
model_name = "gemini-2.5-flash"
pushover_user = os.getenv("PUSHOVER_USER")
pushover_token = os.getenv("PUSHOVER_TOKEN")
pushover_url = "https://api.pushover.net/1/messages.json"
class recordUserDetails(BaseModel):
nombre:str = Field(description="Nombre de la persona o usuario que esta chateando.")
empresa:str = Field(description="Nombre de la empresa o compania para la cual el usuario trabaja o representa.")
class recordUnknownQuestion(BaseModel):
question: str = Field(description="La pregunta que no se pudo responder")
class tool:
@staticmethod
def push(message:str):
print(f"Mensaje a enviar por push: {message}")
payload = {"user":pushover_user, "token":pushover_token, "message":message}
requests.post(pushover_url,data=payload)
@staticmethod
def record_user_details(nombre, empresa="Nombre no proporcionado"):
if not empresa or len(empresa.strip()) < 2:
empresa = "Nombre no proporcionado"
tool.push(F"Existe alguien que esta chateando. Su nombre es {nombre}, empresa {empresa}")
else:
tool.push(F"Existe alguien que esta chateando. Su nombre es {nombre}")
return {"recorded":"ok"}
@staticmethod
def record_unknown_question(question):
tool.push(f"Registrando pregunta no respondida: {question}")
return {"recorded":"ok"}
@staticmethod
def getTools():
tools = [pydantic_function_tool(
model=recordUserDetails,
name="record_user_details",
description="Utilice esta herramienta cuando el usuario especifico su nombre o apellido."),
pydantic_function_tool(
model=recordUnknownQuestion,
name="record_unknown_question")
]
return tools