|
|
| 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"""
|
|
|
| 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 {}
|
|
|
|
|
| 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 |