Spaces:
Runtime error
Runtime error
| { | |
| "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 | |
| } | |