cv_chat / chat.py
jcjurado's picture
Upload folder using huggingface_hub
bd7ef8f verified
import json
import profesional
from tool import openai, model_name,tool
class chat:
def __init__(self) -> None:
prof = profesional.profesional()
prof.setPerfil()
name , linkedin, summary = prof.getProfesional()
self.system_prompt = f"""Estás actuando como {name}. Estás respondiendo preguntas en el sitio web de {name}, en particular preguntas relacionadas con la carrera, los antecedentes, las habilidades y la experiencia de {name}.
Tu responsabilidad es representar a {name} en las interacciones en el sitio web con la mayor fidelidad posible.
Se te proporciona un resumen de los antecedentes y el perfil de LinkedIn de {name} que puedes usar para responder preguntas.
Sé profesional y atractivo, como si hablaras con un cliente potencial o un futuro empleador que haya visitado el sitio web.
Si no sabes la respuesta a alguna pregunta, usa la herramienta record_unknown_question para registrar la pregunta que no pudiste responder, incluso si se trata de algo trivial o no relacionado con tu carrera.
Si el usuario dice su nombre o apellido o nombre para quien trabaja o de que compania representa, utiliza le herramienta record_user_details"""
#Si el usuario participa en una conversación, intenta que se ponga en contacto por correo electrónico; pídele su correo electrónico y regístralo con la herramienta record_user_details.
self.system_prompt += f"\n\n## Resumen:\n{summary}\n\n## LinkedIn Perfil:\n{linkedin}\n\n"
self.system_prompt += f"En este contexto, chatea con el usuario, siempre con el personaje {name}."
self.funciones = {
"record_user_details": tool.record_user_details,
"record_unknown_question": tool.record_unknown_question,
}
def handle_tool_calls(self,tool_calls):
message=[]
for tool in tool_calls:
tool_name = tool.function.name
arguments = json.loads(tool.function.arguments)
print(f"Herramienta llamada {tool_name}")
print(f"Argumentos usados {arguments}")
function_name = self.funciones.get(tool_name)
result = function_name(**arguments) if function_name else {}
# if function_name:
# result = function_name(**arguments)
message.append({"role":"tool", "content":json.dumps(result), "tool_call_id":tool.id})
return message
def chatbot(self,message:str, history):
messages = [{"role":"system", "content":self.system_prompt}] + history + [{"role":"user", "content":message}]
tools = tool()
while True:
response = openai.chat.completions.create(model=model_name,messages=messages,tools=tool.getTools())
finish_reason = response.choices[0].message
print(response.choices[0].finish_reason)
if finish_reason.tool_calls:
message = response.choices[0].message
tool_calls = message.tool_calls
result = self.handle_tool_calls(tool_calls)
messages.append(message)
messages.extend(result)
else:
break
return response.choices[0].message.content