DaniloAB18's picture
Rename chat_interview.py to app.py
cdc5999 verified
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\knobb\\OneDrive\\Documents\\ING.SISTEMAS\\SEMESTRE 8\\OPTATIVA II\\API's\\.venv\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
}
],
"source": [
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\knobb\\OneDrive\\Documents\\ING.SISTEMAS\\SEMESTRE 8\\OPTATIVA II\\API's\\.venv\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Running on local URL: http://127.0.0.1:7860\n",
"\n",
"Could not create share link. Please check your internet connection or our status page: https://status.gradio.app.\n"
]
},
{
"data": {
"text/html": [
"<div><iframe src=\"http://127.0.0.1:7860/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": []
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import gradio as gr\n",
"from openai import OpenAI\n",
"client = OpenAI(api_key='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')\n",
"questions = \"\"\"\n",
" 1. Cuéntame sobre ti.,\n",
" 2. ¿Cómo conociste y qué sabes sobre nuestra empresa?,\n",
" 3. ¿Qué te motivó a postularte para realizar tus practicas en nuestra empresa?,\n",
" 4. ¿Qué habilidades o conocimientos consideras que puedes aportar a nuestro equipo?,\n",
" 5. ¿Cuáles son tus principales fortalezas?,\n",
" 6. ¿Cuáles son tus principales debilidades?,\n",
" 7. ¿Puedes hablarme sobre un proyecto académico o experiencia laboral relevante que hayas tenido?,\n",
" 8. ¿Cómo te enfrentas a los desafíos o situaciones difíciles?,\n",
" 9. ¿Qué esperas lograr durante tus prácticas profesionales?,\n",
" 10. ¿Cómo te defines en términos de trabajo en equipo y colaboración?,\n",
" 11. ¿Cómo manejas el trabajo bajo presión o los plazos ajustados?,\n",
" 12. ¿Has tenido experiencia liderando equipos o proyectos?,\n",
" 13. ¿Cómo manejas los conflictos en el trabajo?,\n",
" 14. ¿Qué te gustaría aprender o desarrollar durante tus prácticas con nosotros?,\n",
" 15. ¿Dónde te ves profesionalmente en los próximos 5 años?,\n",
" 16. ¿Cómo buscas seguir desarrollándote y mejorando en tu carrera?,\n",
" 17. ¿Cómo te mantienes actualizado en tu campo de estudio o industria?,\n",
" 18. ¿Cómo te adaptas a nuevos entornos o situaciones desconocidas?,\n",
" 19. ¿Qué te diferencia de otros candidatos que están aplicando para estas prácticas?\n",
" \"\"\" \n",
" \n",
" \n",
"def get_completion_from_messages(messages, temperature=0, tokens=70 ,model=\"gpt-3.5-turbo\"):\n",
" response = client.chat.completions.create(\n",
" model=model,\n",
" messages=messages,\n",
" temperature=temperature,\n",
" max_tokens= tokens\n",
" )\n",
" return response.choices[0].message.content\n",
"\n",
"def chat(answer, interview, job, temperature, tokens):\n",
"\n",
" conversation = [{'role':'system', 'content': \n",
" f\"\"\"\n",
" Eres un entrevistador de recursos humanos, para solicitantes recién egresados/graduados, para realizar sus prácticas profesionales\n",
" del puesto {job}, y harás las siguientes preguntas en orden: '{questions}'\n",
" \n",
" Primero mostraras un saludo preguntando si el usuario está listo para iniciar la entrevista.\n",
" Con la respuesta que te del usuario le harás la pregunta.\n",
" \n",
" Basándote en la respuesta a la pregunta, brindaras una retroalimentación constructiva, precisa, resaltando\n",
" los partes que le faltan por mencionar y mejorar al usuario, para que así\n",
" pueda mejorar su respuesta para futuras entrevistas y al final de la retroalimentación, preguntarás \n",
" que, si tiene más dudas, de ser así responderás las dudas y en cada respuesta preguntarás \n",
" si está listo para la siguiente pregunta, de ser que si mostrarás la siguiente pregunta.\n",
" \n",
" Reglas que seguir:\n",
" - Sigue y respeta el orden de las preguntas.\n",
" - Resalta las partes que sean buenas respuestas del usuario.\n",
" - Si el usuario ingresa texto en inglés, continua en inglés.\n",
" - No darás respuesta si el usuario ingresa información que no tiene que ver con la entrevista.\n",
" - Al finalizar la entrevista indicaras una retroalimentación general.\n",
"\n",
" \"\"\"\n",
" }]\n",
" \n",
" for user, assistant in interview:\n",
" conversation.append({\"role\": \"user\", \"content\": user})\n",
" conversation.append({\"role\": \"assistant\", \"content\": assistant})\n",
" \n",
" conversation.append({\"role\": \"user\", \"content\": answer})\n",
"\n",
" \n",
" response = get_completion_from_messages(conversation, temperature, tokens)\n",
" \n",
" print(temperature)\n",
" return response\n",
"\n",
"job = gr.Textbox(label=\"Ingresa el puesto:\")\n",
"temperature = gr.Slider(label=\"Elige la creatividad de respuestas del modelo.\", minimum=0, maximum=1, step=.1)\n",
"tokens = gr.Slider(label=\"Elige la cantidad de palabras de respuestas del modelo.\", minimum=70, maximum=500, step=10)\n",
"\n",
"# Crear un tema personalizado\n",
"theme = gr.Theme(\n",
" primary_hue=\"gray\",\n",
" # secondary_hue=\"black\",\n",
" # neutral_hue=\"red\",\n",
" text_size=\"lg\",\n",
" # # spacing_size=\"md\",\n",
" radius_size=\"sm\",\n",
" font_mono=(\"Courier New\", \"monospace\")\n",
"\n",
")\n",
"\n",
"iface = gr.ChatInterface(\n",
" fn=chat,\n",
" title=\"Preparación para entrevistas laborales.\",\n",
" additional_inputs=[job, temperature, tokens],\n",
" description=\"\"\"\n",
" 1. Primero ingresarás el tipo de puesto en el campo de abajo \"Additional Inputs\".\\n\n",
" 2. Responde a las preguntas de la forma más completa posible, para obtener mejor retroalimentación.\\n\n",
" 3. Inicia la entrevista mandando un saludo.\n",
" \"\"\",\n",
" textbox=gr.Textbox(placeholder=\"Escribir respuesta..\", container=False, scale=5),\n",
" submit_btn=\"Enviar respuesta\",\n",
" clear_btn =\"Borrar conversación\",\n",
" theme=theme,\n",
" \n",
" )\n",
"iface.launch(share=True)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}